st7735 160 на 128 подсветка барахлит

Argus19
Offline
Зарегистрирован: 08.05.2022

lilik пишет:

Вот обширная тема фанатов аналога Nextion (DWIN дисплеи). Посмотрел цены, не очень они ниже :)

 Там о китайских аналогах. И цена с доставкой за 7" панель 1531руб. + 495руб. за доставку смотрится симпатичнее, чем я отдал за 2.4" Nextion 1437 руб. вместе с доставкой.

lilik
Offline
Зарегистрирован: 19.10.2017

Ну, а 2,4" DWIN даже дороже чего то попадаются :) 

lilik
Offline
Зарегистрирован: 19.10.2017

Ещё вариант использования раскрашек - игры настольные.

Argus19
Offline
Зарегистрирован: 08.05.2022

Что-то не соображу..... Первый раз изображение заливается правильно,

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

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

может дело в исходном фоне?

lilik
Offline
Зарегистрирован: 19.10.2017

А если залить 3 раз, то всё должно стать правильно в изображении. Такое подозрение, что 1 байт теряется-смещается где то. Поэтому через раз всё правильно.

Argus19
Offline
Зарегистрирован: 08.05.2022

Если нажать "сброс" на ардуинке, то заливка идёт нормально.

lilik
Offline
Зарегистрирован: 19.10.2017

Да, но я заливал и в третий раз подряд - тогда картинка выводилась опять правильно. Т.е. явно просматривается чёт-нечет :)

 

lilik
Offline
Зарегистрирован: 19.10.2017

Явно в скетче надо что-то править, но я так и не нашёл что.

Argus19
Offline
Зарегистрирован: 08.05.2022

После заливки изображения, счётчик увеличивается на единицу. Подозреваю, строку:

tft.setAddrWindow(0,0,127,159);

надо добавить в CheckSerial(). Сегодня не успею попробовать.

Argus19
Offline
Зарегистрирован: 08.05.2022

Argus19 пишет:

 Сегодня не успею попробовать.

Попробовал. Первый раз получает изображение, второй раз вообще ничего не происходит.

lilik
Offline
Зарегистрирован: 19.10.2017

Добавил кнопку, жму перед загрузкой новой-старой картинки, тогда всё работает нормально :)

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#define TFT_CS     10
#define TFT_RST    9  
#define TFT_DC     8
 Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);

 
 void setup ()
{
 digitalWrite(2, HIGH);// включить подтягивающий резистор для кнопки 
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
 tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
 tft.fillScreen(ST7735_BLACK);
 tft.setRotation(0);//ориентация экрана
 Serial.begin(115200);
tft.setAddrWindow(0,0,127,159);// 
}
void loop()
{
if(digitalRead(2)==LOW){tft.setAddrWindow(0,0,127,159);delay(100);}//жмём кнопку перед загрузкой
CheckSerial();

}
///////////////////////////////////////////////////////////////////////////////////////////////////////

void  CheckSerial()
{
 
 //////////////////////////////////////////////////////////////////////////////
  SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
  digitalWrite(TFT_DC, HIGH);
  digitalWrite(TFT_CS, LOW);
 while (Serial.available())//считываем данные пока они поступают
  {
  
    SPI.transfer((byte)Serial.read());
  
  }

 digitalWrite(TFT_CS, HIGH);
  SPI.endTransaction();

//   
 }
////////////////////////////////////////////////////////////////////////////////

 

Argus19
Offline
Зарегистрирован: 08.05.2022

Ага.

Можно не только отправлять изображение в порт, но и писать его в файл. С каким расширением должен быть файл изображения для загрузки его с SD карты?

 

lilik
Offline
Зарегистрирован: 19.10.2017

Argus19 пишет:

Ага.

Можно не только отправлять изображение в порт, но и писать его в файл. С каким расширением должен быть файл изображения для загрузки его с SD карты?

 

Не знаю :)

