I2C дисплей Arduino: пошаговая инструкция по подключению и программированию

Как подключить I2C дисплей к Arduino. Какие преимущества дает использование I2C интерфейса для LCD экранов. Как правильно настроить и запрограммировать I2C дисплей на Arduino. Какие библиотеки нужны для работы с I2C LCD. Как вывести текст и графику на I2C дисплей с Arduino.

Что такое I2C дисплей и зачем он нужен

I2C дисплей — это LCD экран с установленным I2C адаптером, позволяющим значительно упростить подключение к микроконтроллеру. Главное преимущество I2C дисплеев — возможность управлять экраном всего по двум проводам, что экономит пины на Arduino.

Стандартный LCD дисплей подключается минимум по 6 проводам — 4 линии данных и 2 управляющих. С I2C адаптером достаточно всего 2 провода — SDA и SCL. Это позволяет подключать дисплей даже к микроконтроллерам с малым количеством выводов.

I2C дисплеи бывают разных размеров — самые популярные 16×2 и 20×4 символов. Они отлично подходят для вывода текстовой информации в Arduino проектах.


Подключение I2C дисплея к Arduino

Для подключения I2C дисплея к Arduino понадобится всего 4 провода:

  • VCC — питание +5В
  • GND — общий провод
  • SDA — линия данных I2C
  • SCL — тактовая линия I2C

Схема подключения I2C дисплея к Arduino Uno:

  • VCC дисплея → 5V Arduino
  • GND дисплея → GND Arduino
  • SDA дисплея → A4 Arduino
  • SCL дисплея → A5 Arduino

Для других плат Arduino порты SDA и SCL могут отличаться. Например, на Arduino Mega это пины 20 и 21 соответственно.

Настройка I2C адреса дисплея

Каждое I2C устройство имеет свой уникальный адрес. Для LCD дисплеев стандартный адрес — 0x27. Но иногда он может отличаться.

Чтобы узнать адрес вашего дисплея, можно использовать специальный I2C сканер. Это простой скетч, который перебирает все возможные I2C адреса и выводит в Serial Monitor обнаруженные устройства.

Вот пример кода I2C сканера:

«`cpp #include void setup() { Wire.begin(); Serial.begin(9600); Serial.println(«I2C Scanner»); } void loop() { byte error, address; int nDevices; Serial.println(«Scanning…»); nDevices = 0; for(address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) Serial.print("0"); Serial.print(address, HEX); Serial.println(" !"); nDevices++; } else if (error == 4) { Serial.print("Unknown error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); } ```

Загрузите этот скетч на Arduino и откройте Serial Monitor. Вы увидите адрес вашего I2C дисплея.


Библиотека для работы с I2C дисплеем

Для удобной работы с I2C LCD дисплеем рекомендуется использовать специальную библиотеку. Одна из самых популярных — LiquidCrystal_I2C.

Установить библиотеку можно через менеджер библиотек Arduino IDE. Выберите «Sketch» → «Include Library» → «Manage Libraries», найдите «LiquidCrystal I2C» и нажмите «Install».

После установки библиотеки вы сможете использовать ее в своих скетчах:

«`cpp #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); // Задаем адрес 0x27 для дисплея 16 символов в 2 строки void setup() { lcd.init(); // Инициализация дисплея lcd.backlight(); // Включаем подсветку lcd.setCursor(0,0); // Устанавливаем курсор в начало первой строки lcd.print(«Hello, World!»); // Выводим текст lcd.setCursor(0,1); // Переходим на вторую строку lcd.print(«I2C LCD Test»); // Выводим еще текст } void loop() { // Ничего не делаем в цикле } «`

Этот скетч инициализирует I2C дисплей и выводит на него приветственное сообщение.


Вывод текста на I2C дисплей

Для вывода текста на дисплей используются следующие основные функции библиотеки LiquidCrystal_I2C:

  • lcd.setCursor(column, row) — устанавливает курсор в заданную позицию
  • lcd.print("text") — выводит текст начиная с текущей позиции курсора
  • lcd.clear() — очищает экран
  • lcd.home() — возвращает курсор в начальную позицию (0,0)

Пример вывода бегущей строки на I2C дисплей:

«`cpp #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); String message = «This is a scrolling message on I2C LCD!»; int messageLength = message.length(); int lcdWidth = 16; void setup() { lcd.init(); lcd.backlight(); } void loop() { for (int i = 0; i <= messageLength - lcdWidth; i++) { lcd.clear(); lcd.setCursor(0, 0); lcd.print(message.substring(i, i + lcdWidth)); delay(300); } } ```

Этот скетч создает эффект бегущей строки, прокручивая длинное сообщение по экрану дисплея.

Вывод специальных символов на I2C дисплей

I2C LCD дисплеи позволяют создавать и выводить пользовательские символы. Для этого используется функция lcd.createChar().

Пример создания и вывода специального символа:

