LCD дисплей
Существует большое количесвто разновидностей текстовых, или как их ещё называют знакосинтезирующих, жидкокристаллических экранов. Наиболее распространены дисплеи на базе чипов HD44780 от Hitachi, KS0066 от Samsung или совместимых с ними. Для работы с такими экранами существует стандартная Arduino-библиотека Liquid Crystal.
Несмотря на простоту работы с такими дисплеями, огромным их минусом является то, что они требую для своего подключения непозволительно много пинов. Тем не менее, к плюсам таких дисплеев можно отнести их низкую стоимость и большую распространённость.
Пины дисплея нумеруются слева-направо с 1-го по 16-й. Для удобства, последовательность подключения пинов дисплея к пинам Arduino представлена в таблице:
Вывод | Обозначение | Пины Arduino |
---|---|---|
1 | GND | GND |
2 | Vcc | 5V |
3 | Vo | GND |
4 | RS | 12 |
5 | R/W | GND |
6 | E | 11 |
7 | DB0 | — |
8 | DB1 | — |
9 | DB2 | — |
10 | DB3 | — |
11 | DB4 | 5 |
12 | DB5 | 4 |
13 | DB6 | 3 |
14 | DB7 | 2 |
15 | Vcc | 5V |
16 | GND | GND |
Для того, чтобы уменьшить количество управляющих пинов Arduino и повысить удобство использования таких дисплеев, в настоящее время практически все ЖК-дисплеи комплектуются I2C/SPI конвертером. Этот конвертер позволяет управлять экраном всего лишь по 4-м проводам, 2 из которых служат для питания дисплея. Удобно и то, что порты передачи данных по протоколу I2C уже есть на плате Arduino (пины подписаны с обратной стороны платы).
Внешний вид | Изображение на схеме |
Пример подключения к Arduino | |
С использованием I2C/SPI конвертера, схема подключения значительно упрощается:
Вывод | Обозначение | Пин Arduino Uno |
---|---|---|
1 | GND | GND |
2 | Vcc | 5V |
3 | SDA | SDA |
4 | SCL | SCL |
Для работы с модулем I2C, нам потребуется скачать и установить библиотеку LiquidCrystal I2C, после этого, можно протестировать дисплей, написав классическую программку “Hello, world”:
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для дисплея LiquidCrystal_I2C lcd(0x27,16,2); // установки нашего дисплея // обратите внимание, если после загрузки скетча в плату, у вас наблюдаются // проблемы с выводом информации, попробуйте вписать в скобках значение // 0x20 или 0x3F void setup() { lcd.init(); // инициализируем дисплей lcd.backlight(); // инициализируем подсветку lcd.print("Hello, world I2C!"); // выводим надпись "Hello, world I2C!" } void loop() { lcd.setCursor(0, 1); // помещаем курсор на первую ячейку 2-й строки lcd.print(millis() / 1000); // выводим количество секунд работы Arduino lcd.setCursor(4,1); // помещаем курсор на 5-й символ 2-й строки lcd.print("display 16x2"); //выводим надпись "display 16x2" }
Обратите внимание, нумерация строк и символов внутри строки начинается с нуля.