Ранее в заметке Научился выводить текст на ЖК-индикатор из 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 .