'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, но если скетч от другой библиотеки, там может ещё до фига всего вылезти.
Лучше попробуйте скетчи из примеров своей библиотеки.