Arduino и дисплеи от сотиков мобильных телефонов

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

forfrends пишет:

Что-то не могу никак запустить UTFT... Перепаял 0 и 1 на 8 и 9. Проверил читалкой, все так же 9481, и идет тест: 

 

Пытался запустить на UTFT - ничего не получается. Скачал уже кучу разных правленных библиотек, подставлял свой инит - ничего! Дисплей молчит. Уже запутался во всех этих библиотеках. И сам уже не знаю какие пробовал, а какие нет...

С Адафруитом я не дружу. Попробовал подправить инит - стало только хуже. Можете "ткнуть носом" в библиотеку UTFT которая заработает с ILI9481 8 bit ?

1. по идее , при переходе на UTFT , надо RD подкл. на +3.3в . А в доработанной либе 8bit_turbo , на пин A0 подается лог.1 (внутри либы,) , потому как на адафруитском шилде RD выведен на A0.

2. проверить чтоб не было лишних файлов UTFT  в C:\Program Files   и в  \моих документах .

хорошо , вот он работает у вас  на адафруите. Ничего не перепаивая (RD), напишите к каким пинам ардуины подключена шина управления и скетч адафруитского теста что у вас работает (чтоб сдублировать инфу какое  подключение ) , тогда подготовлю либу UTFT с примером которые должны заработать (и програмно переключить внутри либы RD , на ваш пин , чтоб не пришлось его перепаивать, а только запустить пример и всё заработало).

// как у вас организовано питание +3.3в ?   если с юсб переходника, то какого? (они попадаются разные , где берется слабинькие +3.3 из внутри CH340 , а гди и отдельно стоит маленький хиленький стаб в sot-23 корпусе + еще коммутируется через полевик , что еще потери) . мерить напр. надо когда дисп показывает , (только тогда работают его внутренние стабы) и он потребляет больше.

Watson79
Offline
Зарегистрирован: 07.03.2017

croc19

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

З.Ы. Возможно пока для меня будет проще самому сделать контроллер на базе SED1335 (сам чип уже есть), под который уже есть библиотеки.

Спасибо за помощь.

forfrends
Offline
Зарегистрирован: 24.02.2015

croc19, спасибо, попробовал - не завелось. Пробовал подставлять свой инит - дисплей молчит.

slider, RD подключено к +3.3в. Адафруит работает и в таком варианте. Читалка, правда, не читает, но дисплей нормально инициализируется и показывает. Раньше было подключено к А0, при необходимости могу перекинуть. Текущая распиновка:

CS - 10
WR - 11
RS - 13
RD - +3.3
RES - 12
 
DB7 - 7
DB6 - 6
DB5 - 5
DB4 - 4
DB3 - 3
DB2 - 2
DB1 - 9
DB0 - 8
 
Все файлы от UTFT полностью удалял перед закидыванием другой версии библиотеки.
Ковыряюсь с библиотекой Адафруит. Попробовал закинуть инит из 610 поста но дисплей не откликнулся. То есть стандартный инит Адафруита для ILI9341 помогает запустить дисплей (немного коряво, но работает), а вот инит, который должен работать, не запускается! Как то это странно.
Библиотека: libraries СанСаныч от Slider  (UTFT,UTouch,tinyFat,UTFT_tinyFAT,Adafruit_TFTLCD,SD )  3.95 TFT LCD for arduino mega 2560(ili9488) - на этой библиотеке этот инит отлично работает на МЕГЕ2560, но этот же инит не работает на UNO (Pro Mini).
Стал ковырять инит. По кусочка его подсовывая Адафруиту. Вот что получилось:
01writeRegister8(ILI9341_SOFTRESET, 0);
02delay(50);
03writeRegister8(ILI9341_DISPLAYOFF, 0);
04writeRegister8(0xD0,0x07|0x42|0x18);
05writeRegister8(0xD1,0x00|0x07|0x10);
06//writeRegister8(0xD2,0x01|0x02);
07//writeRegister8(0xC0,0x10|0x3B|0x00|0x02|0x11);
08writeRegister8(0x36,0x08);
09writeRegister8(0x3A,0x55);
10writeRegister8(0xC5,0x03);
11//writeRegister8(0xC8,0x00|0x32|0x36|0x45|0x06|0x16|0x37|0x75|0x77|0x54|0x0C|0x00);
12writeRegister8(0x2A,0x00|0x00|0x01|0x3F);
13writeRegister8(0x2B,0x00|0x00|0x01|0xE0);
14writeRegister8(ILI9341_SLEEPOUT, 0);
15delay(150);
16writeRegister8(ILI9341_DISPLAYON, 0);
17delay(500);

