Белый экран KRMTM28028-SPI ili9341

Добрый день. Подскажите направление что делаю не так? Подключил экран к ардуинке. Графический тест - только белый экран. Попытка прочитать deviceid 0xD3D3
ниже схема подключения

на тесте пока без резисторов

нужны резисторы, если еще экран не спалил

1 лайк

Добрый день. Спасибо за ответ. в аппаратной части совсем не бум бум, больше с точки зрения программирования интересно было. В ютубе много видео где без резисторов юзают( сколько номинал? 200 ом?

Я ставил 20 кОм, можно 10. Одна из тем:
Ili9341 и сенсорный экран - #24 от пользователя lilik
Схема под Ардуино УНО:


Потом перерисовал:

200 Ком)?

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

Нет отображение будет, но есть большая вероятность скорого выхода дисплея из строя. Совсем правильно использовать делители напряжения (два резистора на вывод). Неправильно, но не смертельно один как на схемах. Если вообще без резисторов, то питать от 3,3 В плату (я пробовал от 3,7В).
В моей теме сначала была УНО, там резисторы должны быть видны, потом RP2040, ESP32 уже без них.

хм. странно очень. Я подключил сразу так как в шапке темы (только без резисторов) и у меня просто белый экран. Справедливости ради вроде как когда скетч грузится как-будто мерцает в момент загрузки на плату, дальше белый экран

Белый экран это светодиоды подсветки, отключите их и не будет ничего. Белый экран это верный признак, что вариант библиотек для экрана не работает. Попробуйте конкретно мои примеры или исходник из видосика первого сообщения темы.

я пробовал и с видео и ваш

//рисовалка семицветная со стирашкой
#include "Adafruit_GFX.h"     // Библиотека обработчика графики
#include "Adafruit_ILI9341.h" // Программные драйвера для дисплеев ILI9341
#include "URTouch.h"          // Библиотека для работы с сенсорным экраном

#define TFT_DC 9              // Пин подключения вывода D/C дисплея
#define TFT_CS 10             // Пин подключения вывода CS дисплея
#define TFT_RST 8             // Пин подключения вывода RESET 
// Uno Hardware SPI
#define TFT_MISO 12           // Пин подключения вывода дисплея SDO(MISO)
#define TFT_MOSI 11           // Пин подключения вывода дисплея SDI(MOSI)
#define TFT_CLK 13            // Пин подключения вывода дисплея SCK

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);  // Создаем объект дисплея и сообщаем библиотеке распиновку для работы с графикой

#define t_SCK 3               // Пин подключения вывода дисплея T_CLK
#define t_CS 4                // Пин подключения вывода дисплея T_CS
#define t_MOSI 5              // Пин подключения вывода дисплея T_DIN
#define t_MISO 6              // Пин подключения вывода дисплея T_DOUT
#define t_IRQ 7               // Пин подключения вывода дисплея T_IRQ

URTouch ts(t_SCK, t_CS, t_MOSI, t_MISO, t_IRQ); // Создаем объект сенсорного модуля и сообщаем библиотеке распиновку для работы с ним

int x0 = 0, y0 = 21;
uint16_t color = tft.color565(0, 0, 0);
byte flag = 0; //

void setup() {
  tft.begin();                      // Инициализируем начало работы с графическим дисплеем
  tft.setRotation(1);               // Переводим дисплей в альбомную ориентацию

  ts.InitTouch();                   // Инициализируем сенсорный модуль дисплея
  ts.setPrecision(PREC_EXTREME);        // Определяем необходимую точность обработки нажатий: PREC_LOW - низкая, PREC_MEDIUM - средняя, PREC_HI - высокая, PREC_EXTREME - максимальная
  tft.fillScreen(ILI9341_BLACK);
  //
  tft.fillRect(0, 5, 319, 12, tft.color565(75, 75, 75) );
  for (int i = 1; i < 8; i++) {
    tft.fillCircle(30 * i, 10, 10, tft.color565(255 * (i % 2), 255 * ((i / 2) % 2), 255 * ((i / 4) % 2)) ); //строка кнопок - отрисовка
  }
  tft.drawCircle(250, 10, 10, tft.color565(255, 255, 255) );
  tft.drawCircle(290, 10, 10, tft.color565(255, 0, 0) );
  //
}

void loop()
{
  int x, y;                         // Переменные для работы с координатами нажатий

  while (ts.dataAvailable())        // Пока имеются данные с сенсорного модуля
  {
    ts.read();                      // Считываем с него данные
    x = ts.getX();                  // Считываем координату нажатия X
    y = ts.getY();                  // Считываем координату нажатия Y
    if ((x != -1) && (y != -1))     // Если обе координаты в положительном диапазоне (т.е. если есть нажатие)
    {
      x += 13;                      // Корректируем координату с учетом калибровочных данных
      y += 4;                       // Корректируем координату с учетом калибровочных данных
      //
      if (y < 24 && x > 280) {
        tft.fillRect(0, 21, 320, 240, ILI9341_BLACK );  //стираем рисунок
        x0 = 0, y0 = 21;
        color = tft.color565(0, 0, 0);
        flag = 0;
      }
      if (y > 24 && flag == 2) {
        tft.drawLine(x, y, x0, y0, color);  //рисуем отрезок выбранным цветом
        x0 = x;
        y0 = y;
      }
      if (y > 24 && flag == 3) {
        x0 = x;  //режим стирательной резинки
        y0 = y;
        tft.fillCircle(x0, y0, 5, tft.color565(0, 0, 0) );
      }
      if (y < 24 && x > 240 && x < 260) {
        flag = 3; //включаем режим стирательной резинки
      }
      if (y > 24 && flag == 1) {
        flag = 2;  //начало рисования новой серии отрезков
        x0 = x;
        y0 = y;
      }
      for (int i = 1; i < 8; i++) {
        if (y < 24 && x > 30 * i - 10 && x < 30 * i + 10) {
          flag = 1;  //выбираем цвет рисования
          color = tft.color565(255 * (i % 2), 255 * ((i / 2) % 2), 255 * ((i / 4) % 2));
        }
      }

      //
    }
  }
}

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


У меня такой… Как то производители интересно надписи нанесли взаимонечитаемо.

мой

есть еще такой, но как к уно подключить - не нашел

Красные практически одинаковые. Должно работать. Надо ставить резисторы, без них экран может сгореть и останется одна подсветка.

ну раз по вашим примерам не работает значит осталась подсветка)

Не факт,… можно теперь синий попробовать по тем же пинам, но с резисторами :slight_smile:

так у него распиновка совсем другая)

Точно, рассмотрел. Такие я не пробовал. Думал универсальный экран с параллельной и последовательной записью. Ну для него библиотеки искать… Ещё можно сенсорный экран отдельно проверить. Он может выжил, резисторы ставьте и пробуйте ещё.

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

есть ли способ проверить не спален ли дисплей?) сорри за глупые вопросы так как в электронике я 0, ради кода пытаюсь вникнуть)
и спасибо за терпение+ответы