Дисплей на ili9341

Wejur
Offline
Зарегистрирован: 13.06.2015

https://github.com/gmtii/ili9341-arduino - воспользовался этой библиотекой, используется SPI, подключил на UNO, полет нормальный, цветов не хватает, как например перевести RGB(7,51,0) в формат вида: 0xf800 (RED)

Если не ошибаюсь, то это шестнадцатиричный(Hex), Скопировал из библиотеки UTFT и вставил в TFTv2 библиотеку, но этого малова-то. Кстати занимаемое пространство очень радует, скорость тоже офигенная =)

Обнаружил неприятные вещи:
1) не могу повернуть экран, следовательно текст отображается странно
2)Документации нет, в readme только список функций, через файл библиотеки удалосвь немного разобраться
3) странная работа функции fillRectangle
Веселуха =D, кто умеет обращаться с этой библиотекой? Есть может у кого документация?
А еще хотелось бы перенести функционал и принципы из UTFT(она охрененно удобная по сравнению с TFT v2)
 

alex000000
Offline
Зарегистрирован: 21.06.2015

Вот ссылка http://arduino-kit.ru/catalog/id/displey-sensornyiy-24-tft-lcd-240x320

Там библиотеки и примеры. Всё работает. Проверено.

sg12@list.ru
Offline
Зарегистрирован: 13.08.2013

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

slider
Offline
Зарегистрирован: 17.06.2014

sg12@list.ru ,         http://arduino.ru/forum/apparatnye-voprosy/skolko-nozhek-zanimaet-ili9341#comment-173234 и дальше по тексту

jack_k
Offline
Зарегистрирован: 08.12.2016

Ребят, помогите пожалуйста.

Купил мегу + шилд + тач ili9341, https://ru.aliexpress.com/item/3-2-TFT-LCD-Touch-TFT-3-2-Shield-Funduino-Mega-2560-ATmega2560-16AU-Free-shipping/1885463401.html

Проблема в том, что тачскрин начинает работать только после примерно 5-10-15 включения. Иногда может 2-3 раза подряд включиться и работать. Когда нормально заводится, то работает без проблем. Сам дисплей работает всегда норм.

Можно что-нибудь сделать?

Поиск мне не помог, или я в него не умею. 

Спасибо.

slider
Offline
Зарегистрирован: 17.06.2014

jack_k пишет:

Проблема в том, что тачскрин начинает работать только после примерно 5-10-15 включения. Иногда может 2-3 раза подряд включиться и работать. Когда нормально заводится, то работает без проблем. Сам дисплей работает всегда норм.

....

что с питанием ? попробуйте запитать мегу от внешнего источника 7.5-9в (12в если кратковременно)

по местному поиску можно забить что то в этом роде :   тач то работает  то нет , тач не работает

// на этом форуме есть много тем с такими же диспами, поиск:   3.2

jack_k
Offline
Зарегистрирован: 08.12.2016

Мега питается от 9 вольт внешних. С 5 вольт этот дисплей вообще не заводится.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Надеюсь, Вы не питаете дисплей от 5 В Ардуины?

BEST-83154
Offline
Зарегистрирован: 16.03.2016

всем привет

купил дисплей на контролере ili9341 (так утверждал продавец)

написал небольшой проект для проверки - в протеусе работает 

а дисплей не запускается,только подсветка

помогите пожалуйста разобраться,хотябы просто проверить работает ли он

у меня есть атмега 8 и 328

BEST-83154
Offline
Зарегистрирован: 16.03.2016

подключал вот так

slider
Offline
Зарегистрирован: 17.06.2014

справа вверху есть поиск по форуму , забейте:     2.8

(там больше вразумительных примеров по SPI . но есть и с 2.2  ,   2.4 (но много попадется не SPI , а 8 и 16 бит)   )

если хотите выводить быстрее, то надо подключить по другому (на аппаратныйSPI контроллера)

// про подключение аппаратного и программного SPI черкнул здесь http://arduino.ru/forum/apparatnye-voprosy/28-spi-tft-podklyuchenie#comment-160676

уровни 3.0-3.3 !!! (смотря какая трехногая микруха стоит 662K или другая) . если ее нет , то питать дисп 3.0-3.3в и уровни соответственно . Если подали больше питалово и напр. уровней, то вероятно дисплей уже на выброс.

// в atmega8,  atmega328 , .... и т.п.  можно залить скетч и без загрузчика, почти любым программатором, прямо из IDE . в инете много про это написано.

Wejur
Offline
Зарегистрирован: 13.06.2015

LED - 3,3 - 5V, остальные логические тоже 3,3V, используйте делитель напряжения

BEST-83154
Offline
Зарегистрирован: 16.03.2016

slider - в принцепи какая разница какая диагональ у него (2,2-2,4-2,8) у них разрешение экрано одно и то же

