Об использовании экранчиков 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 <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.

Метки: , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.