В этом уроке по Arduino UNO мы рассмотрим подключение LCD. Среда Arduino IDE уже идет с примером (скетчем) по подключению LCD-дисплея Hitachi HD44780. Мы будем использовать аналогичный LCD: Pololu 16×2 LCD 773 или 772.
Чтобы не повторяться с оригинальным примером из IDE, где для управления контрастностью дисплея использовался потенциометр, мы внесем некоторые изменения в проект. Используя один из выходом ШИМ с конденсатором (и т.о. сделаем простейший ЦАП), мы будем управлять контрастностью с программы, где «жестко» будет прописано значение. Вывод 9 Arduino, который используется как ШИМ, соединен к ногой управления контрастностью Vo LCD. Конденсатор 100 мкФ, соединен между выходом ШИМ и общим.
Контрастность LCD зависит от величины напряжения, которое подается на вход управления. Чем больше напряжение, тем меньше контрастность и наоборот. Напряжение должно быть около 0.5-1 В, но ещё зависит от окружающей температуры. В нашем скетче значение ШИМ установлено на 50 (примерно 20% заполнение), что обеспечивает уровень выходного напряжения около 1 В. Соответственно вы можете увеличивать или уменьшать данное значение для получения необходимого уровня контрастности.
Ниже вы можете видеть пинаут LCD-Arduino
LCD Pin
Символ
Назначение
Arduino Pin
1
Vss
Общий (0 V)
Общий (0 V)
2
Vdd
Питание (4.5 – 5.5 V)
+5V
3
Vo
Управ. контрастностью
9
4
RS
H/L register select signal
12
5
R/W
H/L read/write signal
Общий (0 V)
6
E
H/L enable signal
11
11
DB4
H/L data bus for 4-bit mode
5
12
DB5
H/L data bus for 4—bit mode
4
13
DB6
H/L data bus for 4-bit mode
3
14
DB7
H/L data bus for 4-bit mode
2
На картинке ниже, макет присоединения
Ниже представлен скетч для Arduino. Значение контрастности на ШИМ-выходе устанавливается при инициализации программы, однако вы можете доработать проект, сделав внешнее управление контрастностью. К примеру сделав 2 кнопки + и -, соответственно внеся необходимые изменения в программу.
/*
Демонстрация работы с 16×2 LCD дисплеем. Библиотека LiquidCrystal
работает со всеми LCD совместимыми с Hitachi HD44780.
Данный скетч отображает на LCD «Hobbytronics».
Скетч основан на оригинальном скетче Arduino
http://www.arduino.cc/en/Tutorial/LiquidCrystal
с модификациями, позволяющими вручную устанавливать
контрастность дисплея
Схема подключения:
* LCD RS пин к цифр. выходу 12
* LCD Enable пин к цифр. выходу 11
* LCD R/W к Общему
* LCD VO пин (пин 3) к ШИМ-выходу 9
* LCD D4 пин к цифр. выходу 5
* LCD D5 пин к цифр. выходу 4
* LCD D6 пин к цифр. выходу 3
* LCD D7 пин к цифр. выходу 2
*/
#include // подключаем библиотеку
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // инициализация библиотеки с перечнем задействованных выводов
void setup() {
pinMode(9, OUTPUT);
analogWrite(9, 50); // устанавливаем ШИМ выход
lcd.begin(16, 2); // устанавливаем кол-во столбцов и строк
lcd.print(» HobbyTronics»); // печать сообщения на LCD
}
void loop() {
// устанавливаем курсор в 0-ом столбце, 1 строка (начинается с 0)
lcd.setCursor(0, 1);
lcd.print(millis()/1000); // печать числа секунд после сброса
}
Оригинал статьи на английском языке (перевод Колтыков А.В. )