Підключення символьного дисплея до Arduino шині I2C, схема та програмний код для роботи з LCD 1602, LCD 2004.
LCD1602 рідкокристалічний Liquid Crystal Display символьний дисплей на 16 символів в два рядки. Кожен символ складається з матриці 5х8. Побудований на чіпсеті HD44780, або сумісного з ним.
Схема підключення
Arduino Uno | LCD1602 I2C (2004) |
---|---|
5V | 5V |
GND | GND |
A4 (SCL) | SCL |
A5 (SDA) | SDA |
Код для Arduino Uno
У PlatformIO створюєм новий проект, обираєм мікроконтролер Arduino Uno, та копіюєм наступний код у файл main.cpp в папці src.
Для того щоб додати бібліотеку LiquidCrystal_I2C до вашого проекту, в кінець файлу platformio.ini додайте наступний рядок.
lib_deps = marcoschwartz/LiquidCrystal_I2C@^1.1.4
Рядок який потрібно додати
[env:uno]
platform = atmelavr
board = uno
framework = arduino
lib_deps = marcoschwartz/LiquidCrystal_I2C@^1.1.4
Загальний вигляд
Також бібліотеку можна підключити через меню. Перейдіть PIO Home > Libraries > Registry, у пошуку введіть назву бібліотеки у нашому випадку LiquidCrystal_I2C. Виберіть бібліотеку перейшовши в неї, натисніть Add to Project , виберіть проект до якого слід додати цю бібліотеку та натисніть Add.
#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Бібліотека для роботи з LCD по I2C.
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2c адреса дисплея, колонки, рядки.
//LiquidCrystal_I2C lcd(0x27, 20, 4); // Для диплея LCD 2004
int count = 0; // Змінна для лічильника.
void setup()
{
lcd.init(); // Ініціалізуємо дисплей.
lcd.backlight(); // Вмикаємо підсвітку.
lcd.setCursor(0, 0); // Курсор на першу колонку, перший рядок.
lcd.print("I2C display"); // Виводимо текст.
lcd.setCursor(5, 1); // Курсор на 6 колонку, 2 рядок.
lcd.print("Qazf.com.ua"); // Виводимо текст.
delay(2000); // Спимо 2 секунди.
lcd.clear(); // Очищаємо весь дисплей.
lcd.setCursor(0, 0); // Курсор на першу колонку, перший рядок.
lcd.print("Counter"); // Виводимо текст.
}
void loop()
{
lcd.setCursor(0, 1); // Курсор на першу колонку, другий рядок.
lcd.print(count); // Виводимо лічильник.
count++; // Збільшуєм лічильник на одиницю.
delay(1000); // Спимо 1 секунду.
}
Підключаємо USB кабель, компілюємо та завантажуєм у мікроконтролер.
Номерація рядків та колонок починається з 0, тобто пеший рядок під номером 0, другий підномер 1, третій під номером 2 . . .
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Можливі проблеми та їх вирішення
Якщо на дисплеї символи не відображаються або відображаються не чітко відрегулюйте контраст, регулювальний резистор позначено на фото нжче.
Перевірте правильність підключення SCL та SDA.
Також I2C адреса дисплею може бути не 0х27, для пошуку підключених пристроїв скористайтесь статтею Адреси пристоїв на шині I2C, та замініть в коді вище вашою якщо вона відрізняється.