С SD картой и модулем возился один раз, когда на светодиодном кубе рисовал мышкой эффекты и записывал-считывал их с карты. Тогда всё получилось, но очень мудрёно.

А с кнопкой это конечно изврат. Сделал через миллис, теперь всё выводит правильно.

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#define TFT_CS     10
#define TFT_RST    9  
#define TFT_DC     8
 Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);
long Y=0;//переменная хранения моментов времени
 
 void setup ()
{
 // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
 tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
 tft.fillScreen(ST7735_BLACK);
 tft.setRotation(0);//ориентация экрана
 Serial.begin(115200);
tft.setAddrWindow(0,0,127,159);// 
}
void loop()
{
if(millis()-Y>500){tft.setAddrWindow(0,0,127,159);Y=millis();}//если полсекунды данные по картинке уже не поступают каждые полсекунды задаём размер области заливки картинки
CheckSerial();

}
///////////////////////////////////////////////////////////////////////////////////////////////////////

void  CheckSerial()
{
//////////////////////////////////////////////////////////////////////////////
  SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
  digitalWrite(TFT_DC, HIGH);
  digitalWrite(TFT_CS, LOW);
  while (Serial.available())//считываем данные пока они поступают
  {
    Y=millis();//
    SPI.transfer((byte)Serial.read());
  }
  digitalWrite(TFT_CS, HIGH);
  SPI.endTransaction();

//   
 }
////////////////////////////////////////////////////////////////////////////////

 

Argus19
Offline
Зарегистрирован: 08.05.2022

А, если просто поставить задержку в loop?

Полистал интернет. Похоже, можно писать в любом формате. Есть смысл написать такую программу?

lilik
Offline
Зарегистрирован: 19.10.2017

Argus19 пишет:

А, если просто поставить задержку в loop?

Полистал интернет. Похоже, можно писать в любом формате. Есть смысл написать такую программу?

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

Программу есть смысл усложнить, дописав кнопку сохранения в файл данных и загрузки из файла в экранчик с ПК. Но проверять в реальности вариант с картой не на чем, хотя отдельный модуль SD у меня есть. Просто надо было покупать красненькую плату-экран с модулем карты. Она стоит столько же сколько и моя синяя 160*128 :)

 А вариант полноценного приложения для ПК для работы с экранчиком не интересен?

b707
Offline
Зарегистрирован: 26.05.2017

вместо СД можно взять РП2040 (куды ж без нее) - у нее набортной памяти 16 Мб, можно напихать кучу картинок

lilik
Offline
Зарегистрирован: 19.10.2017

b707 пишет:

вместо СД можно взять РП2040 (куды ж без нее) - у нее набортной памяти 16 Мб, можно напихать кучу картинок

А она проста и доступна?, или аддоны-поддоны, библиотеки-дискотеки :)

b707
Offline
Зарегистрирован: 26.05.2017

lilik пишет:

А она проста и доступна?, или аддоны-поддоны, библиотеки-дискотеки :)

Доступна - она дешевле Уно стоит :)

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

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

Argus19 пишет:

С каким расширением должен быть файл изображения для загрузки его с SD карты?

С любым.

Argus19
Offline
Зарегистрирован: 08.05.2022

lilik пишет:

 А вариант полноценного приложения для ПК для работы с экранчиком не интересен?

 Поясните идею.

 

lilik
Offline
Зарегистрирован: 19.10.2017

Приложение в котором можно создавать-редактировать картинку с сохранением в виде файла для вывода на экран с ПК или SD карты.

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

lilik пишет:

Приложение в котором можно создавать-редактировать картинку с сохранением в виде файла для вывода на экран с ПК или SD карты.

Фотошоп?

Argus19
Offline
Зарегистрирован: 08.05.2022

andriano пишет:

lilik пишет:

Приложение в котором можно создавать-редактировать картинку с сохранением в виде файла для вывода на экран с ПК или SD карты.

Фотошоп?

