Как в одном скетче объявить два дисплея ТМ1637?

СергейСергеевич

✩✩✩✩✩✩✩
12 Авг 2018
2
0
вот такой скетч:
#include "max6675.h"
#include <TM1637.h>
int thermoDO1 = 2; // SO
int thermoCS1 = 3;//CS
int thermoCLK1 = 4; // SCK
int thermoDO2 = 8; // SO
int thermoCS2 = 9;//CS
int thermoCLK2 = 10; // SCK
#define CLK1 6
#define DIO1 7
#define CLK2 11
#define DIO2 12
TM1637 tm1637 (6,7);//создаем экземпляр объекта типа «TM1637», с которым будем далее работать и задаем пины.
TM1637 tm1637 (11,12);
MAX6675 thermocouple1(thermoCLK1, thermoCS1, thermoDO1);
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2);
int temper1;
int temper2;

void setup() {
Serial.begin(9600);
tm1637.init();// инициализация библиотеки «TM1637.h»
tm1637.set(4);//установка яркости




delay(2000);//делаем задержку что бы наши чипы начали стабильно работать
}

void loop() {



tm1637.point(POINT_OFF);//включаем точку, что бы разделить десятичные
temper1 = thermocouple1.readCelsius()*1 ;// смещаем делитель на 2 знака
temper2 = thermocouple2.readCelsius()*1 ;
tm1637.display(temper1);//выводим показания дачика на индикатор
delay(1000);// задержка 1с
tm1637.display(temper2);
delay(1000);// задержка 1с
}
и что в итоге, на один дисплей поочередно приходят показания, а второй даже прописать не даёт.... я в этом деле новенький, подскажите плиз.
 

BoronnikovAI

✩✩✩✩✩✩✩
3 Авг 2018
15
8
Ты оба экрана запихнуты под одинаковое название. У тебя 2 строки друг за другом идут:
C++:
TM1637 tm1637 (6,7);//создаем экземпляр объекта типа «TM1637», с которым будем далее работать и задаем пины.
TM1637 tm1637 (11,12);
Вообще странно почему компилятор ошибку не выдал. Просто ты сначала создаёшь экземпляр объекта с параметрами (6,7), а затем просто пересоздаёшь его с параметрами (11,12), стирая старые данные. Потому он у тебя на один экран всё и выводит.
Чтобы решить проблему переименуй их по разному и вызывай в соответствии с необходимостью выбора экрана.
Например первый назови LCD1, а второй LCD2. И когда нужно на первый выводи
C++:
LCD1.display(temper1); 
LCD2.display(temper2);
Так же не забудь их проинициализировать в Start(); через
C++:
LCD1.init();
LCD2.init();
 

СергейСергеевич

✩✩✩✩✩✩✩
12 Авг 2018
2
0
Я, безумно благодарен за быстрый ответ!!!! Все разобрался, что маленькими буквами написано было название объекта, сделал два имени все пошло, еще раз спасибо!!!!!