Регистры ILI9341_SLEEPOUT, ILI9341_DISPLAYON, ILI9341_DISPLAYOFF, ILI9341_SOFTRESET не переименовывал, так как они совпадают с 9481. Заметил такую странность: если в UTFT в ините прописать ILI9341_SOFTRESET - (0x01) то скетч не компилируется, выдает странные ошибки типа "переменная не объявлена".

Настройка регистра 0xC8 приводит к раздвоению изображения, потому закоментировал.

Регистры 0xD2 и 0xC0 Адафруитом по умолчанию не используется, закоментировал, инит нормально работает.  

Попробовал этот же рабочий инит подставить для UTFT - дисплей не откликнулся.

Да еще забыл упомянуть о смещении экрана примерно на 20 пикселей за пределы видимой области. Как это подправить - еще не разобрался.

По питанию: питается от USB-TTL конвертера PL2303. Напряжение во время работы дисплея 3.28-3.33 в.

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

Все прекрасно работает. Всего то нужно изменить протокол в массиве на 8 bit. При этом правильно подключить шину данных и сигналы управления. Надо понимать, что распиновка для Adafruit и UTFT разная. Сейчас не помню, но вроде в UTFT есть возможность раскомментировав дефайн дать понять библиотеке с какой распиновкой работать, т.е. на какие выводы будут выводится сигналы шины данных и управления.

forfrends
Offline
Зарегистрирован: 24.02.2015

diger67, у вас дисплей с таким же контроллером как и у меня? Какой у вас инит?

croc19
Offline
Зарегистрирован: 17.02.2017

WATSON79

Не думаю, что сделать будет проще.

Вот описание http://www.lcdinfo.ru/html.cgi/txt/lcd/chips/sed1335/index.htm на русском.

Посмотри, почитай. По поводу диаграмм, простые графики, показывающие когда

какие сигналы переключаются. 

Проще всего надыбать китайский самсунг с экраном 3,3-4 дюйма. С битым или небитым

тачем. Очень юзабельные дисплеи. Как правило 8 битники. Паябельный шлейф.

Распространенные контроллеры, легко подключаются, подсветка от 3В.

Хочешь под ардуину пиши, а лучше на СИ самому. Библиотек море.

Управляются всего 3--5ю сигналами. CS- выборка кристалла или просто подключение выводов

контроллера к шинам данных и управления. RS он же CD он же DC  входной сигнал, показывающий

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

контроллеру, что читаем данные из него. Можно не использовать, если не планируется

читать из контроллера. Сажаем на +3В.

WR сигнал показывающий контроллеру, что пишем в него. RES сигнал сброса контроллера.

Можно запараллелить со сбросом микроконтроллера.

Все это SLIDER писал не раз. 

 

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

Для меня нет разницы какой чип управляет матрицей. Вам нужно понять следующие моменты. 

1. UTFT и Adafruit используют разные выводы для подключения. Если вы меняете библиотеку то и выводы TFT надо подключать к соответствующим выводам.

2. Для использования библиотеки с 8 битным подключением достаточно подправить одно значение в массиве файла UTFT.c.

