![]() |
Дисплей климатроника от BMW E90
Вложений: 2
Всем привет.
Имеется панель климатроника от BMW E90 (тот, что на рисунке ниже, где температуру показывает) Вложение 36558 Хочу её ипользовать для управления климатом в другой машине на базе Ардуино. Кнопки и светодиоды - это всё понятно, а может кто-то подскажет, как запустить однострочный дисплей на этой панели? ЖК-дисплей, как я понял, имеет несколько фиксированных символов и пиксельные маски для отображения температуры. Драйвер дисплея - PCF8576CT. Его характеристики тут. Вложение 36559 Подскажите, как именно управлять данным дисплеем через Ардуино. Или без необходимых библиотек не получится? В принципе, думаю, что можно определить, какие контакты с самого дисплея и на какие ножки контроллера подключены, чтобы определить маску. P.S. Подходящего однострочного дисплея не смог найти. Есть двухстрочный 1602, но плата не влезет в корпус, а резать там нет возможности. |
Цитата:
|
угу, я раскурил саму микруху, но так как дисплей другой, то параметры инициализации и какой бит какой сегмент зажигает - это уже сами будете разбираться - это не сложно, в даташите на микруху есть вся инфа.
чтобы понять правильную строку инициализации - очень рекомендую подключить сниффер i2c к работающему блоку и записать обмен, чтобы выяснить, с каким набором данных идет инициализация, без этого ловить нечего с этой микрухой. |
Цитата:
|
Я новичок в этом деле. Можете подсказать, какие контакты драйвера к каким контактам Ардуино нужно подключить?
|
Цитата:
Эта микруха I2C, соответственно, питание 5В и шину I2С и нужно подключать к Ардуине. I2C у массовых Ардуин одна, поэтому там и нечего думать - SDA -> SDA, SCL -> SCL Ардуина будет мастером на шине, микруха слейвом. Конкретный адрес микрухи на шине лучше просканировать сканером I2C (в моей ветке было про это), так как по-моему есть несколько вариантов адресов. |
Цитата:
Спасибо за ответ. |
А как можно определить адрес слэйва, если нет возможности подключиться к работающей панели?
Запустил такой код: PHP код:
Значит у меня тоже адрес 0x38? |
Отсканируйте устройства с помощью скрипта
http://playground.arduino.cc/Main/I2cScanner |
Цитата:
Как же, всё-таки, сформировать правильную команду, чтобы на дисплее хоть что-то засветилось? |
Цитата:
потом задавать вопросы наводящие. у меня это 2 месяца заняло, но сейчас должно быть быстрее, потому что понятно, как оно работает и есть весь код, его нужно только немного поправить |
Цитата:
Ладно, буду искать того, кто разбирается. |
Цитата:
Не видя фоток дорожек понять что-то сложно. Это была нетривиальная задача даже для меня, а я уже лет 30 этим занимаюсь. Чтобы браться за такие вещи нужен навык общения с подобным железом. На самом то деле почти все уже сделано, в документе расписан порядок байтов в посылке, которую микруха жрет. Это скрипт уже делает. Вам всего лишь надо поиграться с начальным набором байт, которые правильно конфигурят микруху для работы с вашим конкретным индикатором. Так как тоже однострочный у Вас, конфигурация не должна сильно отличаться. Микруха довольно тупая, она просто отображает то, что ей скажут. в моем скрипте Вам надо поиграться с вот этим buffer[0] = 0xE0; buffer[1] = 0xCB; buffer[2] = 0xF0; на странице 23 есть формат команды по байтам Мы отправляем сами только Command и Display Data, первый байт отправляет библиотека Wire в Ардуине вот Command и есть buffer[0] = 0xE0; buffer[1] = 0xCB; buffer[2] = 0xF0; назначение каждого байта в Command расписано на странице 24 и 25 Вам надо поиграться со значениями битов B, M1, M0, так как они зависят от конкретного LCD, который подключен к микрухе. Мы всегда посылаем пакеты данных по 17 байт - первых 3 байта - конфигурация, остальные - данные. То есть Ваша задача методом тыка меняя buffer[0] = 0xE0; buffer[1] = 0xCB; buffer[2] = 0xF0; заставить показывать хоть что-то, дальше пойдет легче. Это значения шестнадцатиричные, можно подставлять бинарные, так будет легче менять отдельные байты. Вот бинарный эквивалент buffer[0] = B11100000; buffer[1] = B11001011; buffer[2] = B11110000; Если будет показывать что-нить, то потом нужно сделать свой знакогенератор - таблицу соответствия байтов данных символам на экране. Тут сильно ускорит работу мой скрипт. Если дойдете до этого шага - скину как пример мой знакогенератор, там все довольно просто. |
Цитата:
Пробую разобраться. Немного пишу на PHP, но с этим ещё не сталкивался. Итак спасибо за помощь. |
Цитата:
Микруха оказалась немного укуренная по управлению, но бывают гораздо более запущенные случаи. ЗЫ: Я тоже писал на PHP первые лет 6-7. Сишный код в Ардуине по синтаксису не так уж и отличается от PHP :) А битовая арифметика и массивы почти один в один. Только с обработкой строк в Си полная засада. Пробуйте, оно не кусается. Мне оно даже интереснее показалось, чем писать очередное мобильное приложение на работе :) |
Я правильно понял порядок команд?
buffer[0] = 0xE0; //Device Select buffer[1] = 0xCB; //Mode Set buffer[2] = 0xF0; //Blink |
По дорожкам определил, что задействованы 4 BACKPLANES и все 40 логических выходов PCF8576.
|
Цитата:
В принципе, изменилось только 2 последних бита в MODE SET, так как поставил режим управления 1:4. Может драйвер нерабочий? Можно как-то его проверить? |
Глупый вопрос - а данный девайс представляет собой только дисплей/кнопочки/крутилки, или мозги климата тоже там?
|
Цитата:
|
А драйвера сервомашинок?
|
Вложений: 1
|
Часовой пояс GMT +4, время: 15:14. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot