Arduino UNO + Ericsson t28 LCD
- Войдите на сайт для отправки комментариев
Ср, 12/02/2014 - 22:22
Собственно захотелось мне подключить к своей ардуине LCD дисплей, при этом не напрягаясь финансово. Порывшись в шкафу мной был обнаружен старый мобильник ericsson T28(Ну - по большей части :-) - половина частей отсутствует) с которого я и могу свинтить дисплей. Порывшись в сети нашел и вот это:
http://www.module.ro/a1018.html
Вопрос состоит в том, можно ли вообще этот дисплей подцепить к моей ардуине и если да, то поможет ли мне в этом то что я в сети нашел?
Самое ценное по той ссылке, что вы привели - название контроллера, который используется в дисплее: PCF8558
Гуглите дальше по этому названию и, например, "arduino"
P.S. судя по всему - неплохой дисплей (если заведется)
Итак, найден datasheet для этого контроллера
http://www.ddrservice.info/files/Integrated-circuits/P/pcf/pcf8558.pdf
Вероятно теперь требуется писать библиотеку?
Точно.
Это i2c-устройство (т.е. подключается на SDA/SCL).. посмотрите еще как он относится к 5В уровням (если ему "однофигифственно" - то отлично, если хочет 3В-уровни - нужно будет согласователь уровней городить).. ну и разобраться, как этим дисплеем управлять.
С точки зрения подключения к ардуино - очень неплохо (занимаем всего 2 пина).
Если свежо в памяти - нет ли в сети примеров подключения i2c дисплеев к ардуино?
1602 по i2c подключается например
по даташиту офигенный дисплей. 5 строк 101 колонка шириной в пиксель
нормлаьно к 5В относится
выводить конечно проще по строкам. меньше заморочек будет
адреса i2c 7 бит 0111100 и 0111101
для управления вам нужна 9 и 10 страница
общий вид посылки
комманда формируется так
тут задается режим работы дисплея, адрес строки Y
по X отправляется число о 0 до 100, что соотвествует нужному столбцу. незнаю не вчитывался будет ли здесь перенос на следующую строку если строка заполнилась. думаю да
пробуйте
Добрался и я к этому дисплею. Разобрал A1018, привлекло что используется всего 2 пина ардуины, нормально работает от 3 и 5 вольт.
Подключение к ардуино нано и про мини: A4 - Data, A5 - SCL, +5V - pin1 и pin2, GND - pin4
Data и Sclk обязательно к А4 и А5, их использует библиотека Wire.h
Просканировал шину I2C кодом:
Дисплей ответил что висит на адресе 0x38.
Загрузил проверочный код (взят на сайте arduino.cc):
Код рабочий, но выводит дублированную строку, то есть как бы при разрешении 101х40 имеем 4 строки, при выводе в первую строку она дублируется в третьей. У рифера http://rifer.narod.ru/i2cldc.html разрешение 101х33 почему то.
Нашел еще в сети два проекта, код одного из них для дисплея Ericsson T28 LCD не заводится:
Все собранные материалы в архиве на гуглодиске https://drive.google.com/file/d/1CdaPEWXl85z59nVL4gbhvoacqZtrnsDF/view?usp=sharing
Там же в папке T-A1018 проект ШИМ-управления обдувом процессора материнки на Attiny45, датчике LM35 и выводом инфы на дисплей A1018 от эриксона. Код не на вайринге а на си
Помогите корректно запустить дисплей и сделать вменяемую библиотеку для него
По даташиту http://rifer.narod.ru/i2c/PCF8558.pdf 5 строк высотой 8 бит и порядок битов в control byte другой !!!
По даташиту http://rifer.narod.ru/i2c/PCF8558.pdf 5 строк высотой 8 бит и порядок битов в control byte другой !!!
Все правильно, мой контроллер откликается сканеру на шину I2C по адресу #define addr 0x38 поэтому и порядок битов другой. Но в даташите на PCF8558 на 9-й странице первый абзац говорит что в дисплее по идее два контроллера, либо один но ведущий себя как два - в зависимости от бита SA0 в контролбайте.
Ведь в телефоне этот же дисплей дает 40х101 адресацию а не 2 штуки 20х101 с дублированием
Насколько я понял - можно использовать два контроллера на одной шине и сделать дисплей двойного размера 40х202 или 80х101.
И ещё - Wire.write((line<< 5)+B00010001) Вы путаете + и OR !
Плюс по Вашей картинке normal mode это YYY01001, а не YYY10001 как выходит у вас в коде !
Попробуйте так - Wire.write((line<< 5)|B00001001) и вот так - Wire.write((line<< 5)|B00000001)
Вы можете проверить варианты что я написал ? У меня нет такого дисплей и проверить можете только Вы !
Да , буду пробовать, часа через два, сейчас надо уехать. Спасибо что откликнулся.
Жду результатов ... Про два чипа Вы явно заблуждаетесь !
Вы можете проверить варианты что я написал ? У меня нет такого дисплей и проверить можете только Вы !
Ездил, зарплату выдавали, более того три дня отпуска по 27-е и уже билеты оплачены.
Приеду, будем разбирать задачу.
И ещё - Wire.write((line<< 5)+B00010001) Вы путаете + и OR !
Плюс по Вашей картинке normal mode это YYY01001, а не YYY10001 как выходит у вас в коде !
Попробуйте так - Wire.write((line<< 5)|B00001001) и вот так - Wire.write((line<< 5)|B00000001)
Попробовал. Оба варианта с ИЛИ ничего не выводят на дисплей
Этот код взят отсюда: https://forum.arduino.cc/index.php?topic=375764.0
И там в самом низу страницы кто-то вытащил дисплей из Т28 подключил и выложил код. Он тоже не работает
Победил.
Рабочий код:
Из приятного - достаточно большой для вывода информации при тестировании устройств, занимает всего 2 пина контроллера (A4-Data, A5-SCK), контроллер работает с уровнями сигналов и питания хоть 3 хоть 5V, проверено.
Недостатки - требует замены светодиодов подсветки (родные стоят 4 штуки светло-зеленого цвета, смотрится плохо, лучше поменять на белый свет от разбитого дисплея), происходит передергивание изображения при полной очистке дисплея (лучше переписать скетч и переписывать только изменяющиеся фрагменты вывода)
Ну и самый неприятный момент - требует подачи более 5V для регулировки контрастности (5-6.4V). Фото сделано при напряжении 5.25V (бралось прямо с контакта питания mini-USB Arduino-Nano до диода шоттки)
Думаю ветку можно закрывать