Wejur - нет,этот дисплей на 5в , поэтому делитель тут не нужен

BEST-83154
Offline
Зарегистрирован: 16.03.2016

мне хоть чтонибуть вывести,для проверки дисплея

я с ардуино не работал,а эти дисплеи идут типо под ардуино

в принцепи если можно загрузить загрущик в мк то это уже будет ардуино,ну и саму прошивку

вот и прошу вашей помощи,как это сделать

извеняюсь что пишу не совсем по теме ,просто я в отчаяньи 

slider
Offline
Зарегистрирован: 17.06.2014

BEST-83154 пишет:

мне хоть чтонибуть вывести,для проверки дисплея

я с ардуино не работал,а эти дисплеи идут типо под ардуино

в принцепи если можно загрузить загрущик в мк то это уже будет ардуино,ну и саму прошивку

вот и прошу вашей помощи,как это сделать

извеняюсь что пишу не совсем по теме ,просто я в отчаяньи 

прочтите внимательней мой пост выше. лучше сделать так, это очень просто и универсально. лучше сразу делать на atmega328.

если принципиально не хотите иметь дело с ардуинами - то это возможно для вас - atmega8 + spi ili9341 https://github.com/nvero/atmega8-ili9341-spi  

 

sg12@list.ru
Offline
Зарегистрирован: 13.08.2013

BEST-83154 пишет:

slider - в принцепи какая разница какая диагональ у него (2,2-2,4-2,8) у них разрешение экрано одно и то же

Wejur - нет,этот дисплей на 5в , поэтому делитель тут не нужен

Это питание на 5в,стаб стоит, при чем можно впаять перемычку и тогда питание надо 3,3. А вот логика все ровно на 3.3.

BEST-83154
Offline
Зарегистрирован: 16.03.2016

