Доброго времени суток! Приобрел LCD экран с поддержкой i2c: Определил его имя через i2c сканер (0x3F). Заливаю прошивку Спойлер: Прошивка Код (C++): #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F,16,2); /* Задаем адрес и размерность дисплея. При использовании LCD I2C модуля с дисплеем 20х04 ничего в коде изменять не требуется, cледует только задать правильную размерность */ void setup() { lcd.init(); // Инициализация lcd lcd.backlight(); // Включаем подсветку // Курсор находится в начале 1 строки lcd.print("Hello, world!"); // Выводим текст lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print("Test code"); // Выводим текст } void loop() { } Вроде бы даже выводит эти строки на экран. Стоит мне отключить от питания и вернуть обратно - надпись пропадает и на экране тупо квадратики. Перепрошивка не помогает. Прописываю новое имя (0x39), надпись снова появляется. Стоит мне перезагрузить питание - история повторяется. Складывается мнение, что каждый раз экран меняет свое имя. Может ли быть такое? Данная проблема с любыми прошивками для экрана. Использую ArduinoMega, экран подключен к SDA/SCL, других устройств нет.
Лупу в руки - и просматривать на сопли между контактами и непропай. Имхо это первое, с чего стоит начать при описанных симптомах.
Также, если я заливаю код, который должен менять текст на экране - текст застывает. Спойлер Код (C++): #include <Wire.h> #include <LiquidCrystal_I2C.h> //I2C pins declaration LiquidCrystal_I2C lcd(0x39, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); void setup() { lcd.begin(16,2);//Defining 16 columns and 2 rows of lcd display lcd.backlight();//To Power ON the back light //lcd.backlight();// To Power OFF the back light } void loop() { //Write your code lcd.setCursor(0,0); //Defining positon to write from first row,first column . lcd.print(" Tech Maker "); //You can write 16 Characters per line . delay(1000);//Delay used to give a dynamic effect lcd.setCursor(0,1); //Defining positon to write from second row,first column . lcd.print("Like | Share"); delay(8000); lcd.clear();//Clean the screen lcd.setCursor(0,0); lcd.print(" SUBSCRIBE "); lcd.setCursor(0,1); lcd.print(" TECH MAKER "); delay(8000); }
Проверил, соплей нет. Плюс я снова пропаял все контакты. Также сменил Мегу на Уно, результат не изменился.
На второй фотке грибы из припоя - это, кмк, нехорошая пайка. Но раз вы уверены, что с пайкой всё ок, тогда предположу, что проблема по железной части, например, адаптер I2C не алё.
Почему А0, А1, А2 не распаяны? Это как раз выбор адреса I2C. Они должны быть притянуты к Vcc или к Gnd. Сейчас они висят в воздухе и адрес при подаче питания зависит от расположения дисплея относительно вашего тела (ёмкостные наводки).
Всем привет, тоже как то попался, два одинаковых дисплея один работает, а второй молчит, подумал что i2c adapter на втором дисплее не рабочий, скачал даташит на pcf8574, и сразу разобрался, думаю наглядно будет более ясно понятнее что к чему, (в двух словах 8574Т И 8574АТ ИМЕЮТ РАЗНУЮ АДРЕСАЦИЮ).