День добрый. Появилась небольшая проблема. Подключил дисплей к конвертеру i2c и пытаюсь вывести элементарный текст из примера. Но он не выводится. Код (Text): #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); // Инициализация lcd lcd.backlight(); // Включаем подсветку // Курсор находится в начале 1 строки lcd.print("Hello world1"); // Выводим текст lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print("Hello world2"); // Выводим текст } int i; void loop() { } Методом научного тыка понял как вывести его, а именно добавить в loop повтор вывода. Код (Text): void loop() { lcd.setCursor(0, 0); lcd.print("TExt1"); // Выводим текст lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print("TExt2"); // Выводим текст } Но как я понял, ардуино постоянно перезаписывает текст на экран, а это не то что нужно. Плюс если вставить delay, то ничего не выводится. Подскажите пожалуйста, в какую сторону копать? Необходимо получить вывод статического текста(1 раз передали на экран, и только в случае чего, перезаписываем).
Не помогает( Есть, смысл в них тот же. Код (Text): //DFRobot.com //Compatible with the Arduino IDE 1.0 //Library version:1.1 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd // Print a message to the LCD. lcd.backlight(); lcd.print("Hello, world!"); } void loop() { }
В дополнение, возился с ним 2 часа. И если я подключаю напрямую проводами (без конвертера i2c), то вот этот код выводит на экран. Код (Text): #include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11 , 12); void setup() { lcd.begin(16, 2); lcd.print("Hello world1"); // Выводим текст lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print("Hello world2"); // Выводим текст } void loop() { } Получается у меня косяк либо в конвертере, либо в библиотеке? UPD: Сам конвертер выглядит вот так. Я так понимаю что косяк скорее всего в экране, а именно в задействованных пинах. Они вроде у разных экранов по разному используются. Тогда возникает вопрос, где бы мне их поправить?
/DFRobot.com //Compatible with the Arduino IDE 1.0 //Library version:1.1 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd // Print a message to the LCD. lcd.backlight(); lcd.print("Hello, world!"); } void loop() { } у меня эта же библиотека ,работает нормально
Случаем никаких ошибок не выдает при компиляции. Может другую библиотеку использовать. При включении дисплей загорается с использованием I2C конвертера. Что отображается?
Этот код будет выполняться, так как экранчик будет постоянно перезаписываться (от этого он довольно тусклый). Ошибок не вылезает. Библиотек такое множество, что я начал в них путаться. А на самом модуле не написано производителя, вот пытаюсь выбить у продавца информацию о библиотеках. Вечером буду дальше ковырять.
Я вставлял delay(1000) для того чтобы он не очень быстро перезаписывался . Убрать delay() тогда будет тускло светиться,Будет оч быстро пытаться обновляться - п даташиту надо задержку для обновления экрана
Да, мне по сути и перезапись постоянная не нужна. Экранчик используется для выбора меню. А если поставить задержку, то ничего выводиться не будет.
Почему не будет. Напиши пример вывода меню. Я пробовал выводить три меню циклически от одной кнопки, нормально работает. Использовал swith() ...case
Дело не в меню. Вот этот код будет выводить на экран текст. Код (Text): #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd // Print a message to the LCD. lcd.backlight(); } void loop() { lcd.print("Hello, world!"); } А вот этот не будет показывать на экране ничего. (по факту должен моргать словом) Код (Text): #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { lcd.init(); // initialize the lcd // Print a message to the LCD. lcd.backlight(); } void loop() { lcd.clear(); delay(3000); lcd.print("Hello, world!"); delay(3000); } Вечером могу видео залить
Так, экран заработал. Подключил вторую плату i2c и попробовал с ней. Она работает с любой библиотекой. Тут выходит 2 варианта. Либо 1 плата кривая, либо у меня руки кривые и когда я паял, что то закосячил. Всем спасибо за попытки помочь!