TFT 1,8" 128x160
- Войдите на сайт для отправки комментариев
Вс, 03/09/2017 - 11:56
Здравствуйте, форумчане!
Для моего проекта требуется на экране TFT экрана менять цвет текста в зависимости от состояния.
у меня получилось так, но может можно как-то упростить его?
#include <Adafruit_ST7735.h> #define TFT_CS 10 #define TFT_RST 12 #define TFT_DC 8 #define TFT_SCLK 13 #define TFT_MOSI 11 #define ledPin 9 // LED подсветка Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); boolean Guard = false; boolean DOORon = true; String val; // переменная для хранения пришедших данных. String guard = ""; String door = ""; int backlit = 100; // подсветка void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); analogWrite(ledPin, backlit); tft.initR(INITR_BLACKTAB); eepromconfig(); Serial.println("wait..."); } void loop() { if (Serial.available()) { // если в мониторе порта что-то ввели while (Serial.available()) { // сохраняем входную строку в переменную val. char ch = Serial.read(); val += char(ch); // собираем принятые символы в строку delay(3); } ConsolePrint(); // запускаем консольную программу val = ""; } } void TFTtext() { tft.setTextWrap(false); tft.fillScreen(ST7735_BLACK); tft.setCursor(0, 0); tft.setTextSize(2); if (Guard == 1) { tft.setTextColor(ST7735_GREEN); tft.println(guard); } else { tft.setTextColor(ST7735_RED); tft.println(guard); } tft.setCursor(0, 17); if (DOORon == 1) { tft.setTextColor(ST7735_GREEN); tft.println(door); } else { tft.setTextColor(ST7735_RED); tft.println(door); } } void eepromconfig() { if (Guard == true) guard = "GUARD on"; else guard = "GUARD off"; if (DOORon == true) door = "DOOR on"; else door = "DOOR off"; TFTtext(); } void ConsolePrint() { val.toLowerCase(); if (val.indexOf("guard") > -1) { if (val.indexOf("on") > -1) Guard = true; if (val.indexOf("off") > -1) Guard = false; eepromconfig(); Serial.println(guard); } if (val.indexOf("door") > -1) { if (val.indexOf("on") > -1) DOORon = true; if (val.indexOf("off") > -1) DOORon = false; eepromconfig(); Serial.println(door); } }