Ну на сладкое, любую библиотеку можно адаптировать под свои задачи, изменить, дополнить, оптимизировать. Я не пытаюсь Вас обидеть, всеголишь пытаюсь дать вам понять, что пока вы не начнете разбирать библиотеку по косточкам, Вы не сможете подключить свой индикатор. Ну или кто то просто напишит вам нужный код, но это не решит проблему в целом. И вы каждый раз будите бить челом перед форумчанами. Я тоже так начинал года два назад, slider ​не даст соврать, я его по началу тоже осаждал. Потом сел, поковырялся и теперь сам пишу библиотеки. и не только для AVR? но и к STM прикрутил без использования IDE Arduino. 

К примеру, берем строку

1byte dtm[] = {16, 16, 16, 8, 8, 16, 8, SERIAL_4PIN, 16, SERIAL_5PIN, SERIAL_5PIN, 16, 16, 16, 8, 16, LATCHED_16, ili9327_8, 16, 8, 16, 16, 16, 8, SERIAL_5PIN, SERIAL_5PIN, SERIAL_4PIN, 16, 16, 16, SERIAL_5PIN, SERIAL_5PIN};

и меняем 21 значение на 8, получаем следующее

1byte dtm[] = {16, 16, 16, 8, 8, 16, 8, SERIAL_4PIN, 16, SERIAL_5PIN, SERIAL_5PIN, 16, 16, 16, 8, 16, LATCHED_16, ili9327_8, 16, 8, 16, 8, 16, 8, SERIAL_5PIN, SERIAL_5PIN, SERIAL_4PIN, 16, 16, 16, SERIAL_5PIN, SERIAL_5PIN};

тепеь при выборе ili9481 библиотека будет работать с вашим индикатором по 8 битной шине. Остается правильно подключить TFT к Arduino или настроить библиотеку на работу с распиновкой UNO. По умолчанию библиотека использует распиновку Mega/

croc19
Offline
Зарегистрирован: 17.02.2017

diger67 писал -- Всего то нужно изменить протокол в массиве на 8 bit.
Это я и сделал в библиотеке, которую попробывал forfrends.
Похоже нужно разбираться с подключением.

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

По всей видимости он оставил подключение как на UNO, или использует UNO при этом пытается залить прошивку скопилированную под mega, хотя IDE должна ругаться на то что таких портов не существует. Ему надо глубже изучить этот вопрос. иначе мало что получится.....

croc19
Offline
Зарегистрирован: 17.02.2017

В библиотеке для данных используется порт D. Соответственно смотри схему своей нано.

Watson79
Offline
Зарегистрирован: 07.03.2017

croc19 пишет:

Спасибо, большое.

Буду изучать по возможности. С китайскими понятно, но интереснее когда более сложно и не как у всех :)

Просто есть нескольколько интересных дисплеев промышленных (Белый пиксель, чёрный фон и подсветка LED). И платы с контроллером MSM6255, памятью и питанием. Вот и решил разобраться. В Си - как свинья в апельсинах - пока изучаю Ардуино, поэтому и до самостоятельных библиотек пока слабо. Но в код смотрю и понимаю, что к чему.

Схемотехнически создать плату на базе SED1335 с памятью - не проблема, есть и чип, и память. Да и библиотеки под него уже есть. Но это план "Б".

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

Спасибо ещё раз. Буду курить букварь :)

croc19
Offline
Зарегистрирован: 17.02.2017

Если есть несколько дисплеев с контроллером MSM6255, то сам бог велел разбираться с этим контроллером.

Даташит на него есть. Переводчики и в яндексе и в гугле. Корявые конечно, но понять можно.

Дерзай. 

forfrends
Offline
Зарегистрирован: 24.02.2015

diger67, croc19, с одной стороны вы все правильно говорите...  перечитайте мои предыдущие сообщения... по сути вы мне говорите сделатьто, что я уже делал... Я изначально подключал по документации из UTFT_Requirements.pdf :

Дисплей - Ардуино

CS - 10
WR - 11
RS - 13
RD - +3.3
RES - 12
DB7 - 7
DB6 - 6
DB5 - 5
DB4 - 4
DB3 - 3
DB2 - 2
DB1 - 1
DB0 - 0
 
