Вот несколько шагов для решения проблемы с LCD дисплеем по I2C:
1. Проверьте правильность I2C адреса:
- Адрес 0x27 является стандартным, но может отличаться. Используйте I2C сканер для определения точного адреса:
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("I2C Scanner");
}
void loop() {
byte error, address;
int devices = 0;
for(address = 1; address < 127; address++) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C устройство найдено по адресу 0x");
if (address < 16) Serial.print("0");
Serial.println(address, HEX);
devices++;
}
}
if (devices == 0) Serial.println("Устройства не найдены");
delay(5000);
}
2. На Arduino Pro Micro пины I2C отличаются:
- SDA должен быть подключен к пину 2 (D2)
- SCL должен быть подключен к пину 3 (D3)
3. Добавьте включение подсветки:
lcd.backlight();
4. Исправленный код:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Wire.begin();
lcd.init(); // Используйте init() вместо begin()
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Privet, mir!"); // Используйте латиницу для теста
}
void loop() {
}
5. Дополнительные проверки:
- Проверьте напряжение питания (должно быть около 5V)
- Убедитесь, что подтягивающие резисторы для I2C присутствуют
- Попробуйте уменьшить скорость I2C: Wire.setClock(100000);
- Проверьте качество пайки и соединений
- Попробуйте другую библиотеку, например NewLiquidCrystal
6. Если дисплей не работает с русским текстом:
lcd.print("\x50\x72\x69\x76\x65\x74"); // Кодировка для русских букв
Если после этих шагов дисплей все еще не работает, попробуйте:
- Использовать другие пины I2C
- Проверить работоспособность дисплея на другой Arduino
- Измерить осциллографом сигналы SDA и SCL