'class LiquidCrystal_I2C' has no member named 'init'
- Войдите на сайт для отправки комментариев
Сб, 22/12/2018 - 16:03
Сразу хочу предупредить, что являюсь новичком в Arduino и связался с этой страшной штукой из-за курсовой работы.
Приобрел Arduino Uno, Arduino LCD 1602 i2c и модуль реалного времени RTC1602
Собрал по гайду на ютубе, нашел скетч и попытался его загрузить.
Выдало следующую ошибку при компиляции:
C:\Users\extinct\Desktop\sketch_dec22a\sketch_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); }
Ну, нету у него init.
Скетч-то, наверное, от другой библиотеки взяли?
Попробуйте вместо init использовать begin, но если скетч от другой библиотеки, там может ещё до фига всего вылезти.
Лучше попробуйте скетчи из примеров своей библиотеки.