То есть использовал порт D, как и было предусмотрено библиотекой UTFT.
 
Вызываю так:
1UTFT myGLCD(ILI9481,13,11,10,12);

Перекидывание бита в byte dtm[] =... с 16 на 8 ничего не дает. Пробовал инита для Меги2560, для Адафруит - тоже ничего не дает. Только что еще раз все перепроверил: Скачал библиотеку, которую дал croc19, подправил byte dtm[], попробовал 3 разных инита - оригинальный, для Меги2560, и для Адафруит. Результат тот же. Я не путаю подключение Меги и Uno (Pro Mini), так как спутать их не возможно. Инит, он и в Африке инит. Это лишь передача конкретных команд настройки работы дисплея, а не способ подключения контактов к ардуино.

После долгих мучений я решил попробовать Адафруит только для проверки работоспособности дисплея. Дисплей рабочий.
Я уже около десятка разных дисплеев подключил. Но именно с этим какая-то проблема. Потому что в оригинальной UTFT нет (по умолчанию) поддержки ILI9481 8 bit. У меня не хватает знаний что бы самостоятельно подправить библиотеку. А простые способы не работают.

 

croc19
Offline
Зарегистрирован: 17.02.2017

Посмотри повнимательнее. У микро D0  D1  сидят на TXD  RXD

В библиотеке, которую тебе отсылал, было уже исправлено на 8.

Массив начинается с 0.

В последнем посте все правильно.

forfrends
Offline
Зарегистрирован: 24.02.2015

croc19, ... Да я видел... И то что они не последоватено идут: Сначала 1 потом 0, это я тоже учитывал. По этому  после прошивки для проверки подключал только питание без UART программатора.

 

 

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

A вывод RD подтягивал на VDD. Если он висит в воздухе, то могут быть проблемы, тем более если на нем по какой то причине логический ноль. Тогда что ни делай он не запустится.....

croc19
Offline
Зарегистрирован: 17.02.2017

Попробуй на всякий случай в своей программе перед инициализацией перевести D0 и D1 

на выход. 

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

Посмотрел библиотеку UTFT, если имеется в наличии mega. Подключай как к UNO и в файле HW_AVR_defines.h раскомментируй строчку

1// Uncomment the following line to enable this feature
2//#define USE_UNO_SHIELD_ON_MEGA 1

Тогда все ноги будут на месте и вполне вероятно все заработает. Этот дефайн определяет подключение выводов как на шилдах UNO.

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

forfrends ,     попробуйте пока UTFT  8bit_turbo  под ili9481 ili9486 ili9488 ....пост #118  , делал её с вырезанными лишними Reset (на Rst ардуины), CS(на-), RD(на+)  и на D0-D7 , чтоб максимально скорость выжать. пример берете этот UTFT\examples\Arduino (AVR)\UTFT_Demo_480x320 , там пины уже выставлены.

вызов там сделал такой :

//             model, RS(DC), WR        (модель драйвера  диспа всегда №31 , RS WR - можно менять)

UTFT myGLCD( 31,     9,      8 ); 

 

//// разве что вам прийдется перепаять DB0 DB1 на пины  D0 D1 , и шину управления.

иниты всякие лежат в UTFT\tft_drivers\ili9327_8  , просто распаковываете их по одному -  компилите -загружаете и смотрите где цветопередача будет лучше.  изначально там распакован минимальный универсальный инит.

//// по поводу PL2303 , пересмотрел несколько даташитов , так и не нашел сколько разрешенный ток его внутреннего 3.3в . (замечал что и внешние то стабы в sot-23 в переходниках usb-uart ttl не тянут esp8266 ) 

И попробуйте после заливки скетча , отключить RX  TX от переходника,  а то мало ли он не отключает RX и мешает ардуине управлять дисплеем. 

2354resd
Offline
Зарегистрирован: 21.11.2017

