Семисегментный LED-дисплей прежде всего хорош тем, что имеет достаточно простую и надежную конструкцию, а при опытно подобранном токе через сегменты, легко читаем и с нескольких метров, и в кромешной темноте ;)
Дальше начинаются минусы: высокий ток потребления, необходимость схемы мультиплексирования разрядов, ограниченный набор синтезируемых символов. Все эти недостатки можно обойти в той или иной степени, с использованием экзотических (читаем: дорогих) компонентов.
Но гораздо проще использовать знакосинтезирующие ЖКИ-дисплеи, которые благодаря китайскому трудолюбию можно приобрести теперь на каждом углу.
Для экспериментов возьмем WinStar WH1602B-YYH-CTK:
Как видите, на самом деле - это модуль, состоящий из совместимого с Hitachi HD44780U контроллера, ЖКИ-матрицы и светодиодной подсветки.
Дисплей имеет две строки по 16 знакомест в каждой, параллельный интерфейс доступа, память, русский шрифт и даже возможность загрузить свой собственный знакогенератор.
Главное - не забыть, что на него подается три питания: одним питается контроллер со всей логикой (обязательно), вторым - LED-подсветка (опционально), а третьим - сам LCD-дисплей, и последнее напряжение надо уметь регулировать.
Для начала, вооружимся datasheet-ом и соберем типовую схему:
Мне для этого потребовался фрагмент вилки PLS на 16 контактов, чтобы дисплей легко стыковался с беспаечной макетной платой:
Таким образом, взять в руки паяльник придется - по крайней мере, один раз:
Дальше надо выбрать ширину параллельного интерфейса: 8 или 4 бит. Дело, конечно, не в скорости обмена, а в количестве цифровых входов Arduino, которые будут потеряны после подключения дисплея. Если выбрать 8-битный режим, то потребуется 11 выходов: к 8-битной шине данных добавляются линии RS, R/W и E(nable).
4-битная шина, соответственно, займет 7 выходов (если цифровых выходов все-таки не хватает, можно использовать и аналоговые, после переключения их в соответствующий режим), передача байта происходит в два цикла по линиям DB7-DB4, сначала старший ниббл, потом младший.
Хорошая новость состоит в том, что все эти тонкости нам не особенно важны: в основном, благодаря библиотеке LiquidCrystal (входит в Arduino IDE). Вот простой способ соединить Arduino и LCD-дисплей без паяльника:
В качестве тестового скетча можно использовать HelloWorld.pde из LiquidCrystal:
#include <LiquidCrystal.h>
// LiquidCrystal display with:
// rs on pin 12
// rw on pin 11
// enable on pin 10
// d4, d5, d6, d7 on pins 5, 4, 3, 2
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
void setup()
{
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop()
{
}
Самая главная строка - это конструктор объекта lcd. Параметрами надо указать, к каким цифровым выходам Adruino подключены соответствующие выводы дисплея. Основное тело loop() пустое, поскольку инициализация и вывод текста в дисплей целиком происходит в setup(). Для нас это означает, что sketch отработает один раз после нажатия на reset, сразу после включения питания или же сразу после загрузки sketch-а в Arduino.
Итак, все готово, можно включать. Если дисплей пуст, обратите внимание на VO (питание сегментов, пин 3). Я взял потенциометр 20К, включил его между GND и 5V, а среднюю точку подключил к VO. Немного повращав отверткой ползунок, я легко добился читаемости символов:
Светодиодная подсветка "сидит" на двух последних пинах дисплейной колодки: 15 и 16 (анод и катод). Подключать ее вовсе не обязательно, но, при желании можно также воспользоваться типовой схемой:
Я использовал R = 34 Ом, яркость была средняя...
Подводя итог: LCD к Arduino можно подключить довольно быстро: есть библиотека для работы, хоть и максимально упрощенная (читать из дисплея, а также загружать знакогенератор она не умеет). Если верить документации, ток потребления дисплея = 1,2 мА, а LED-подсветки @ 4,2 В = 130 мА.
Встречаются модификации с разным цветом и типом подсветки (или вообще без нее), другим количеством рядов (1,2,4), другим количеством знакомест в ряду (8,16). Если все равно не хватает, надо подумать о графическом дисплее, но про это - как-нибудь в другой раз ;)
Автору респект, т.к. накупил я тут партию подобных дисплеев, а вот подключить руки не дошли... А Arduino тоже есть, так что можно теперь поиграться да и использовать в поделках с мегой, это же тоже самое почти что и Arduino, кстати Arduino можно использовать таким образом как и программатор. Точнее писать код под Arduino, а использовать не в нем... Есть так же графический дисплей Nokia6610, подключал к Arduino Nano, сэмпэл заработал но много непонятного...
ОтветитьУдалитьКстати как по поводу русских букв? Тут только английские а русские по таблице не попадают
ОтветитьУдалитьПо поводу русских букв: никакой кодировки вообще нет.
ОтветитьУдалитьАнглийские буквы на месте, а дальше добавлены недостающие русские, т.е. буква "Ш" или "Г" - есть, а вот отдельных кодов для русских "А" или "С" нет - надо использовать их латинские аналоги.
Такое ощущение, что китайцы просто запихали в дисплей максимальное количество разных символов, а соблюдение кодировки не было для них высокоприоритетной задачей.
Готовлю статью про то, как получить возможность выводить по-русски на эти дисплеи в Arduino.
А вот еще идея - подсветку подключить к ШИМ-выходу (ну может через ключ, чтоб гарантированно порт не пожечь), тогда можно будет плавно регулировать яркость, да еще и фотодиод задействовать, тогда подсветка будет автоматическая :-)
ОтветитьУдалитьДобрый день.
ОтветитьУдалитьУ меня есть желание сделать инфо панель на LCD HD44780.
Но так как я в программирование не силен может кто поможет или укажет в каком направлении рыть.
Задача такая.От кнопки " по минусу" приходит сигнал и на панели высвечивается сообщение (Открытые двери,вода,масло,и.т.п...) в письменном виде. Может кто знает пример для наглядности типа - нажал кнопку вышло сообщение на LCD
Буду очень признателен.
Ещё МЭЛТ делает хорошие дисплеи, также совместимые с max7219
ОтветитьУдалитьТо есть, s/max7219/HD44780 конечно же
ОтветитьУдалитьСегодня наконец получил по почте CraftDuino и LCD дисплей.
ОтветитьУдалитьПодключил все как указано здесь: robocraft.ru/page/faq/#q15 (правда вместо потенциометра использовал обычный резистр на 20, 10 и 4.7 кОм). По Вашей схеме не понятно как подключать.
Программу использовал стандартную из примера библиотеки (код не привожу, он у всех есть, в комментах используемые порты совпадают с портами из рисунка схемы подключения):
LiquidCrystal Library - Hello World
This sketch prints "Hello World!" to the LCD
and shows the time.
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
В итоге дисплей вообще пустой.
Можно ли как то проверить дисплей, работает ли он вообще? Что посоветуете делать?
Советую все-таки поискать потенциометр.
ОтветитьУдалитьЯ в свои посылки с дисплеями его всегда вкладываю - поверьте, не просто так ;)
Добрый день! Подскажите, пожалуйста как подружить с вашей библиотекой такой дисплей
ОтветитьУдалитьhttp://www.banggood.com/IIC-I2C-1602-Blue-Backlight-LCD-Display-Module-For-Arduino-p-950726.html?lang=en-GB ?
Никак, она не поддерживает I2C. Только возьмите на заметку, что если у этого дисплея нет русского знакогенератора, то русифицировать его не получится. Об этом почему-то часто забывают любители китайских интернет-магазинов.
УдалитьЗдравствуйте! глупый вопрос... если я подключу дисплей - смогу ли я подключать другие устройства? к примеру ргб светодиод, фоторезистор и две кнопки? или ард уно не хватит для этого?
ОтветитьУдалитьПочему же, очень даже сможете. На Arduino Uno больше половины пинов останется свободными - к ним и подключайте.
Удалитьспасибо за ответ! а если такой экран? http://ru.aliexpress.com/item/Free-shipping-2-4-inch-TFT-touch-LCD-Module-LCD-Screen-Module-For-Arduino-UNO-R3/2030189096.html?spm=2114.03020208.3.21.KA00Cn&ws_ab_test=searchweb201556_3_79_78_77_92_91_80,searchweb201644_5,searchweb201560_9
УдалитьНе советую Aliexpress... разве что только продавец проверенный. Если "такой экран", то "Использует цифровые Контакты 5-13 и аналогового 0-3. Это означает, что вы можете использовать Цифровые контакты 2, 3 и аналогового 4 и 5. Контактный 12 доступен, если не с помощью MicroSD".
УдалитьТак что контактов на UNO останется впритык, фоторезистор и две кнопки влезут, а вот для RGB-светодиода надо отказаться от MicroSD.