Lcd init arduino ошибка

Arduino Forum

Loading

  • #1

Заголовок должен отражать суть темы. Переформулируй или тема будет удалена.

Хочу сделать проект с использованием: Дисплей 1602 5 В Синий экран с интерфейсной шиной IIC / I2C и Ардуино уно. Умение почти нет вылезает ошибка Инициализация lcd. Помогите пожалуйста ….

Arduino: 1.8.15 (Windows 10), Плата:»Arduino Uno»

C:UserspcDocumentsArduinosketch_sep27asketch_sep27a.ino: In function ‘void setup()’:

sketch_sep27a:24:5: error: ‘class LiquidCrystal_I2C’ has no member named ‘init’

lcd.init(); // Инициализация lcd

^~~~

Несколько библиотек найдено для «LiquidCrystal_I2C.h»

Используется: C:UserspcDocumentsArduinolibrariesLiquidCrystal_I2C

Не используется: C:UserspcDocumentsArduinolibrariesliquidcrystal_i2c-master

Несколько библиотек найдено для «DHT.h»

Используется: C:UserspcDocumentsArduinolibrariesDHT

Не используется: C:UserspcDocumentsArduinolibrariesDHT-sensor-library-master

exit status 1

‘class LiquidCrystal_I2C’ has no member named ‘init’

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»

  • 2.1 KB
    Просмотры: 6

Решил подключить lcd к esp для будущей постройки управления с мобилы, SCL — D1, SDA — D2, но выдаёт ошибку при компиляций:

Arduino: 1.8.18 (Windows 10), Плата:"Generic ESP8266 Module, 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

C:UsersshitsAppDataLocalTemparduino_modified_sketch_578173sketch_jul23a.ino: In function 'void setup()':

sketch_jul23a:7:7: error: 'class LiquidCrystal_I2C' has no member named 'init'

    7 |   lcd.init()

      |       ^~~~

Несколько библиотек найдено для "LiquidCrystal_I2C.h"

 Используется: C:UsersshitsDocumentsArduinolibrariesArduino-LiquidCrystal-I2C-library-master

Не используется: C:UsersshitsDocumentsArduinolibrariesLiquidCrystal_I2C-1.1.1

exit status 1

'class LiquidCrystal_I2C' has no member named 'init'



Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

Код самый дефолтный.

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  // put your setup code here, to run once:
  lcd.init()
  lcd.backlight();
  lcd.print("Hi!");
}

void loop() {
  // put your main code here, to run repeatedly:

}

Offline

Зарегистрирован: 22.12.2018

Сразу хочу предупредить, что являюсь новичком в Arduino и связался с этой страшной штукой из-за курсовой работы. 

Приобрел Arduino Uno, Arduino LCD 1602 i2c и модуль реалного времени RTC1602

Собрал по гайду на ютубе, нашел скетч и попытался его загрузить. 

Выдало следующую ошибку при компиляции: 

C:UsersextinctDesktopsketch_dec22asketch_dec22a.ino: In function 'void setup()':

sketch_dec22a:98:7: error: 'class LiquidCrystal_I2C' has no member named 'init'

   lcd.init();                      // initialize the lcd 

       ^

exit status 1
'class LiquidCrystal_I2C' has no member named 'init'

Установлены библиотеки LiquidCrystal_I2C (с обычной Liquid Crystal дисплей никак не работает) и RTClib

Вопрос, как исправить ошибку в коде? Заранее спасибо

сам код скетча 

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
int progbar=0;

byte p20[8] = {
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
  B10000,
};
byte p40[8] = {
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
  B11000,
};
byte p60[8] = {
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
  B11100,
};
byte p80[8] = {
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
  B11110,
};
byte p100[8] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};
byte ip20[8] = {
  B00001,
  B00001,
  B00001,
  B00001,
  B00001,
  B00001,
  B00001,
};
byte ip40[8] = {
  B00011,
  B00011,
  B00011,
  B00011,
  B00011,
  B00011,
  B00011,
};
byte ip60[8] = {
  B00111,
  B00111,
  B00111,
  B00111,
  B00111,
  B00111,
  B00111,
};
byte ip80[8] = {
  B01111,
  B01111,
  B01111,
  B01111,
  B01111,
  B01111,
  B01111,
};



void setup () {
  Serial.begin(57600);
  Wire.begin();
  rtc.begin();
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
  lcd.home();

  //Make progress characters
  lcd.createChar(0, p20);
  lcd.createChar(1, p40);
  lcd.createChar(2, p60);
  lcd.createChar(3, p80);
  // lcd.createChar(4, p100);
  lcd.createChar(4, ip20);
  lcd.createChar(5, ip40);
  lcd.createChar(6, ip60);
  lcd.createChar(7, ip80);


  lcd.clear();  




  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    // rtc.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {

  digitalClockDisplay();  
  delay(200);
}