Полноценный редактор - слишком сложная вещь. Гораздо проще создать изображение в редакторе и потом загрузить его в программу, чтобы, либо залить  в ардуино, либо сохранить в формате 5-6-5 в файл.

lilik
Offline
Зарегистрирован: 19.10.2017

Согласен, овчинка выделки не стоит. Но добавить сохранение файла стоит, и темой в "Проектах" на форуме отразить обязательно :)

Argus19
Offline
Зарегистрирован: 08.05.2022

lilik пишет:

Но добавить сохранение файла стоит, и темой в "Проектах" на форуме отразить обязательно :)

Там можно разместить  архив в формате .zip или .rar?

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Что мешает на яндекс.диске или в облаке.маил.ру разместить?

Argus19
Offline
Зарегистрирован: 08.05.2022

BOOM пишет:

Что мешает на яндекс.диске или в облаке.маил.ру разместить?

 Трудные времена. Такие ресурсы могут рухнуть.

Посмотрю.

lilik
Offline
Зарегистрирован: 19.10.2017

Ну можно на стороннем ресурсе, здесь ссылку в теме проекта дать.

Вот к примеру, просто и доходчиво о поделках.

https://www.instructables.com/craft/projects/

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

Argus19 пишет:

andriano пишет:

lilik пишет:

Приложение в котором можно создавать-редактировать картинку с сохранением в виде файла для вывода на экран с ПК или SD карты.

Фотошоп?

Полноценный редактор - слишком сложная вещь.

Paint?

Цитата:
Гораздо проще создать изображение в редакторе и потом загрузить его в программу, чтобы, либо залить  в ардуино, либо сохранить в формате 5-6-5 в файл.

А зачем загружать изображение в Ардуину, если у ПК экран в 100500 раз лучше, чем у Ардуины?

Если в связке с Ардуиной используется ПК, то на его экране и надо отображать все, что нужно.

lilik
Offline
Зарегистрирован: 19.10.2017

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

Но тут возникает следом идущий "проблем". И SD карта  и экранчик висеть будут на одном SPI. Как это всё отразиться на скорости отрисовки картинок? 

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

1. Еще раз: у ПК достаточно хороший экран сам по себе, чтобы не возникала потребность "насиловать" экран Ардуины. Вся отладка производится, "не выходя" из ПК.

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

lilik
Offline
Зарегистрирован: 19.10.2017

andriano пишет:

1. Еще раз: у ПК достаточно хороший экран сам по себе, чтобы не возникала потребность "насиловать" экран Ардуины. Вся отладка производится, "не выходя" из ПК.

 

Нет. То что на экране ПК и то что на экранчике две разные вещи. Смотрим на сообщение где львы нарисованы, именно подбор с учётом угла преимущественного наблюдения очень важен. Что бы картинка давала желаемые сосочетания нужно постараться. Фразу "Какая  же это цветовая хрень из 90-х" нужно заслужить :)

Argus19
Offline
Зарегистрирован: 08.05.2022

Доработал. Надо проверить:

https://drive.google.com/file/d/169p4izj_KrYHqQHqqFXBAYdAbCh-_P9N/view?u...

 

lilik
Offline
Зарегистрирован: 19.10.2017

Работает, но не нашёл как сохранённый файл грузить в экран. И логика мне кажется перегруженная. При открытии картинки-файла автоматически делать файл 5-6-5 и только кнопка на сохранение файла отдельно.

А русский язык не поддерживается? 

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

lilik пишет:

Нет. То что на экране ПК и то что на экранчике две разные вещи. Смотрим на сообщение где львы нарисованы, именно подбор с учётом угла преимущественного наблюдения очень важен. Что бы картинка давала желаемые сосочетания нужно постараться. Фразу "Какая  же это цветовая хрень из 90-х" нужно заслужить :)

 

Посмотрел "там, где львы нарисованы": картинку вполне можно узнать, значит, претензии не по существу. Особенно с учетом того, что в одну из двух картинок добавлены еще искажения фотоаппарата.

