Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Дисплей по I2C не отображает текст. Arduino

Калыман Обоюдно Ученик (95), закрыт 3 недели назад
У меня есть дисплей, к которому припаяна плата I2C (правильно припаяна, олово других контактов не касается). VCC подключён к VCC (на Arduino Pro Micro нет 5V пина, зато есть VCC), SDA подключён ко 2-му пину, SCL к 3-му. GND к GND. Плата Arduino Pro Micro полностью исправна. У меня дисплей 20 на 4. Самый простой код для вывода текста не работает:
 #include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup() {
Wire.begin();
lcd.begin(20, 4);
lcd.clear();

lcd.setCursor(0, 0);
lcd.print("Привет, мир!");
}

void loop() {}

void loop() {
}
Помогите, пожалуйста
Лучший ответ
Сергей Кузнецов Оракул (60942) 3 недели назад
Или подключение не верно, проверьте Нина I2Cшины правильно ли подключенены. Проверьте адрес устройства
Калыман ОбоюдноУченик (95) 3 недели назад
I2С и к дисплею, и к Arduino подключён корректно. Адрес устройства сейчас проверяю, если что-либо будет, то напишу
Сергей Кузнецов Оракул (60942) Калыман Обоюдно, кстати кириллицу вроде как дисплеи не поддерживают. Может уже обновили библиотеку, я давненько их не использую, вот старые библиотеки не подерживали
Калыман ОбоюдноУченик (95) 3 недели назад
Я взял код для проверки адреса, и вот, что он выводит:
Sketch uses 5906 bytes (20%) of program storage space. Maximum is 28672 bytes.
Global variables use 483 bytes (18%) of dynamic memory, leaving 2077 bytes for local variables. Maximum is 2560 bytes.
Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
Device code: 0x44
Сергей КузнецовОракул (60942) 3 недели назад
Адрес 0х44
Калыман Обоюдно Ученик (95) Сергей Кузнецов, Действительно, не заметил... То есть именно его надо вписывать при инициализации?
Сергей КузнецовОракул (60942) 3 недели назад
И я всегда инициализировать библиотеку просто lcd begin().
Сергей Кузнецов Оракул (60942) Сергей Кузнецов, или lcd.lnit(). Точно не помню
Остальные ответы
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (296928) 3 недели назад
Вот несколько шагов для решения проблемы с 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
Калыман ОбоюдноУченик (95) 3 недели назад
Вспомнил я про свой вольтметр для USB. Он показывает 4.95V +- 0.02V. Подсветка у дисплея работает, а вот текст так и не отображается :(
Похожие вопросы