void digitalClockDisplay(){
  // digital clock display of the time
  DateTime now = rtc.now();






  lcd.setCursor(5, 0);
  printDigits(now.hour()); // печатает часы

  //рисуем прогресс бар часов

  progbar=map(now.hour(),0,24,0,25);

  //стираем бар если час =0
  if(now.hour()<1  ){
    lcd.setCursor(0,0);
    lcd.print("     ");  
  }

  // отрисовка бара часа в обратном направлении 
  //сначала рисуем квадраты

  for (int i = 0; i<(progbar/5); i++)
  {

    lcd.setCursor(4-i, 0);   
    lcd.write(B11111111);

  }

  //отрисовываем деления в поле символа,
  lcd.setCursor(4-progbar/5, 0);   
  if(progbar%5<4){
    lcd.write(progbar%5+4);
  }
  else{
    lcd.write(B11111111);
  }

  //нарисовали часы и шкалу часов
  //рисуем бегающие двоеточие, привязано к секундам, вывод слева или справа двоеточие зависит от четности секунд

  lcd.setCursor(7, 0);
  if (now.second()%10%2==0){
    lcd.print(": ");
  }
  else
  {
    lcd.print(" :");
  }
  //нарисовали двоеточие


  //рисуем минуты

  lcd.setCursor(9, 0); 
  printDigits(now.minute());
  //стираем бар минут если минуты=0
  if(now.minute()<1  ){
    lcd.setCursor(11,0);
    lcd.print("     ");  
  }
  //рисуем бар минут
  //тут уже отрисовка происходит в прямом направлении

  progbar=map(now.minute(),0,60,0,25);


  for (int i = 0; i<(progbar/5); i++)
  {

    lcd.setCursor(i+11, 0);   
    lcd.write(B11111111);

  }


  lcd.setCursor(progbar/5+11, 0);   
  if(progbar%5<4){
    lcd.write(progbar%5);
  }
  else{
    lcd.write(B11111111);
  }

  //нарисовали минуты


  //рисуем бар минут
  //самый длинный бар в самом низу

  lcd.setCursor(7, 1);
  printDigits(now.second());

  if(now.second()<1  ){
    lcd.setCursor(0,1);
    lcd.print("       ");  
    lcd.setCursor(9,1);
    lcd.print("       ");  
  }


  progbar=map(now.second(),0,60,0,80);


  for (int i = 0; i<(progbar/5); i++)
  {

    lcd.setCursor(i, 1);   
    lcd.write(B11111111);

  }


  lcd.setCursor(progbar/5, 1);   
  if(progbar%5<4){
    lcd.write(progbar%5);
  }
  else{
    lcd.write(B11111111);
  }


  lcd.setCursor(7, 1);
  printDigits(now.second());

}



void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0


  if(digits < 10){

    lcd.print('0');
  }

  lcd.print(digits);
}

  1. День добрый.

    Появилась небольшая проблема. Подключил дисплей к конвертеру i2c и пытаюсь вывести элементарный текст из примера. Но он не выводится.

    #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 повтор вывода.

    void loop()
    {
      lcd.setCursor(0, 0);
      lcd.print(«TExt1»);      // Выводим текст
      lcd.setCursor(0, 1);              // Устанавливаем курсор в начало 2 строки
      lcd.print(«TExt2»);    // Выводим текст
    }

    Но как я понял, ардуино постоянно перезаписывает текст на экран, а это не то что нужно. Плюс если вставить delay, то ничего не выводится.

    Подскажите пожалуйста, в какую сторону копать?
    Необходимо получить вывод статического текста(1 раз передали на экран, и только в случае чего, перезаписываем).

  2. попробуй после lcd.init(); сделать небольшую паузу.

  3. А разве в библиотеке нет примеров?

  4. Не помогает(Есть, смысл в них тот же.

    //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()
    {
    }

  5. В дополнение, возился с ним 2 часа. И если я подключаю напрямую проводами (без конвертера i2c), то вот этот код выводит на экран.

    #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:
    Сам конвертер выглядит вот так.
    [​IMG]
    Я так понимаю что косяк скорее всего в экране, а именно в задействованных пинах. Они вроде у разных экранов по разному используются. Тогда возникает вопрос, где бы мне их поправить?

    Последнее редактирование: 27 окт 2014

  6. /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()
    {
    }

    у меня эта же библиотека ,работает нормально

    Последнее редактирование: 27 окт 2014

  7. Случаем никаких ошибок не выдает при компиляции. Может другую библиотеку использовать. При включении дисплей загорается с использованием I2C конвертера. Что отображается?

  8. Этот код будет выполняться, так как экранчик будет постоянно перезаписываться (от этого он довольно тусклый).

    Ошибок не вылезает. Библиотек такое множество, что я начал в них путаться. А на самом модуле не написано производителя, вот пытаюсь выбить у продавца информацию о библиотеках.

    Вечером буду дальше ковырять.

  9. Я вставлял delay(1000) для того чтобы он не очень быстро перезаписывался . Убрать delay() тогда будет тускло светиться,Будет оч быстро пытаться обновляться — п даташиту надо задержку для обновления экрана

  10. Да, мне по сути и перезапись постоянная не нужна. Экранчик используется для выбора меню. А если поставить задержку, то ничего выводиться не будет.

  11. Почему не будет. Напиши пример вывода меню. Я пробовал выводить три меню циклически от одной кнопки, нормально работает. Использовал swith() …case

  12. Дело не в меню.

    Вот этот код будет выводить на экран текст.

    #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!»);
    }

    А вот этот не будет показывать на экране ничего. (по факту должен моргать словом)

    #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);
    }

    Вечером могу видео залить

  13. Так, экран заработал.

    Подключил вторую плату i2c и попробовал с ней. Она работает с любой библиотекой.
    Тут выходит 2 варианта. Либо 1 плата кривая, либо у меня руки кривые и когда я паял, что то закосячил.
    Всем спасибо за попытки помочь!

Понравилась статья? Поделить с друзьями:
  • Lc231 grundfos ошибки
  • Lc200 ошибка p0504
  • Lc200 ошибка p0046
  • Lc200 ошибка b279a
  • Laserjet pro m203dn ошибки