подключил через резисторы 10к - результата нет (((

slider
Offline
Зарегистрирован: 17.06.2014

BEST-83154 пишет:

подключил через резисторы 10к - результата нет (((

по вашей схеме дисп подключен на PB7 , а на этом пине кварц висит ( arduino pinout ). Так что если используете атмегу328 как ардуину (что советую и проще будет для скетчей и либ), то подключите как указал в ссылке.  или по примеру UTFT.

// у меня этот дисп и на atmega128, в роли ардуино , робит.

в поиск по форуму  ili9341 , много тем , к примеру

http://arduino.ru/forum/apparatnye-voprosy/displei-ili9341-brak-ili-krivye-ruki?page=1

BEST-83154
Offline
Зарегистрирован: 16.03.2016

я использую внутриний генератор 

BEST-83154
Offline
Зарегистрирован: 16.03.2016

может кто может набросать что то простое ,хоть залить экран цветом под 

атмегу 8 или 328 в хек файл?

что-то с ардуиновским компилятором у меня не получается подружиться

DAD
Offline
Зарегистрирован: 23.06.2014

Давно валялись три экранчика 2,4" на ILI9341 с тачем, решил ими наконец-то заняться. Из трех на STM32F103C8 завелся всего один. Ну, думаю, китайцы брак прислали. Перетыкаю на NANO - работают все три по SPI, но мееееедлееееннннноооо... Запаивал перемычку J1 на питании, питал от отдельного источника питания, игрался со скоростью SPI, делал задержку после инициализации, один фиг - на AVR с полтыка заводятся, на стм всего один. Абсолютно идентичные экранчики. Мистика. После включения мусор из RAM на экране, шум, после нажатия на тач просто белый экран. Третий день воюю.

На фото альтернативный без тача, но суть та же. Может есть у кого мысли, что может быть? Есть подозрение, что все очень просто, как обычно, просто надо пальцем ткнуть.

Logik
Offline
Зарегистрирован: 05.08.2014

DAD пишет:

 Перетыкаю на NANO - работают все три по SPI, но мееееедлееееннннноооо...

И у меня донедавно про их скорость было такое представление. А тут подключил его, судя по фото - точно такой же,  к другой платформе, где частота SPI повыше и ею поигратся можна. Так загнал его аж на 64МГц - летает, и даже на 97МГц - летает но с глюками, думаю занявшись поподробней можна стабильности добится. Но зачем?! Он и на 64МГц перерисовывается за 20-22мсек, хоть кино крути ))) А ведь по даташиту всего до 10МГц работает. Так что гоните - разгоните!

Nooooob
Offline
Зарегистрирован: 21.04.2020

Приветствую! Оживлю ветку. Мучаюсь несколько дней с Нано и tft2.4 на ili9341. Дисплейчик подцепил через резистивный делитель, библиотека UTFT. Примеры из либы запускаются , но с одним нюансом. Скетч запускается только если инициализацию (InitLCD) вписать в loop. В SETUPе инит не происходит, соответственно и дисплей не стартует. Подскажите что не так делаю. Спасибо.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Вообще-то при публикации вопросов принято публиковать скетч и схему.

Но для начала можете попробовать ввести задержку перед инициализацией дисплея.

Nooooob
Offline
Зарегистрирован: 21.04.2020

Задержку пробовал от 300мс до 3000мс. Не помогает.

Подключал по схеме:Работа с цветными графическими дисплеями TFT (библиотека UTFT) - Описания,  примеры, подключение к Arduino

Пины:

Нано      LCD

  8  ==> CDI(MOSI)

  9  ==> SCK

  10 ==> CS

  11 ==> reset

  12 ==> DC

Питание 5в от 2А зарядника и на нано и на дисплей.

Этот скетч работает.


// библиотека для работы с дисплеем
#include <UTFT.h>

// создаём объект класса UTFT
// и передаём идентификатор модели дисплея и номера пинов
// к которым подключаются линии SCK, SDI (MOSI), D/C, RESET, CS
UTFT myGLCD(TFT01_22SP, 8, 9, 10, 11, 12);

// объявления встроенного шрифта
extern uint8_t BigFont[];

void setup()
{
}
void loop()
{ 
 // инициализируем дисплей с вертикальной ориентацией
  myGLCD.InitLCD(0);
  // очищаем экран
  myGLCD.clrScr();
  // выбираем большой шрифт
  myGLCD.setFont(BigFont);
  // устанавливаем зелёный цвет «чернил» для печати и рисования
  myGLCD.setColor(VGA_GREEN);
  // каждый цикл печатаем строку с поворотам на 20 градусов
  for (int deg = 0; deg < 360; deg += 20) {
    String text = "Hello";
    myGLCD.print(text, 160, 120, deg);
  }
}

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Так в чем у Вас проблема, если "Этот скетч работает"?

И еще: судя по написанному, Вы перепутали часть выводов. В частности, CS и DC, а также SCK и MOSI.

Nooooob
Offline
Зарегистрирован: 21.04.2020

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

Nooooob
Offline
Зарегистрирован: 21.04.2020

По поводу выводов,да, есть некая путаница из-за того ,что комментарии остались старые, из  библиотеки. Изначально назначение пинов там было 9, 8, 12, 11, 10.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ну так:

1. Выложить код с той распиновкой, что используется. 

2. Выложить тот код, который не работает.

Как можно обсуждать то, чего не видишь?

Nooooob
Offline
Зарегистрирован: 21.04.2020

1.Код в сообщение №125

2. 

// библиотека для работы с дисплеем
#include <UTFT.h>

// создаём объект класса UTFT
// и передаём идентификатор модели дисплея и номера пинов
// к которым подключаются линии SCK, SDI (MOSI), D/C, RESET, CS
UTFT myGLCD(TFT01_22SP, 8, 9, 10, 11, 12);

// объявления встроенного шрифта
extern uint8_t BigFont[];

void setup()
{
  // инициализируем дисплей с вертикальной ориентацией
  myGLCD.InitLCD(0);
}
void loop()
{ 
 
  // очищаем экран
  myGLCD.clrScr();
  // выбираем большой шрифт
  myGLCD.setFont(BigFont);
  // устанавливаем зелёный цвет «чернил» для печати и рисования
  myGLCD.setColor(VGA_GREEN);
  // каждый цикл печатаем строку с поворотам на 20 градусов
  for (int deg = 0; deg < 360; deg += 20) {
    String text = "Hello";
    myGLCD.print(text, 160, 120, deg);
  }
}

 

Nooooob
Offline
Зарегистрирован: 21.04.2020

1.Код в сообщение №125

2. 

// библиотека для работы с дисплеем
#include <UTFT.h>

// создаём объект класса UTFT
// и передаём идентификатор модели дисплея и номера пинов
// к которым подключаются линии SCK, SDI (MOSI), D/C, RESET, CS
UTFT myGLCD(TFT01_22SP, 8, 9, 10, 11, 12);

// объявления встроенного шрифта
extern uint8_t BigFont[];

void setup()
{
  // инициализируем дисплей с вертикальной ориентацией
  myGLCD.InitLCD(0);
}
void loop()
{ 
 
  // очищаем экран
  myGLCD.clrScr();
  // выбираем большой шрифт
  myGLCD.setFont(BigFont);
  // устанавливаем зелёный цвет «чернил» для печати и рисования
  myGLCD.setColor(VGA_GREEN);
  // каждый цикл печатаем строку с поворотам на 20 градусов
  for (int deg = 0; deg < 360; deg += 20) {
    String text = "Hello";
    myGLCD.print(text, 160, 120, deg);
  }
}

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Все-таки объясните противоречие между строками 105 и 106.