«`cpp #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); byte heart[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 }; void setup() { lcd.init(); lcd.backlight(); lcd.createChar(0, heart); // Создаем символ сердца и сохраняем его под номером 0 lcd.setCursor(0, 0); lcd.print(«Custom symbol:»); lcd.setCursor(0, 1); lcd.write(0); // Выводим созданный символ } void loop() { // Ничего не делаем в цикле } «`

Этот скетч создает символ сердечка и выводит его на экран дисплея.


Управление подсветкой I2C дисплея

Многие I2C LCD дисплеи имеют управляемую подсветку. Библиотека LiquidCrystal_I2C позволяет включать и выключать подсветку программно.

Основные функции для управления подсветкой:

  • lcd.backlight() — включает подсветку
  • lcd.noBacklight() — выключает подсветку

Пример управления подсветкой дисплея:

«`cpp #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); void setup() { lcd.init(); lcd.backlight(); lcd.print(«Backlight ON»); } void loop() { delay(3000); lcd.noBacklight(); delay(3000); lcd.backlight(); } «`

Этот скетч включает и выключает подсветку дисплея каждые 3 секунды.

Вывод показаний датчиков на I2C дисплей

Одно из самых популярных применений I2C дисплеев — вывод показаний различных датчиков. Рассмотрим пример вывода данных с датчика температуры и влажности DHT11 на I2C LCD дисплей.

Для работы с датчиком DHT11 потребуется установить библиотеку DHT sensor library.

«`cpp #include #include #include #define DHTPIN 2 // Пин, к которому подключен датчик DHT11 #define DHTTYPE DHT11 // Тип датчика DHT 11 LiquidCrystal_I2C lcd(0x27, 16, 2); DHT dht(DHTPIN, DHTTYPE); void setup() { lcd.init(); lcd.backlight(); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); lcd.clear(); lcd.setCursor(0, 0); lcd.print(«Temp: «); lcd.print(t); lcd.print(» C»); lcd.setCursor(0, 1); lcd.print(«Humidity: «); lcd.print(h); lcd.print(«%»); delay(2000); } «`

Этот скетч считывает данные с датчика DHT11 и выводит температуру и влажность на I2C LCD дисплей, обновляя показания каждые 2 секунды.


Заключение

I2C LCD дисплеи — это удобное и функциональное решение для вывода информации в проектах на базе Arduino. Они просты в подключении, требуют минимум проводов и предоставляют широкие возможности для отображения текста и простой графики.

В этой статье мы рассмотрели основные аспекты работы с I2C дисплеями на Arduino:

  • Подключение дисплея к Arduino
  • Настройка I2C адреса
  • Использование библиотеки LiquidCrystal_I2C
  • Вывод текста и специальных символов
  • Управление подсветкой
  • Применение дисплея для вывода показаний датчиков

Используя эти знания, вы сможете легко интегрировать I2C LCD дисплей в свои Arduino проекты, создавая информативные и интерактивные устройства.


OLED дисплей 0.96″ 128×64, I2C, SSD1306 синий

Подключение OLED дисплея I2C к NANO и вывод Русского шрифта:

А теперь более подробно, что мы делали.

Мы использовали:

1. Arduino NANO V 3.0

2. OLED display 0.96″ I2C (IIC)

3. Макетная плата для монтажа без пайки

4. Библиотека с поддержкой русского и украинского языка OLED I2C

Дисплей подключаем к ARDUINO NANO по следующей схеме:

Вход питания дисплея VDD можно было бы подключить к 3,3V или 5V ARDUINO, но у нас задача обойтись без проводов. Поэтому мы установим цифровому порту ARDUINO «D2» значение HIGHT, это значит, что на pin «D2» ARDUINO подаст 5 вольт. Для сборки используем макетную плату:

Наш Скетч:

Устанавливаем библиотеку OLED_I2C (если не была установлена) и компилируем. Каждая строка в скетче подробно описана:

Таблица соответствия символов:

Русский символ

Символ, заглавной буквы

Символ, прописной буквы

А, а

F

f

Б, б

<

,

В, в

D

d

Г, г

U

u

Д, д

L

l

Е, е

T

t

Ж, ж

:

;

З, з

P

p

И, и

B

b

Й, й

Q

q

К, к

R

r

Л, л

K

k

М, м

V

v

Н, н

Y

y

О, о

J

j

П, п

G

g

Р, р

H

h

С, с

C

c

Т, т

N

n

У, у

E

e

Ф, ф

A

a

Х, х

{

[

Ц, ц

W

w

Ч, ч

X

x

Ш, ш

I

i

Щ, щ

O

o

Ъ, ъ

}

]

Ы, ы

S

s

Ь, ь

M

m

Э, э

~

`

Ю, ю

>

.

Я, я

Z

z

Для простоты написания, переключаемся на английскую раскладку и набираем текст Русскими буквами!

Как использовать ЖК-дисплей с подсветкой с ранцевым модулем Arduino и I2C

  • Автор сообщения:

Ардуино Уно Модуль дисплея LCD1602 I2C
ВКЦ
Земля ЗЕМЛЯ
А4 или ПДД ПДД
A5 или SCL СКЛ