Подключение LCD 1602 по I2C к Arduino
Символьный дисплей 16×2
LCD 1602 на I2C-переходнике подключается к Arduino Uno и Nano четырьмя проводами: 5 В, земля, SDA на A4, SCL на A5. Экран занимает два вывода вместо шести.
Схема подключения LCD 1602 по I2C к Arduino
| LCD 1602 с I2C | Arduino Uno |
|---|---|
| SCL | A5 |
| SDA | A4 |
| VCC | 5V |
| GND | GND |
Схема из примера «Arduino Uno: дисплей LCD 16x2 по I2C».
Выводы LCD 1602 с I2C
| Вывод | Назначение |
|---|---|
| SCL | тактовая линия I2C |
| SDA | линия данных I2C |
| VCC | питание 5 В |
| GND | общий провод |
Код для Arduino
#include <LiquidCrystal_I2C.h>
// Дисплей на I2C. Ни один вывод шины в скетче не назван — и это не
// упущение: у Uno менять их всё равно нельзя. SDA это A4, SCL это A5,
// они разведены внутри контроллера, и библиотека берёт их сама.
//
// На ESP32 всё наоборот: там Wire.begin(sda, scl) принимает любые
// выводы, и перенесённая схема с 21 и 22 здесь просто не заработает.
//
// Адрес обычно 0x27, реже 0x3F. Это свойство платы дисплея, а не
// микросхемы, и узнают его сканером шины.
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("PinPort");
lcd.setCursor(0, 1);
lcd.print("Arduino Uno");
}
void loop() {
// Счётчик секунд во второй строке. Пробелы в конце затирают остаток
// прошлого числа: дисплей не очищает знакоместа сам, и после 10 из
// 100 осталась бы висеть двойка.
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
lcd.print(" c ");
delay(200);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на Arduino
- Контраст регулируется подстроечным резистором на задней стороне модуля: если текста не видно, прокрутите его.
- Адрес 0x27 или 0x3F: проверьте сканером I2C.
Частые ошибки при подключении к Arduino
- Вызвать
lcd.init()безlcd.backlight(): экран работает, но без подсветки текст плохо виден. - Перепутать A4 и A5: экран не отвечает и ничего не показывает.
- Подсветка горит, символов нет — не выставлен контраст: покрутите синий подстроечный резистор на переходнике.
- Пустой экран без подсветки — неверный адрес. Проверьте сканером I2C оба варианта: 0x27 и 0x3F.
- Кириллица «кракозябрами»: в знакогенераторе большинства дисплеев русских букв нет. Нужен дисплей с кириллицей или свои символы.
lcd.clear()в каждом проходеloop— экран мерцает. Перезаписывайте только изменившиеся символы.
Ещё по теме
Другие детали для Arduino
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″MAX7219TM1637Модуль релеKY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодПолзунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21D