• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Пытаюсь подружить ESP8266 NodeMCU и RTC DS3231

Samsonio

New member
Пару лет назад удалось все подружить и я оставил это знание до лучших времен, сохранив и библиотеку и код. Сейчас снова пытаюсь сделать все то же что и раньше- выдает ошибку
'DS3231 clock' redeclared as different kind of symbol
У меня не доходит даже до загрузки на ESP8266- ругается на процессе компиляции (значит, железо ни при чем). Что изменилось за два года: другая ОС (Catalina MacOS) и соответственно, последняя версия Arduino IDE (1.8.11). Пробовал поставить предыдущую версию Arduino IDE- требует что бы версия была 64х битная, вообще отказывается что либо компилировать.
Библиотека отсюда https://github.com/jarzebski/Arduino-DS3231
Благодарю за помощь.


JavaScript:
/*На 8266 SDA->D2; SCL->D1


  DS3231: Real-Time Clock.
  Read more: www.jarzebski.pl/arduino/komponenty/zegar-czasu-rzeczywistego-rtc-DS3231.html
  GIT: https://github.com/jarzebski/Arduino-DS3231
  Web: http://www.jarzebski.pl
  (c) 2014 by Korneliusz Jarzebski
*/

#include <Wire.h>             // Подключаем бибилиотеку для работы с I2C устройствами
#include <DS3231.h>           // Подключаем библиотеку для работы с RTC DS3231

DS3231 clock;                 // Связываем объект clock с библиотекой DS3231
RTCDateTime DateTime;         // Определяем сущность структуры RTCDateTime (описанной в библиотеке DS3231) для хранения считанных с часов даты и времени
//RTCAlarmTime Alarm1;          // Определяем сущность структуры RTCAlarmTime (описанной в библиотеке DS3231) для хранения считанных с первого будильника настроек даты и времени

boolean isAlarm = false;      // Логическая переменная для обработки сигнала о срабатывании будильника
//boolean alarmState = false;   // Логическая переменная для обработки индикации при срабатывании будильника
//int alarmLED = 4;             // Пин, к которому подключаем индикатор срабатывания будильника (светодиод)

/*void alarmFunction()                                  // Функция, вызываемая при срабатывании будильника
{
  isAlarm = true;                                     // Присваиваем значение "истина" переменной для обработки срабатывания будильника
}
*/
void setup()
{
  Serial.begin(9600);               // Инициализируем вывод данных на монитор серийного порта, со скоростью 9600 бод
  clock.begin();                    // Инициализируем работу с объектом библиотеки DS3231
  clock.enableOutput(false);        // Определяем назначение вывода SQW (INT) для генерации прерываний при сработке будильников

//  clock.setDateTime(__DATE__, __TIME__);                  // Устанавливаем время на часах, основываясь на времени компиляции скетча
//  clock.setDateTime(2016, 9, 15, 0, 0, 0);              // Установка времени вручную (Год, Месяц, День, Час, Минута, Секунда)
//  setAlarm1(Дата или день, Час, Минута, Секунда, Режим)
// clock.setAlarm1(0, 0, 0, 10, DS3231_MATCH_S);           // Устанавливаем первый будильник на срабатывание в 10 сек. каждой минуты. Режим DS3231_MATCH_S сообщает о том, что ориентироваться надо на секунды.
//  pinMode(alarmLED, OUTPUT);                              // Определяем пин подключения питания светодиода, как исходящий
//  attachInterrupt(0, alarmFunction, FALLING);             // Задаем функцию для обработки прерывания 0 (на пине 2)
}

void loop()
{
  DateTime = clock.getDateTime();                                                 // Считываем c часов текущие значения даты и времени в сущность DateTime
  //Alarm1 = clock.getAlarm1();                                                     // Считываем c первого будильника текущие настройки даты и времени в сущность Alarm1
  Serial.println(clock.dateFormat("d.m.Y H:i:s", DateTime));               // Определяем формат вывода даты и выводим на монитор серийного порта
  Serial.println("Temperature: " + String(clock.readTemperature()));              // Выводим значения температуры
  //Serial.println("Alarm: " + String(clock.dateFormat("__ __:__:s", Alarm1)));     // Выводим настройки будильника                               
  Serial.println();                                                               // Перевод строки
  /*if (isAlarm)                                                                    // Если поступил сигнал о сработке будильника
  {
    digitalWrite(alarmLED, alarmState);                                           // Отправляем логическое значение выводу питания светодиода при каждом срабатывании будильника
    alarmState = !alarmState;                                                     // Меняем это значение на противоположное
    isAlarm = false;                                                              // Отключаем сигнал о сработке будильника (меняем состояние события обработки индикатора на "ложь")
    clock.clearAlarm1();                                                          // Очищаем состояние сработки будильника
  }
  */
  delay(1000);                                                                    // Задержка в 1 секунду
}

Снимок экрана 2020-02-25 в 23.27.00.png
 
Сверху Снизу