Срочно для одного проекта понадобился небольшой и цветной дисплей, выбор пал на дисплей LCD LS020 от Siemens S65, M65, CX65 и SK65.
Почему LS020? Потому что на него есть рабочие библиотеки , проекты и описания. Поехал в Митино на радиорынок и тут меня постигло первое разочарование , найти дисплеев я не смог кто-то постарался и скупил их передо мной. На развалах у торговцев Б/У телефонами нашел убитый Siemens CX65 , купил его за 300 руб. Приехав домой меня постигло второе разочарование, выковырянный из телефона дисплей оказался Epson LCD L2F50. Ну ладно ничего не поделаешь стал подключать, подключил, скачал библиотеку S65Display, поменял нужные строчки либы вместо LS020 заменил на L2F50 , но диплей никак не хотел работать
Первое что пришло в голову что дисплей нерабочий как и весь телефон, но я не стал сдаваться и начал изучать доки на этот дисплей и править библиотеки. Библиотека для L2F50 была абсолютно не работоспособна и похоже что автор ее даже не проверял, так как она имела даже синтаксические ошибки , про остальное вообще молчу. В итоги я был вознагражден за свое упорство. Дисплей стал подавать признаки жизни.
В общем выкладываю то что получилось:
Тестовая программа для вывода изображений через USB . В программе можно задать паузу между выводами картинок и скорость порта в файле config.ini
Изображения с разрешением 176х132 можно положить в любом количестве в папку с программой и они будут автоматически прокручены через ардуино и ЖКИ
Скетч к Arduino
PHP код:
#include <S65Display.h>
S65Display lcd;
word volatile data[88]; //массив входных данных byte x=0, y=0, x_end=0, y_end=0;
void loop() { if (Serial.available() >= 88) { for (byte i = 0; i < 44; i++) { byte a = Serial.read(); byte b = Serial.read(); // прочитать данные из порта в массив data[i]=((a<<8)|(b)); }
y_end=y+43; x_end=x; if(y_end > 131){y_end=0; x_end++;} lcd.setArea(x, y, x_end, y_end); lcd.drawStart(); for (byte idx = 0; idx < 44; idx++) { lcd.draw(data[idx]); // вывод пикселя на экран y++; if (y > 131) { y = 0; x++; } } lcd.drawStop(); if( x>175 ) x = 0; } }
Последний раз редактировалось Chip; 19.03.2017 в 02:43.