проблема вот в чем: экран после загрузки скетча темнеет, а картинка становится некорректной. Если снова нажать на “Загрузить на плату”, то в момент загрузки картинка опять корректная, но сразу после завершения загрузки те же симптомы: темнеет экран и меняется изображение, на кнопки экран реагирует, при добавлении нового текста с кнопок эти белые точки продолжают появляться на месте, где должен быть текс, а при новом нажатии “Загрузить на плату” набранный текст появляется, но при окончании снова исчезает.
также если на кнопки назначить изменение цвета всего экрана, то цвет меняется, но он тусклый.
экран подключал как на схеме на сайте: Connecting an IPS TFT display (ST7789) to an arduino nano and testing image output. · GitHub
#include <Adafruit_GFX.h> // graphics library
#include <Adafruit_ST7789.h> // library for this display
#include <SPI.h>
#define TFT_CS 11 // if your display has CS pin
#define TFT_RST 7 // reset pin
#define TFT_DC 9 // data pin
unsigned long mill;
enum {skNone = 0, skLeft, skRight, skUp, skDown, skSelect};
class Cl_Key {
byte pin;// нога
byte state;
int val_old, val; // состояние на клавиатуре
unsigned long past;
int read_() { // считать состояние клавиатуры
int value = analogRead(pin);
if (value < 130) return skLeft;
else if (value < 310) return skUp;
else if (value < 500) return skDown;
else if (value < 730) return skRight;
else if (value < 900) return skSelect;
return skNone;
}
public:
Cl_Key(byte p): pin(p) {}
void init() {
val_old = read_();
}
void run() {
state = skNone;
if (mill - past >= 50) {
past = mill;
val_old = val;
val = read_();
if (val_old == skNone) {
state = val;
}
}
}
byte read() {
return state;
}
};
Cl_Key Key(A7);
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);
void setup() {
Serial.begin(9600);
Key.init();
tft.init(240, 240, SPI_MODE2);
tft.setRotation(2); // rotates the screen
tft.fillScreen(ST77XX_BLACK); // fills the screen with black colour
tft.setCursor(10, 10); // starts to write text at y10 x10
tft.setTextColor(ST77XX_WHITE); // text colour to white you can use hex codes like 0xDAB420 too
tft.setTextSize(3); // sets font size
tft.setTextWrap(true);
tft.print("HELLO WORLD!");
}
void loop() {
mill = millis();
Key.run();
if (Key.read() == skLeft){
tft.fillScreen(ST77XX_GREEN);
}
if (Key.read() == skRight){
tft.fillScreen(ST77XX_YELLOW);
}
if (Key.read() == skUp){
tft.fillScreen(ST77XX_ORANGE);
}
if (Key.read() == skDown){
tft.fillScreen(ST77XX_WHITE);
}
if (Key.read() == skSelect){
tft.fillScreen(ST77XX_BLUE);
}
}