Добрый день, есть скетч зарядно-разрядного устройства. Схемотехнику всю собрал (http://f007.ru/tag/avtomobili/) а скетч при загрузке пишет ошибку charger.ino: In function 'void setup()': charger:21: error: 'RTC' was not declared in this scope charger:30: error: 'DS1307_SQW32KHZ' was not declared in this scope charger.ino: In function 'void loop()': charger:39: error: 'RTC' was not declar Код (C++): // Date and time functions using a DS1307 RTC connected via I2C and Wire lib #include <EEPROM.h> #include <Wire.h> #include <DS1307.h> #include "RTClib.h" #include <LiquidCrystal_I2C.h> int rtc[7]; byte rr[7]; LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display #define RELE_NAGRUZKA 2 //объявляем работу реле нагрузки на пине 2 #define RELE_ZARYADKA 3 //объявляем работу реле зарядки на пине 3 int analogPin = 0; int flag=0; float val=0; float valkoef=0; void setup () { DDRC|=_BV(2) |_BV(3); // POWER:Vcc Gnd PORTC |=_BV(3); // VCC PINC3 RTC.get(rtc,true); lcd.init(); // initialize the lcd lcd.backlight(); lcd.home(); pinMode(RELE_NAGRUZKA, OUTPUT); //инициируем реле только на выход pinMode(RELE_ZARYADKA, OUTPUT); //инициируем реле только на выход lcd.clear(); digitalWrite(RELE_NAGRUZKA, HIGH); digitalWrite(RELE_ZARYADKA, HIGH); RTC.SetOutput(DS1307_SQW32KHZ); EEPROM.write (0, rtc[2]); // при старте записываем значение времени, часы EEPROM.write (1, rtc[1]); // при старте записываем значение времени, минуты } void loop () { val = analogRead(analogPin); // считываем значение напряжения с аналогового порта valkoef=val/74,49; // приводим снятое с аналогового пина значение к обычным вольтам RTC.get(rtc,true); lcd.setCursor (0,0); lcd.print (rtc[2]); lcd.print (":"); lcd.print (rtc[1]); lcd.print (":"); lcd.print (rtc[0]); lcd.print (" str"); lcd.print (EEPROM.read(0)); lcd.print (":"); lcd.print (EEPROM.read(1)); lcd.setCursor (0,1); lcd.print (valkoef); lcd.print (" "); lcd.print (flag); if (valkoef < 10.72) { flag=1; EEPROM.write(2, rtc[2]); // записыываем время окончания разрядки, часы EEPROM.write (3, rtc[1]); // записыываем время окончания разрядки, минуы } if (flag==1) { digitalWrite(RELE_ZARYADKA, LOW); // включаем зарядку digitalWrite(RELE_NAGRUZKA, HIGH); // выключаем нагрузку lcd.print (" stp"); lcd.print (EEPROM.read(2)); // выводим время окончания разрядки lcd.print (":"); lcd.print (EEPROM.read(3)); } if ((valkoef > 10.72) &&(flag==0)) { digitalWrite(RELE_NAGRUZKA, LOW); } else { digitalWrite(RELE_NAGRUZKA, LOW); } delay(500); } Не могу понять как исправить.
C:\Users\iwizard\Desktop\charger\charger.ino:4:20: fatal error: DS1307.h: No such file or directory #include <DS1307.h> ^ compilation terminated. exit status 1 Ошибка компиляции для платы Arduino/Genuino Uno.
Если подкидываю библиотеку DS1307 то вылазят новые ошибки Код (C++): C:\Users\iwizard\Desktop\charger\charger.ino: In function 'void setup()': charger:22: error: 'class RTC_DS1307' has no member named 'get' RTC.get(rtc,true); ^ charger:31: error: 'class RTC_DS1307' has no member named 'SetOutput' RTC.SetOutput(DS1307_SQW32KHZ); ^ charger:31: error: 'DS1307_SQW32KHZ' was not declared in this scope RTC.SetOutput(DS1307_SQW32KHZ); ^ C:\Users\iwizard\Desktop\charger\charger.ino: In function 'void loop()': charger:40: error: 'class RTC_DS1307' has no member named 'get' RTC.get(rtc,true); ^ exit status 1 'class RTC_DS1307' has no member named 'get'
Библиотека, которую вы установили не имеет методов get, SetOutput. Советую обратиться к автору скетча за ссылками на библиотеки, которые он использовал.
Код (C++): #include <DS1307.h> #include "RTClib.h" Две библиотеки для RTC - так и должно быть, или все же одна лишняя?