TFT-дисплей показывает черные полосы

Я новичок в этой области: я пытаюсь управлять TFT-дисплеем ST7735S (это модель, которую я сейчас использую: https://www.amazon.it/dp/B078JBBPXK/ref=pe_24968671_487022601_TE_SCE_dp_1) с Arduino Mega после этого видео (https://www.youtube.com/watch?v=iPeukOK6stk&ab_channel=Artigiano2.0-AlessioRomanelli). После настройки оборудования и написания кода при запуске примерного скрипта "graphictest" библиотеки Adafruit для st7735 и st7789 на дисплее отображаются полосы на фоне, как показано на рисунке ниже:

(Обратите внимание, что в этом странном эффекте виновата не камера)

Читая в Интернете, я подумал, что проблема может заключаться в том, что дисплей питается от 5 В вместо 3,3 В, но я также пробовал питать его от 3,3 В (Arduino Mega 3,3 В) практически без изменений. Я также изменил tft.initR(INITR_BLACKTAB); на tft.initR(INITR_GREENTAB);, как предложил пользователь в этой теме (https://forum.arduino.cc/t/bugged-1-8-inch-tft -diplay/1012166/5), и я также пытался подать на дисплей напряжение 5 В, но последовательно использовал резисторы 4,7 кОм, чтобы уменьшить напряжение, как было предложено в том же посте, но это все равно не работает.

Более того, странный эффект, показанный на изображении, проявляется только в том случае, если я использую источник питания 5 В, когда программа выполняет функцию void setup(), затем становится резким (этого не происходит, если Я запитываю дисплей с помощью выходного источника Arduino Mega 3,3 В: на самом деле в этом случае полосы все еще присутствуют даже при входе в функцию void loop())

Как я уже говорил, программа и аппаратная настройка такие же, как и в видео, о котором я говорил. Одна вещь, которую я заметил, это то, что когда я нажимаю кнопку сброса на Arduino Mega, за мгновение до перезагрузки программы, полосы исчезают, оставляя изображение таким четким, каким оно должно было быть, без каких-либо странных фоновых эффектов. Кто-нибудь знает, как решить эту проблему?

Заранее спасибо за любой возможный ответ!

Обновлено:

Это изображение модифицированной версии соединений, запускающей программу graphictest с предложенным кодом:

#else
  // Для коммутационной платы можно использовать любые 2 или 3 контакта.
  // Эти штифты также будут работать для 1,8-дюймовых Экран TFT.
  #define TFT_CS        10
  //#define TFT_RST 9 // Или установить в -1 и подключить к контакту RESET Arduino
  #define TFT_RST        8 // Или установить в -1 и подключить к контакту RESET Arduino
  #define TFT_DC         9
#endif

// ВАРИАНТ 2 позволяет подключить дисплей с помощью ЛЮБЫХ ДВУХ или ТРЕХ КОНТАКТОВ, // компромисс заключается в том, что производительность не такая высокая, как у аппаратного SPI выше.

#define TFT_MOSI 11  // Вывод данных
#define TFT_SCLK 13  // Часы вышли

// Для дисплеев на основе ST7735 мы будем использовать этот вызов
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

Надеюсь, все соединения видны

, 👍-1

Обсуждение

почему вы пытаетесь запитать ЖК-дисплей напряжением 3,3 В? ... схемы на странице Amazon ясно показывают подключение питания 5 В, @jsotola

На самом деле, я питал его от источника питания 5 В, но после прочтения в Интернете показалось (в основном из темы, которую я указал в вопросе), что 5 В могут повредить дисплей. Тем не менее, я пробовал все это, и даже при питании от 5 В проблема остается., @Luke__

вы сказали, что подключили несколько последовательных резисторов ... это не питает его от источника питания 5 В, @jsotola

после того, как проблема проявилась при прямой подаче 5 В, я попытался подать питание с помощью 3,3 В и 5 В, уменьшенного до 3,3 В с помощью резисторов. Но проблема проявилась, в первую очередь, при питании от 5 В., @Luke__

это когда-нибудь работало правильно?, @jsotola

Как только я попытался перезагрузить Arduino Mega: нажав встроенную кнопку, за мгновение до перезапуска программы изображение стало таким четким, каким оно должно быть, без каких-либо проблем в фоновом режиме., @Luke__


2 ответа


Лучший ответ:

0

Adafruit создала программу проверки графики для продаваемых ими экранов. Экран, который у вас есть, не продается Adafruit, и нет причин, по которым они должны поддерживать этот экран.

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

Перейдите сюда https:/ /www.arthurwiz.com/software-development/177-inch-tft-lcd-display-with-st7735s-on-arduino-mega-2560 и подключите экран к своей меге точно так же, как в их таблице . Вы сделаете 8 соединений. Загрузите и запустите их программу «Hello World» из учебника. Если это работает нормально, вы знаете, что соединения правильные. Обратите внимание, что конструктор:

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

Кроме того, не беспокойтесь, если экран повернут неправильно — вы можете добавить одну строку в setup(), чтобы исправить это:

  tft.initR(INITR_BLACKTAB);
  tft.setRotation(1); // <---добавлено
  tft.fillScreen(ST7735_BLACK);

Теперь приступим к графическому тесту. Найдите эти строки и измените их так, как они у меня. Я оставил одну строку закомментированной для иллюстрации. Вы делаете это, чтобы определить, какой GPIO используется с какой функцией. Да, я мог бы начать здесь, но успешное прохождение первого руководства означает, что вы не заблокировали экран и у вас правильно подключены.

#else
  // Для коммутационной платы можно использовать любые 2 или 3 контакта.
  // Эти штифты также будут работать для 1,8-дюймовых Экран TFT.
  #define TFT_CS        10
  //#define TFT_RST 9 // Или установить в -1 и подключить к контакту RESET Arduino
  #define TFT_RST        8 // Или установить в -1 и подключить к контакту RESET Arduino
  #define TFT_DC         9
#endif

Вы будете использовать вариант 2 и конструктор, как указано ранее, поэтому

// ВАРИАНТ 2 позволяет подключить дисплей с помощью ЛЮБЫХ ДВУХ или ТРЕХ КОНТАКТОВ,
// Компромисс в том, что производительность не такая высокая, как у аппаратного SPI выше.
#define TFT_MOSI 11  // Вывод данных
#define TFT_SCLK 13  // Часы вышли

// Для дисплеев на основе ST7735 мы будем использовать этот вызов
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

// Используйте этот инициализатор при использовании 1.8"; ТФТ-экран:
  tft.initR(INITR_BLACKTAB);      // Микросхема Init ST7735S, черная вкладка

Обратите внимание: несмотря на то, что на моем экране все еще есть зеленая вкладка, если я использую инициализатор зеленой вкладки, у меня возникнут проблемы со смещением.

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

Сообщите нам, как идут дела.

Отредактировано для добавления:

Никаких внешних резисторов добавлять не нужно. Ваш Mega имеет соединения как для 3 В, так и для 5 В, и вам необходимо использовать оба напряжения.

Ваш исходный рисунок (см. ниже) показывает, что контакты 2 и 8 подключены к одному и тому же +V на направляющей макетной платы. Это неправильно. Как показано в приведенной таблице, контакт 2 ЖК-дисплея соответствует напряжению 5 В на Mega, а контакт 8 на ЖК-дисплее соответствует напряжению 3,3 В на Mega.

,

Большое спасибо: я постараюсь и сообщить вам, как это происходит как можно скорее. Тем временем я кое-что попробовал сам: я прочитал в Интернете, что экран, даже если он питается от 5 В, требует логики 3,3 В, поэтому я включил резисторы 1 кОм последовательно с выводами SPI, и проблема, похоже, решена, хотя экран имеет становятся нестабильными (мигают и часто затухают до белого экрана до окончания выполнения функции настройки). Я не могу сказать, происходит ли это из-за хрупкости соединений макетной платы или по какой-либо другой причине), @Luke__

Я попытался подключить ЖК-дисплей, как вы предложили, но есть две основные проблемы: фон по-прежнему не исправлен и скорость обновления ЖК-дисплея значительно снизилась. Другими словами, фон, который должен быть черным, начинается с белого и постепенно становится серым, но никогда не становится черным., @Luke__

@Luke__ Предполагая, что у вас правильные соединения и вы не используете какие-либо дополнительные резисторы и нет проблем с макетом / выводом, мне интересно, проблема не в вашем экране. Хорошая четкая картинка экрана и мега соединения могут помочь. Программа "Hello World" работала нормально?, @DrG

@Luke__ Пожалуйста, убедитесь, что вы правильно подключаете ОТДЕЛЬНО +5 В И +3,3 В от Mega к правильным соединениям на экране — см. мою правку в первоначальном ответе., @DrG

«Привет мир» показал те же проблемы. Я отредактировал вопрос с запрошенным изображением, показывающим выполнение графической программы. Я думаю, что все правильно подключил, скажите, если я ошибаюсь, @Luke__

@Luke__ Я кропотливо проверил все ваши связи и СЕЙЧАС я думаю, что они у вас правильные. Вполне возможно, что вы повредили экран, дойдя до этого момента, потому что у вас изначально не было этих подключений, и вы пробовали много вещей - назовите это обучением. Одна вещь, однако, это пустое пространство слева - это проблема смещения, и я думаю, что вы используете инициализатор зеленой вкладки - измените его на tft.initR (INITR_BLACKTAB); // Запустите чип ST7735S, черная вкладка и посмотрите, не исчезнет ли это. Это выглядит лучше, чем сначала, и мне будет так же хорошо, как и получается., @DrG

да, я использовал INITR_GREENTAB, но я еще пробовал использовать BLACKTAB: ничего лучше. На данный момент, если экран поврежден, есть ли у вас какие-либо лучшие предложения о некоторых малобюджетных дисплеях ST7735, которые просты в использовании и имеют размер 1,8 дюйма (на данный момент я думаю, что проще использовать дисплей с диагональю 1,8 дюйма, а не 1,77 дюйма). '' один), может быть, это также 5 В, так как его проще использовать с контактными выходами Arduino?, @Luke__

@Luke__ Извините, мы на самом деле не рекомендуем продукты здесь, но я думаю, что у вас есть что-то, что работает, и вы гораздо лучше понимаете, насколько осторожными вы должны быть с этими соединениями. Продолжайте отключаться :), @DrG

Я понимаю. Большое спасибо за ваши усилия и время, чтобы ответить мне, я действительно должен вам услугу! XD, @Luke__


0

У меня была точно такая же проблема, и я проверил все здесь, но это не помогло. Затем я нажал кнопку сброса на своем UNO с тем же результатом, что и Люк__ (экран выглядел хорошо, пока я нажимал сброс). После этого несколько раз дисплей начал работать как надо.

Странно, но моя проблема решена.

,