И не смешите меня по поводу подбора цветов для экрана 160*128. Недавно делал проект с 4" дисплеем 320*400. С углами у него проблема, но все равно желтый на синем фоне вполне различим и отличим от белого на синем фоне. А другие цвета там не используются (кроме еще красного на белом фоне - для аварийных случаев).

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

lilik
Offline
Зарегистрирован: 19.10.2017

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

lilik
Offline
Зарегистрирован: 19.10.2017

Неужели Вы не видите, что исходный лев мягче характером, добрее, а нижний жёстче? 

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

Он не добрее, он просто сильнее устал.

Argus19
Offline
Зарегистрирован: 08.05.2022

lilik пишет:

Работает, но не нашёл как сохранённый файл грузить в экран. И логика мне кажется перегруженная. При открытии картинки-файла автоматически делать файл 5-6-5 и только кнопка на сохранение файла отдельно.

А русский язык не поддерживается? 

 Логика проста. Можно загружать изображения разного размера, в т.ч. и сделанные мобилкой (4608Х3456). Загруженное изображение загоняется в размер 128Х160 или 128Х128 как есть. Если картинка не нравится, особенно когда лежачий формат преобразуется в стоячий, то и нет смысла её перекодировать. Перекодировка идёт долго. Если же изображение нравится, то перекодируем в 5-6-5 и, или отправляем на дисплей, или пишем в файл. Смысла загружать сохранённый битовый массив в ардуино тоже нет. Мы же не увидим, что именно загрузили. Чтобы увидеть, надо преобразовать в формат 8-8-8 и вывести на экран ПК. Сохранённые файлы будут нужны для загрузки их с SD карты или микросхемы памяти.

 Всё программирование, за исключением 1С и чего-то там в Офисе, на английском.  Надписей на басурманском языке не много и все они, как я думаю, понятны, тем более, для ардуинщиков. Это уже стало привычкой. Кое-какие калькуляторы по ламповой технике, которые я когда-то написал, попросили перевести на английский. С тех пор и пошло.

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

лучше переводить на японский так как с него перевод на любой другой язык более качественный

Argus19
Offline
Зарегистрирован: 08.05.2022

ua6em пишет:

лучше переводить на японский так как с него перевод на любой другой язык более качественный

Японского не знаю. Немного говорю на египетском и тунисском. Надписи на тунисском языке пока не переводит ни один электронный переводчик.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Argus19 пишет:
...Кое-какие калькуляторы по ламповой технике, которые я когда-то написал...

А, так 19 в твоём нике, это год рождения, значить. 

Argus19
Offline
Зарегистрирован: 08.05.2022

DetSimen пишет:

Argus19 пишет:
...Кое-какие калькуляторы по ламповой технике, которые я когда-то написал...

А, так 19 в твоём нике, это год рождения, значить. 

Это начало года рождения. Целиком лень писать.

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

Вспомнилось:

Бабушка с внучкой едут в автобусе, внучка задает массу вопросов, в конце концов спрашивает про возраст бабушки. Бабушка отвечать не хочет, внучка настаивает:

- ну хотя бы первую цифру?

- ну 5.

- а вторую?

- 4.

- а третью?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

С Nano и цветным дисплеем- это похоже на натягивание совы на глобус !!!

Х..й Вы маетесь господа !!!

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Komandir пишет:

Х..й Вы маетесь господа !!!

+100500

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andycat пишет:

два месяца мучать

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

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

lilik пишет:

Пришла пара дисплеев таких

 

Киньте ссылку на Али этого дисплея, закажу, побалуюсь натянуть Arduino на цветной дисплей.

Дисплей 3.3 вольта? SPI через резисторные делители подключать?

Argus19
Offline
Зарегистрирован: 08.05.2022

andycat пишет:

Дисплей 3.3 вольта? SPI через резисторные делители подключать?

 Чтобы не было недоразумений, я подключил  через TXS0108E.