2 дисплея на одной Arduino UNO R3.
- Войдите на сайт для отправки комментариев
Пнд, 20/04/2015 - 19:28
Доброе время суток господа. Ситуация такая. У меня имеется:
1) Arduino UNO R3
2) LCD TFT 2.4
3) ЖК дисплей 16x2
Два дисплея подключенны к ардуино, ЖК дисплей подключен к отдельным портам (SDA,SCL, т.к. A4, A5 заняты TFT дисплеем. Хочетлось бы реализовать работу так: при нажатие на кнопку на TFT дисплее, выводиться иформация на ЖК дисплей.
--------------------------------------------------------
if (p.y > 170 && p.z >300) // Условие нажатие кнопки на TFT
{
tft.drawRect(0, 170, BOXSIZE, 35, WHITE);
delay(500);
tft.fillCircle (120, 160, 100, BLACK);
lcd.clear(); // Стирает пред. текст на ЖК дисплее
lcd.print("Test B1 OK"); // Вывод нового текста
-----------------------------------------------------------
Суть такая, что при нажатие, информация выводиться на ЖК, но все стирается на TFT. Хотелось бы что-бы стиралось только с ЖК и перезаписовалось новым текстом.
lcd.clear(); - срабатывает на каком дисплее? Или на обеих?
lcd.clear(); - срабатывает на каком дисплее? Или на обеих?
lcd.clear(); Правильно срабатывает на lcd 1602, но и заодно очищает tft, чего по сути быть не должно. Есть одна мысль, сразу извиняюсь я не профи в этом.
Выходить так, что LCD TFT подключен к A4 и A5 (Что и есть SDA и SCL), также на Arduino R3, есть дополнительные входы SDA и SCL, куда я подключил LCD 1602. А коде у меня объявления такие:
1. LiquidCrystal_I2C lcd2(0x27,2,1,0,4,5,6,7);
2. Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
По подключению:
Если оба дисплея I2C (т.е. для каждого обязательно нужны пины SDA и SCL), то они должны быть подключены к одним и тем же пинам. Но судя по LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET это не так. Тогда для TFT просто переназначь другие пины, чтобы они не пересекались.
По коду:
похоже, в обеих библиотеках используется одинаковая команда lcd.clear();
Выхода два:
а) заменить ручками в библиотеке для TFT все упоминания lcd.clear на tft.clear. Чревато тем, что после библа может не заработать :)
б) использовать псевдоочистку экрана:
для TFT: tft.fillScreen(BLACK);
для LCD: lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); // 16 пробелов
Выходить
LCD TFT подключен к A4 и A5 (Что и есть SDA и SCL)