Ошибка возникает из-за того, что библиотека `iarduino_RTC`, которую вы используете, не содержит метод `begin`. Скорее всего, вы используете не ту версию библиотеки или API библиотеки изменилось. Вот как можно устранить проблему:
### Шаги для исправления
1. **Проверьте правильность библиотеки:**
- Убедитесь, что вы установили библиотеку `iarduino_RTC` через менеджер библиотек Arduino IDE или вручную с официального репозитория [iarduino_RTC](
https://github.com/iArduino/RTC ).
- Если библиотека устарела, попробуйте обновить её.
2. **Измените код в соответствии с API библиотеки:**
- Согласно документации, для модуля DS1307/DS1302 используется метод `beginModule()` вместо `begin()`. Попробуйте заменить строку `time.begin();` на `time.beginModule();`.
3. **Исправьте код для установки времени:**
- Проверьте метод `settime`. В некоторых версиях библиотеки используется метод `setDateTime()` для установки времени.
- Формат вызова может быть другим. Обратитесь к документации библиотеки или к примерам кода.
### Исправленный код:
#include "iarduino_RTC.h"
#include <GyverOLED.h>
GyverOLED<SSD1306_128x32, OLED_NO_BUFFER> oled;
iarduino_RTC time(RTC_DS1307, 6, 8, 7); // для модуля DS1307 - SDA, SCL, адрес
void setup() {
oled.init(); // инициализация
oled.clear(); // очистка
oled.setScale(1); // масштаб текста (1..4)
oled.home(); // курсор в 0,0
delay(300);
Serial.begin(9600);
if (time.beginModule()) { // Запуск модуля
time.setDateTime(2024, 12, 22, 18, 30, 0); // Установка времени: ГГГГ, ММ, ДД, ЧЧ, ММ, СС
} else {
Serial.println("Ошибка инициализации модуля RTC!");
}
}
void loop() {
// если прошла 1 секунда, выводим время
if (millis() % 1000 == 0) {
oled.setCursor(0, 2);
oled.println(time.getDateTime("d-m-Y, H:i:s, D"));
delay(1);
}
}
### Основные изменения:
1. Заменён метод `begin()` на `beginModule()`.
2. Метод `settime` заменён на `setDateTime` с соответствующим форматом.
Если проблема останется, проверьте, правильно ли подключён ваш модуль RTC (провода, пины SDA/SCL) и используйте тестовые скетчи из документации библиотеки для диагностики.
C:\Users\User\AppData\Local\Temp\.arduinoIDE-unsaved20241122-14696-152agbt.wjpu\sketch_dec22a\sketch_dec22a.ino: In function 'void setup()':
C:\Users\User\AppData\Local\Temp\.arduinoIDE-unsaved20241122-14696-152agbt.wjpu\sketch_dec22a\sketch_dec22a.ino:8:9: error: 'class iarduino_RTC' has no member named 'begin'
time.begin();
^~~~~
exit status 1
Compilation error: 'class iarduino_RTC' has no member named 'begin'
скетч вот:
#include "iarduino_RTC.h"
#include <GyverOLED.h>
GyverOLED<SSD1306_128x32, OLED_NO_BUFFER> oled;
iarduino_RTC time(RTC_DS1307,6,8,7); // для модуля DS1302 - RST, CLK, DAT
void setup() {
oled.init(); // инициализация
oled.clear(); // очистка
oled.setScale(1); // масштаб текста (1..4)
oled.home(); // курсор в 0,0
delay(300);
Serial.begin(9600);
time.begin();
time.settime(0, 30, 18, 12, 6, 20, 5);}
void loop() {
// если прошла 1 секунда выводим время
if (millis() % 1000 == 0) {
oled.setCursor(0, 2);
oled.println(time.gettime("d-m-Y, H:i:s, D"));
delay(1);
}
}