Приветсвую всех. Поначитался тут, что с дисп от нокии 5800 очень трудно подружить ардуино, по крайней мере мне, друзья тут подкинули пару телефонов, попробовал поспрашать гугл, но все глаза сломал...где-то видел что диспы китайские... Не поможете с распиновкой.

1.Philips

 

Alcatel 5020D

Заранее спасибо.

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

2354resd, качество фото плохое, скорее всего первый это RGB шина , второй LVDS .   Ни то, ни другое, не подключите.

croc19
Offline
Зарегистрирован: 17.02.2017

2354resd, фоткать нужно шлейфы, чтоб было хорошо видно проводники идущие от стекла 

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

Первый перефотографируй покрупнее и выложи куда-нибудь на файлообменник.

А ссылку сюда. Второй слайдер уже сказал.

2354resd
Offline
Зарегистрирован: 21.11.2017

Вот первый перефоткал

https://yadi.sk/d/wF6Tvjur3QGqXM

croc19
Offline
Зарегистрирован: 17.02.2017

Интересный дисплей. Можно попробывать. 

Сейчас напишу примерную распиновку. Уточни какая модель филипса.

2354resd
Offline
Зарегистрирован: 21.11.2017

Philips Xanium X518

croc19
Offline
Зарегистрирован: 17.02.2017

0,1,2,3  это CS, DS, WR, RD или  RD, WR, DS, CS

IM-1 и IM-2 возможно переключают разрядность.

Попробуй считать ID , но не забудь про резисторные делители.

2354resd
Offline
Зарегистрирован: 21.11.2017

Спасибо.Буду пробовать. А подскажите еще в 8-битном варианте его как подключать?

croc19
Offline
Зарегистрирован: 17.02.2017

Я бы сначала IM-1 посадил на +3В , а  IM-2 на землю.

D0 - D7 пробывать считывать. Если фигня, то D10 - D17.

2354resd
Offline
Зарегистрирован: 21.11.2017

Здравствуйте. Подскажите нормально раскидал все на схеме. Правильно ли сделаны резистивные делители?

 

forfrends
Offline
Зарегистрирован: 24.02.2015

Не совсем так. У вас линия данных приходит на соединение между резисторами, а дисплей идет на верхнюю точку резистора. Должно быть наоборот: линия данных (с Ардуино) должна приходить на верхнее плече резисторного делителя (у вас на схеме это правый ряд), а дисплей должен подключаться к средней точке между резисторами (там где у вас отверстия под DIP гребенку).

То есть разъем под гребенку и шлейф дисплея нужно поменять местами.

croc19
Offline
Зарегистрирован: 17.02.2017

Нормально. Пару поправок.  Я бы IM-1 посадил на +3В , а  IM-2 на землю.

И VCC у тебя будет скорее всего 5В от ардуино. Тогда поставить такой-же 

делитель. Если от отдельного 3,3В, тогда пойдет. 

По подсветке. Параллельное включение светодиодов не гуд.

Быстро деградировать будут. Хотя бы один резистор поставить, чтоб ток 

через них был ниже их рабочего.

И предыдущий совет тоже учесть.

 

2354resd
Offline
Зарегистрирован: 21.11.2017

forfrends пишет:

Не совсем так. У вас линия данных приходит на соединение между резисторами, а дисплей идет на верхнюю точку резистора. Должно быть наоборот: линия данных (с Ардуино) должна приходить на верхнее плече резисторного делителя (у вас на схеме это правый ряд), а дисплей должен подключаться к средней точке между резисторами (там где у вас отверстия под DIP гребенку).

То есть разъем под гребенку и шлейф дисплея нужно поменять местами.

Тоесть от дисплея до 10кОм резисторов могу выйти отверстиями на другую сторону платы и там 20-ки на землю?

forfrends
Offline
Зарегистрирован: 24.02.2015

Вот так должно быть:

2354resd
Offline
Зарегистрирован: 21.11.2017

forfrends пишет:

Вот так должно быть:

Насколько понял вот так должно быть?

croc19
Offline
Зарегистрирован: 17.02.2017

Это тоже самое, что и было.

