Об использовании экранчиков 1602 с I2C-адаптером
19 июня 2017
Ранее в заметке Научился выводить текст на ЖК-индикатор из 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 "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);
}
Результат:
Как видите, все оказалось предельно просто. Полную версию кода вы найдете на GitHub. Если вам понравилась эта заметка, вас также может заинтересовать пост Использование ЖК-экранчика от Nokia 5110 в Arduino. Вопросы и дополнения, как обычно, всячески приветствуются.
Дополнение: Вас также могут заинтересовать посты Работаем с LCD на базе HD44780 без библиотек и Микроконтроллеры STM32: работа с экранчиком 1602 по I2C.
Метки: AVR, Электроника.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.