mcufriend shield 0x4535 слабая яркость

negavoid
Offline
Зарегистрирован: 09.07.2016

Здравствуйте, прошу помощи. Приехал ко мне китайский дисплей+тач шилд, воткнул его в ардуину, склепал скетч фоторамки, работает - но картинки выводятся с очень низкой яркостью (гаммой?). Но если нажать ресет, то в течение следующей секунды бесхозный дисплей без мастера отображает эту картинку с нормальной яркостью. Есть подозрение, что такое поведение у дисплея из-за подключенной sd-карты, пока скетч побайтово читает картинку с неё, экран сильно мерцает. Подскажите плиз, что делать, куда копать?

 

p.masyukov
p.masyukov аватар
Offline
Зарегистрирован: 14.11.2015

Adafruit_GFX - помоему там есть контрастности регулировка.. по крайней мере на OLED дисплеях работает. И непонятно низкая гамма/констрастность или низкая яркость подсветки??

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

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

negavoid
Offline
Зарегистрирован: 09.07.2016

Очень сложно сфотографировать телефоном экран, да ещё и чтобы показать яркость, но я попробовал:

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

но после нажатия ресета - (пока сам дисплей и microsd карта неинициализирована?), картинку на дисплее видно ярко, ясно и чётко, так же, как на большом брате, цвета яркие, сочные, видно орлиным глазом метров за несколько:

На глазок этот эффект больше похож на пониженный уровень гамма-коррекции. Диоды подсветки видно с боков экрана, их яркость, вроде как, при моих манипуляциях не изменяется. Питание переключал, пробовал и от usb, и от БП на 9В/1А, и оба вместе - на ситуацию это не повлияло.

UPD: про мерцание при выводе bmp - думаю, что шилд всё же воткнут крепко - потому что оно как бы на самом деле не мерцание, а просто глазом отмечается, как быстрое дрожание эдаких бегущих полосок, видимо глаз таким образом отмечает задержки между чтением буфера с карты и отправкой его на дисплей.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

последняя версия библиотеки, попробуйте

https://github.com/prenticedavid/MCUFRIEND_kbv

negavoid
Offline
Зарегистрирован: 09.07.2016

Пробовал, белый экран, не дружит она с китайским поделием на 4535 :(

Если прервать крутящийся демо скетч от mcufriend заливкой моего, то после ресета на дисплее на миг видно нарисованные демкой прямоугольники, то есть внизу, "под белым экраном" оно всё-таки как-то работает и в память дисплея пересылает байтики правильно.

negavoid
Offline
Зарегистрирован: 09.07.2016

Мучения продолжаются, пока удалось в инициализации выставить все резисторы для гамма-коррекции в 0 Ом, стало чуть поярче, но все ещё далеко от идеала, который виден из видеопамяти после нажатия ресета.

 

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

negavoid пишет:

Мучения продолжаются, пока удалось в инициализации выставить все резисторы для гамма-коррекции в 0 Ом, стало чуть поярче, но все ещё далеко от идеала, который виден из видеопамяти после нажатия ресета.

 

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

Для минимального инита вообще хватает 3-4 команды в нем , (2) попробуйте путем коментирования исключать один регистр за другим, оставить самые необходимые.

http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov?page=1#comment-175988

Вообще похоже что инит не соответствует контроллеру, (4) попробуйте считать тип контроллера, в примерах адафруита он посылает его в сериал порт,

Есть ещё одно предположение, это изменение уровня питания диспа (5) проверте мультиметром в обоих случаях. Мож использование карты , а она же включена в дешевых шилдах напрямую, логические уровни 5в с ардуины поднимают через нее питалово 3,3в  ( т.к. microSD и дисп запитаны от одного стаба 3,3в. )  А от повышенного питалова , внутренние преобразователи на кристалле на стекле, начинают выше кочегарить разновеликие доплнительные напряжения для матрицы, из-за этого и бывает изменение яркости и контраста.  Правда подключенная подсветка напрямую к стабу немного нагружает его, но надо бы проветь, мало ли с 3,3в он поднимается до 3,6в или нежелательно ещё выше.

// при полном ините, в регистры изменяются параметры по умолчанию,  по подведенному питанию - для 3,3в надо одни значения , для 2,8в - другие, при максимально-критическом 3,6в - третьи.

 

negavoid
Offline
Зарегистрирован: 09.07.2016

slider спасибо, программные советы с утра уже успел поперебирать :( . Первым делом (4) считал примером lcd_id_readreg, оттуда получил 0х4535 и все остальные регистры по нулям, в тексте mcufriend нет поддержки этого контроллера. Нашёл даташит на LG4535, (3) инит в используемой библиотеке оказался полностью скопирован из даташита. Комментировал (1) регистры гаммы, пробовал (2) комментировать другие регистры - все безрезультатно, яркость по-прежнему остаётся слабой. Пробовал отправлять ардуину в сон после отрисовки, пробуждался обратно по таймеру - но и во сне яркость та же. Найти минимальный инит вот ещё только не пробовал. Боюсь, как бы не (5) - а при ресете microSD [отваливается/засыпает/ещё что-нибудь] и яркость на секунду становится максимальной.

diger67
Offline
Зарегистрирован: 25.07.2015
negavoid
Offline
Зарегистрирован: 09.07.2016

Выдалось ещё немного времени покопаться с этим дисплей шилдом.

Последнюю библиотеку смотрел, да тачскрин-то работает, и инит в этой библиотеке такой же. Вынул microSD, вывел битмап с компа через сериал - яркость всё та же, низкая. Если с выведенной картинкой зажать и держать ресет, тем самым отрубив ардуину - высокая. Нашел на форуме arduino.cc несколько постов, люди пишут про ту же проблему, шилды у них подобные, но на других чипах, так что, по ходу, такой уж мне достался дисплей с али  - самому рисовать примитивы ещё приемлемо, а для фоторамки слишком тёмный => видимо, расходимся, всем спасибо за внимание.