Помогите с дисплеем ST7789

проблема вот в чем: экран после загрузки скетча темнеет, а картинка становится некорректной. Если снова нажать на “Загрузить на плату”, то в момент загрузки картинка опять корректная, но сразу после завершения загрузки те же симптомы: темнеет экран и меняется изображение, на кнопки экран реагирует, при добавлении нового текста с кнопок эти белые точки продолжают появляться на месте, где должен быть текс, а при новом нажатии “Загрузить на плату” набранный текст появляется, но при окончании снова исчезает.
также если на кнопки назначить изменение цвета всего экрана, то цвет меняется, но он тусклый.
экран подключал как на схеме на сайте: 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);
  }
  }


добавляю фото экрана


Загрузили скетч , нажали кнопку ресет - пользуйтесь на здоровье.

Вот такая цитата с сайта продавца имеется:

ПОДКЛЮЧЕНИЕ И БИБЛИОТЕКИ

Модуль дисплея подключается к плате ARDUINO через преобразователь уровня 5 В/3,3 В (например, TXS0108E) либо через резисторы. Для удобства работы с модулем рекомендуется использование платы адаптера DM-ADTAU-010.

Питание 3.3V как бы намекает на возможные проблемы с 5V МК.
Ну, и 3.3V не на всех ардуинах подходит для перефирии.

И всегда начинайте тест с примера к библиотеке!

понял. боюсь, моих знаний не хватит чтобы правильно все сделать, подскажите, какие резисторы и куда нужно добавить чтобы все заработало?

Да хотя бы по 2К7 в каждую линию кроме земли и LDO 5->3.3 для линии питания.

1 лайк

Вот тут, в камменте написано про проблемы и схему

1 лайк

схема из коммента sadman41 - копирую картинку с чужого сайта, чтобы осталось в теме на будущее

(а то еще ссылка протухнет и не найдешь потом)

1 лайк

да, максимально странная ситуация. если нажимать reset на плате то экран сразу начинает работать исправно, но секунды 3, потом плата перезагружается и опять та же беда. неужели нельзя никак програмно заставить его работать, он же может

Суньте два пальца в розетку …
вот и дисплею немного хреново от перегрузки …

1 лайк

вы это проверяете уже с припаянными резисторами как на схеме или нет?

сегодня проверял, у меня было мало времени в институте, но у меня получилось получить стабильную картинку на ардуино уно, схема с резисторами работает, без резисторов на уно была та же проблема. в пятницу буду пробывать собрать с ардуино нанао, но почти уверен что все будет работать

Нада запомнить

ага, попробуй, тут записывать надо!

итак, взял ардуину уно, т.к. на нано что то не получается, м.б. из-за того что она китайская или я криворукий. На уно все собрал, подключил, все работает

вот как бывает, нано видимо важгат )))

Сори может не по теме может кто подключал к атмеге 328 сие чудо
TFT IPS 1.44" 350x240 вроде как на ST 7789


Помогите плиз если не затруднит

Такая же фигня, держишь резет, пару сек показывает и перезагруз, пробовал и с уно через делители- вообще ноль, с нано без делителя с нажатием резет показывает, с делителем так же ноль. Куда лезть хз