TFT 1,8" 128x160

Нет ответов
pasha413
Offline
Зарегистрирован: 27.11.2016

Здравствуйте, форумчане!

Для моего проекта требуется на экране 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);
   }
}