Подключение I2C дисплея к ардуино. Русификация текста.
Вставка
- Опубліковано 30 січ 2025
- Сегодня вы узнаете про подключение I2C дисплея к Ардуино, а точнее как сделать из простого LCD1602 i2c дисплей используя модуль I2C. А ещё как изменять адрес на шине I2C, как выводить русский(кириллицу) шрифт и многое другое.
Скетчи используемые в видео можно скачать на сайте "Ардуино для начинающих".
arduino-kid.ru/...
Помочь в развитии канала, и на покупку новых модулей и датчиков yoomoney.ru/to...
Официальный сайт arduino-kid.ru
Группа в контакте club196...
Почта arduino-kid@yandex.ru
Подпишитесь на канал
ссылка на канал / Ардуинодляначинающих
Теги:
#ардуино #arduino #lcd1602 #ардуинодляначинающих #ардуиноуроки
Ссылки на продавцов где есть модули применяемые в примерах.
Arduino NANO - alii.pub/699fxy
модуль I2C для ЖК-дисплеев 1602 и 2004 - alii.pub/699yqt
ЖК-дисплей 1602 и 2004 - alii.pub/699yzr
Странно, что никто не написал про адрес I2C, ну что ж, напишу, может кому пригодится (хотя в даташите на микруху модуля всё есть). Перемычки для выбора адреса (A0, A1, A2) одной стороной идут на ноги микросхемы и подтянуты резисторами к Vcc, а другой стороной на землю, соответственно, когда перемычки не замкнуты на ногах микросхемы висят логические единицы, а если их замкнуть, то появятся нули. Теперь про сами адреса. Когда ни одной перемычки нет сканер показывает адрес 0х27 (0х означает, что число после этого указано в HEX формате) и если его перевести в двоичную систему, то получим B00100111 (B означает двоичную систему), как можно заметить, в конце стоят три единицы, они собственно и соответствуют нашим перемычкам. когда автор замкнул перемычку A0, получилось число 0x26(B00100110), перемычку A1 - 0x25(B00100101) ну и перемычку A2 - 0x23(B00100011). Автор вводит нас и себя в заблуждение, утверждая что адресов можно настроить только 4, так как в действительности можно ставить не одну перемычку, а 2 или 3, соответственно адресов будет 8, от 0x20(B00100000) - все перемычки замкнуты, до 0x27(B00100111) - все перемычки разомкнуты
Стараюсь всегда такие экраны по i2c подключать.Спасибо за видео
Как всегда-полезно,познавательно,поучительно...,
Отлично👍😁
С этими экранами ваще конечно отдельная история, заказал кириллический экран, но без сторонних библиотек не обойтись. В с++ строка это массив типа char, а чар это 255 символов, 255 это 1 байт. Если в IDE utf, то кириллица это как две буквы. Дисплей соответственно тоже однобайтовые последовательности печатает, поэтому нужно переконвертировать из utf в 1251.
Вроде бы ок, прекрасно, но дальше мы не можем просто плюсануть определенный сдвиг к 192...255, символы вроде как зашиты по порядку, но между ними есть пропуски, иногда 1, иногда сразу 3 буквы не из кириллической, а из латиницы, т.е. приходится мапить каждый символ в строке 66 ветками switch, это примерно удваивает размер скетча по сравнению с оригинальной библиотекой. Это я анализировал и пытался улучшить библиотеку от RobotClass, единственное, что можно сделать - в верхний регистр повышать и ё делать е
Однозначно 👍 а можете сделать вольтамперметр на сегментных индикаторах
На сегментах не знаю, а вот на OLED Дисплее в планах есть. Я как раз недавно его получил
А можно как-то зделать таймер обратного отсчёта, токо не на ардуино нана а на той что в видео?
Наверно эта библиотека много места занимает так как загружает все символы, как заглавные так и прописные. Думаю для оптимизации памяти все же свое писать.
Здравствуйте а вы знаете как поменять язык в ардуино?
супер
Вот этот адаптер i2c он годится для использования с lcd дисплеем 162А- D?
Не знаю, надо смотреть даташит. Если у него 16 выходов и они расположена как на моём дисплее и в том же порядке, то можно.
@@arduino2000
1-GND 2-VDD 3-VO 4-RS 5-R/W 6-E 7-DB0 8-DB1-.........14-DB7
Расположены в два ряда : нечетные один ряд с 1, 3, 5 , 7, 9, 11, 13
четные второй ряд 2, 4, 6, 8, 10 , 12 , 14
Всего 14 выходов . Нет двух выходов которые называются подсветка
Обычно подходит для 1802
к меня русские символы выводятся на экран но не сохраняются в пзу памяти а сохраняется в озу памяти. после перезагрузки устройства все обнуляется. как прописать русские буквы в таблице знакогенератора и прошить их в пзу память дисплея?
эта библиотека работает даже если в lcd нет русских символов ????
да. Но ОДНОВРЕМЕННО на экран может выводить не больше 8 не латинских символов.
RFID rc552 можно добавить?
На канале полно видео про Rfid с выводом на дисплей
Dht11 и lcd 1602
#include // Добавляем необходимые библиотеки
#include
#include "DHT.h"
#define DHTPIN A0 // к какому пину будет подключен сигнальный выход датчика
//выбор используемого датчика
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
//инициализация датчика
DHT dht(DHTPIN, DHTTYPE);
byte degree[8] = // кодируем символ градуса
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея
void setup()
{
lcd.init(); // Инициализация lcd
lcd.backlight(); // Включаем подсветку
lcd.createChar(1, degree); // Создаем символ под номером 1
Serial.begin(9600);
dht.begin();
}
void loop() {
// Добавляем паузы в несколько секунд между измерениями
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Read temperature as Fahrenheit
float f = dht.readTemperature(true);
// Выводим показания влажности и температуры
lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки
lcd.print("Hum = % "); // Выводим текст
lcd.setCursor(7, 0); // Устанавливаем курсор на 7 символ
lcd.print(h, 1); // Выводим на экран значение влажности
lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки
lcd.print("Temp = \1C "); // Выводим текст, \1 - значок градуса
lcd.setCursor(7, 1); // Устанавливаем курсор на 7 символ
lcd.print(t,1); // Выводим значение температуры
}
лучший просто!
Пишите в print заглавными буквами, тогда косяков не будет
Вроде бы как 0х24 это адрес датчика температуры дс18 вроде
@Ural Men точно! Забыл уже всё, надо подтянуть
Почему ардуинка не может найти I2C]
Не 4 варианта адресов I2C, а 7 адресов! Можно замыкать по 2 перемычки, а можно и все 3 перемкнуть! Тогда и порядок адресов будет по порядку!!
Спасибо. Не знал
@Ural Men 000, 100, 010, 001, 110, 011, 101, 111... точно, 8 вариантов)
@Ural Men а я забыл посчитать вариант "101"... потому и подумал, что 7 вариантов)
Добрый вечер! Скажите пожалуйста, почему вы подключили экран к выводам А5 и А4, а не к SDA и SCL?
А разве это не одно и тоже? Это шина l2c. Только A4 - SDA, A5-SCL
@@arduino2000 понял вас, спасибо! Не знал о таком приколе
А в чем прикол то? Это азы Ардуино.
есть непрошиваемые контроллеры. надо и об этом говорить а то народ мучается с прошивкой а толку нет и не будет
Какая же это русификация? Это просто костыли. Русификация этих дисплеев невозможна если этого не сделал производитель
но это работает.
@@arduino2000 да, работает :)
I2c сканер скетч
#include
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("
I2C Сканер");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Сканирование...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C устройство найдено по адресу 0x");
if (address