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);
}
}