← На главную

Об использовании экранчиков 1602 с I2C-адаптером

Ранее в заметке Научился выводить текст на ЖК-индикатор из Arduino мы с вами разобрались, как работать с текстовыми экранчиками 1602. Всем-то эти экранчики хороши, но требуют для подключения больно уж много проводов. Поэтому на практике их часто используют через адаптер с I2C интерфейсом на базе чипа PCF8574. Адаптеру нужно всего лишь 2 провода, не считая питания. Всего к I2C шине может быть подключено до 127 устройств, используя все те же 2 провода. Давайте же разберемся, как работать с такими адаптерами.

Fun fact! На AliExpress экранчик 1602 вместе с I2C адаптером к нему и доставкой в Россию стоит 100 рублей (1.75 $). На момент написания заметки это самый дешевый из известных мне экранчиков для DIY проектов.

Итак, есть Arduino Uno и экранчик с I2C адаптером, имеющим 4 пина. Пин VCC подключаем к 5 В, GND подключаем к земле, SDA – к пину A4 Ардуины, а SCL – к A5. Пины A4 и A5 – это стандартные пины для I2C шины у Arduino Uno.

Далее нам нужно определить I2C адрес адаптера. Для этого проще всего воспользоваться скетчем I2C Scanner. В моем случае адрес оказался 0x3F. Путем припаивания перемычек к адаптеру (соответствующие места помечены на нем, как A0, A1 и A2) адрес можно изменить. Таким образом можно разрешить конфликт адресов у нескольких устройств.

Для вывода текста на экран воспользуемся библиотекой LiquidCrystal_I2C. Используется она практически так же, как уже знакомая нам библиотека LiquidCrystal:

#include <Arduino.h> #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C lcd(0x3F, 16, 2); void setup() { lcd.begin(); lcd.setCursor(0, 0); lcd.print("Current time:"); } void loop() { delay(100); lcd.setCursor(0, 1); unsigned long tstamp = millis(); int h = tstamp / 1000 / 60 / 60; int m = (tstamp / 1000 / 60) % 60; int s = (tstamp / 1000) % 60; String line = String(h) + "h " + String(m) + "m " + String(s) + "s"; int len = line.length(); while(len < 16) { line += " "; len++; } lcd.print(line); }

Результат:

Arduino и экранчик 1602 с I2C-адаптером

Как видите, все оказалось предельно просто. Полную версию кода вы найдете на GitHub. Если вам понравилась эта заметка, вас также может заинтересовать пост Использование ЖК-экранчика от Nokia 5110 в Arduino. Вопросы и дополнения, как обычно, всячески приветствуются.

Дополнение: Вас также могут заинтересовать посты Работаем с LCD на базе HD44780 без библиотек и Микроконтроллеры STM32: работа с экранчиком 1602 по I2C.