forfrends
Offline
Зарегистрирован: 24.02.2015

Вот так будет правильно (изображение кликабельно):

croc19
Offline
Зарегистрирован: 17.02.2017

Можно так, чтоб лишние дырки не сверлить. Оранжевая линия это провод, напаянный

прямо поверху резисторов и на землю в конце.

croc19
Offline
Зарегистрирован: 17.02.2017

А еще посмотри 720 пост. Там совсем дырок нет. Удобно.

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

Не знаю, у меня все шилды и купленные и самодельные, работают с последовательно подключенными резисторами 10кОм. А на stm вообще нет ни каких резисторов. Еще не сжег ни одного TFT. 

forfrends
Offline
Зарегистрирован: 24.02.2015

На STM напряжение 3.3 вольта, а не 5 как на Ардуино. Там не нужны ни резисторы, ни делители. На шилдах ставят вместо делителя один резистор только ради экономии. Но это работа дисплея на пределе: чуть что и дисплею конец наступит. 

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

А что чуть что? Если идти по вашей логике, то лучше ставить 74LVC245. Они имеют раздельное питание на входной и выходной частях шинного формирователя, или на полевиках.

forfrends
Offline
Зарегистрирован: 24.02.2015

Так было бы правильнее всего. В каких-то первых сообщениях (первых страницах) Slider писал что ему попался дисплей (или несколько) которые работали от напряжения ниже 3 вольт. Выше - и дисплей сгорал. Что-то в этом роде. что там точно Slider писал не помню, а искать лень :))

2354resd
Offline
Зарегистрирован: 21.11.2017

croc19 пишет:

А еще посмотри 720 пост. Там совсем дырок нет. Удобно.

А что там такого в этом посте? Недопонял))

croc19
Offline
Зарегистрирован: 17.02.2017

Там в плате не нужно сверлить отверстий. Полностью поверхностный монтаж.

Разъем припаян к пятакам. Удобно для монтажки.

2354resd
Offline
Зарегистрирован: 21.11.2017

Дак это понятно, но там вроде делителя нет. и как его туда приткнуть ...сложно. Сижу соображаю как плату повеселее сделать.

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

 forfrends, #969 получилось ?

forfrends
Offline
Зарегистрирован: 24.02.2015

Slider, Да, спасибо! Заработал, на первом же ините. Немного только инит подправил (было перевернуто, отзеркалено и не та чветопередача). Потом попробовал другие (полные) иниты, которые раньше пробовал, все иниты заработали. Похоже что-то было именно в самой библиотеке. Еще не смотрел в чем именно разница. Времени не хватает. Немного позже напишу полный отчет + постараюсь найти из-за чего другие версии библиотеки не хотели работать.

2354resd
Offline
Зарегистрирован: 21.11.2017

croc19 пишет:

Нормально. Пару поправок.  Я бы IM-1 посадил на +3В , а  IM-2 на землю.

И VCC у тебя будет скорее всего 5В от ардуино. Тогда поставить такой-же 

делитель. Если от отдельного 3,3В, тогда пойдет. 

По подсветке. Параллельное включение светодиодов не гуд.

Быстро деградировать будут. Хотя бы один резистор поставить, чтоб ток 

через них был ниже их рабочего.

И предыдущий совет тоже учесть.

 

А можно еще нубский вопрос? Резистор на подсветку от анода ставить или от катодов?

forfrends
Offline
Зарегистрирован: 24.02.2015

Разницы нет.

Derex12
Offline
Зарегистрирован: 07.12.2017

Доброго времени суток. Имею разбитый samsung gt-s6802, матрица в полном порядке. Хочу матрицу подключить к ардуино и использовать, как часы. Но немогу найти распиновку, так же я в теме ардуино полный ноль, но нужно с чегото начинать. Помогите пожалуйста разобраться. К этому шлейфу подключался шлейф сенсарного экрана. Фото https://drive.google.com/drive/u/0/folders/190frEp6bfa3o5rBNXH2tKly8Z52KmOt0