Подключение LCD к arduino.
Jan. 23rd, 2014 04:39 amПрограммы для arduino пишутся на обычном c++.
Для поддержки lcd там имеется специальный класс LiquidCrystal (LiquidCrystal Library), только он не доработан:
-нет метода аналогичного printf;
-не может читать позицию курсора и символ по конкретным координатам;
-на 4 строчном экране, после вывода на первую строку переходит писать на третью, а после третьей переходит на вторую:)
Для устранения этих недостатков придется редактировать этот класс, ибо производный от него не будет наследовать необходимые переменные (назначение выводов arduino) и функций.
Моя доработка касается только конфигурации с передачей байтов за два прохода по 4 бита (8 битная передача только занимает лишние 4 провода и мне она не нужна) и для четырех строчных экранов по 20 символов, вроде WinStar WEH002004ALPP5N00000.
( Под катом текст файлов LCD.cpp и LCD.h для замены стандартных. )
В моем классе LCD дополнительно доступны методы.
1. void printf(const char * format, ... ) - обычный printf.
2. void printf_noscroll(const char * format, ... ) - printf без прокрутки экрана вврех.
3. void CharOut(const char) - вывод символа в текущую позицию курсора.
4. void CharOut_noscroll(const char c) - вывод символа в текущую позицию курсора без прокрутки изображения, если кончиться экран.
5. void getCursor(uint8_t& col,uint8_t& row) - получение позиции курсора.
6. void setChar(uint8_t addr,char c) - запись символа "c" в адрес видеобуфера "addr".
7. char getChar(uint8_t addr) - получение содержимого ячейки видеобуфера addr.
8. char LCD::getChar(uint8_t col, uint8_t row) - получение символа в колонке col и строке row.
9. void ScrollUp() - прокрутка экрана вверх.