Здрасти. Собрал тут суточный таймер, имея под рукой Nano и ds3231, ну и дисплей обычный. Всё работает всё супер только вот при отключении время сбрасывается. Есть ли какой нибудь способ чтобы время шло дальше при отключении питания с Nano. Не зря же батарейка на модуле часов стоит. Или она не для этого? Вот скетч: Код (Text): #include <Wire.h> #include <DS3231.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); DS3231 Clock; bool h12 = false; bool PM; bool Century = false; void setup() { lcd.begin(16, 2); lcd.clear(); lcd.setBacklight(HIGH); Wire.begin(); pinMode(10, OUTPUT); } void loop() { int second, minute, hour, date, month, year, temperature; year = Clock.getYear(); month = Clock.getMonth(Century); date = Clock.getDate(); hour = Clock.getHour(h12, PM); minute = Clock.getMinute(); second = Clock.getSecond(); temperature = Clock.getTemperature(); if ( hour >= 9 && hour <= 17 ) { digitalWrite(10, HIGH); } else { digitalWrite(10, LOW); } lcd.print("20"); lcd.print(year, DEC); lcd.print('-'); if (month < 10) lcd.print('0'); lcd.print(month, DEC); lcd.print('-'); if (date < 10) lcd.print('0'); lcd.print(date, DEC); lcd.setCursor(0, 1); if (hour < 10) lcd.print('0'); lcd.print(hour, DEC); lcd.print(':'); if (minute < 10) lcd.print('0'); lcd.print(minute, DEC); lcd.print(':'); if (second < 10) lcd.print('0'); lcd.print(second, DEC); lcd.print(' '); lcd.print("Temp:"); lcd.print(temperature); delay(500); lcd.setCursor(0, 0); }
Извиняюсь не тот скетч кинул. Выкладываю верный ниже. Впринципе отличается только наличием установки времени. Код (Text): #include <Wire.h> #include <DS3231.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); DS3231 Clock; bool h12 = false; bool PM; bool Century = false; void setup() { Wire.begin(); Clock.setSecond(50); Clock.setMinute(52); Clock.setHour(16); Clock.setDoW(3); Clock.setDate(12); Clock.setMonth(8); Clock.setYear(15); lcd.begin(16, 2); lcd.clear(); lcd.setBacklight(HIGH); Wire.begin(); pinMode(13, OUTPUT); } void loop() { int second, minute, hour, date, month, year, temperature; year = Clock.getYear(); month = Clock.getMonth(Century); date = Clock.getDate(); hour = Clock.getHour(h12, PM); minute = Clock.getMinute(); second = Clock.getSecond(); temperature = Clock.getTemperature(); if ( hour <= 18 && hour >= 9 ) { digitalWrite(13, HIGH); } else { digitalWrite(13, HIGH); delay(10000); digitalWrite(13, LOW); delay(10000); } lcd.print("20"); lcd.print(year, DEC); lcd.print('-'); if (month < 10) lcd.print('0'); lcd.print(month, DEC); lcd.print('-'); if (date < 10) lcd.print('0'); lcd.print(date, DEC); lcd.setCursor(0, 1); if (hour < 10) lcd.print('0'); lcd.print(hour, DEC); lcd.print(':'); if (minute < 10) lcd.print('0'); lcd.print(minute, DEC); lcd.print(':'); if (second < 10) lcd.print('0'); lcd.print(second, DEC); lcd.print(' '); lcd.print("Temp:"); lcd.print(temperature); delay(500); lcd.setCursor(0, 0); }
Если используешь всегда второй скетч без изменений, то время всгда будет сбрасываться при перезагрузке ардуины, на то что у тебя в Setup. Надо один раз прошить с установкой времени, а потом отредактировать скетч - убрать(или закомментировать) из Setup установку времени и снова прошить. Если батарейка исправная то время очень долго не сброситься при отключении питания.
Спасибо добрый человек. Как же я сам то не додумал)) Собирался уже городить что то с EEPROM. Мало полезной информации в инете по таймерам DS3231, в основном везде DS1307.
Уважаемые форум профи! Почему при компиляции этого скеча куча ошибок? Я долго рисовал свой рабочий скечь , добавил библиотеки, аккуратно добавляя данные с этого сечта и пиии моему тоже пришел пиии.. ощущение не верная библиотека и на фига так делать, Ваш скечь не поддается компиляции изначально! первые ошибки валятся с void loop() { int second, minute, hour, date, month, year, temperature; year = Clock.getYear(); month = Clock.getMonth(Century); date = Clock.getDate(); hour = Clock.getHour(h12, PM); minute = Clock.getMinute(); second = Clock.getSecond();
Скечь выложеный elektron56, ошибка Arduino: 1.8.2 Hourly Build 2017/02/02 11:56 (Windows 7), Плата:"Arduino Nano, ATmega328" C:\Users\Titan\Documents\Arduino\sketch_feb18b\sketch_feb18b.ino: In function 'void setup()': sketch_feb18b:14: error: 'class DS3231' has no member named 'setSecond' Clock.setSecond(50); ^ sketch_feb18b:15: error: 'class DS3231' has no member named 'setMinute' Clock.setMinute(52); ^ sketch_feb18b:16: error: 'class DS3231' has no member named 'setHour' Clock.setHour(16); ^ sketch_feb18b:17: error: 'class DS3231' has no member named 'setDoW' Clock.setDoW(3); ^ sketch_feb18b:18: error: 'class DS3231' has no member named 'setDate' Clock.setDate(12); ^ sketch_feb18b:19: error: 'class DS3231' has no member named 'setMonth' Clock.setMonth(8); ^ sketch_feb18b:20: error: 'class DS3231' has no member named 'setYear' Clock.setYear(15); ^ C:\Users\Titan\Documents\Arduino\sketch_feb18b\sketch_feb18b.ino: In function 'void loop()': sketch_feb18b:31: error: 'class DS3231' has no member named 'getYear' year = Clock.getYear(); ^ sketch_feb18b:32: error: 'class DS3231' has no member named 'getMonth' month = Clock.getMonth(Century); ^ sketch_feb18b:33: error: 'class DS3231' has no member named 'getDate' date = Clock.getDate(); ^ sketch_feb18b:34: error: 'class DS3231' has no member named 'getHour' hour = Clock.getHour(h12, PM); ^ sketch_feb18b:35: error: 'class DS3231' has no member named 'getMinute' minute = Clock.getMinute(); ^ sketch_feb18b:36: error: 'class DS3231' has no member named 'getSecond' second = Clock.getSecond(); ^ sketch_feb18b:37: error: 'class DS3231' has no member named 'getTemperature' temperature = Clock.getTemperature(); ^ exit status 1 'class DS3231' has no member named 'setSecond' Этот отчёт будет иметь больше информации с включенной опцией Файл -> Настройки -> "Показать подробный вывод во время компиляции"
@Виктор111, библиотек DS3231 в сети много разных, вероятно автор применил https://github.com/NorthernWidget/DS3231
Понадобилось мне 2 дня для решения проблемы. Проблема не в коде и даже не в библиотеке, проблема в версии среды разработки, похоже библиотеки пишутся для своей версии и в более новой среде они работают не корректно, мало того, функционал резко падает. Прошу прощения, код более чем познавательный, автору Респект!
Ну вот ещё одна тема и опять не компилируется Ваша программа. Ошибки аналогичные указанные в данной теме. Пробовал разные библиотеки подключать... летят ошибки. Вот с какими библиотеками пробовал: #include <RtcDateTime.h> #include <RtcDS1307.h> #include <RtcDS3231.h> #include <RtcTemperature.h> #include <RtcUtility.h> #include <RtcDS1307.h> #include <RtcDS3231.h> #include <RTClib.h> #include <MD_DS3231.h> #include <Sodaq_DS3231.h> #include <DS3231.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> Я не знаю можно ли давать здесь ссылки на другие сайты, но поверьте я где-то конкретно туплю. Работаю по шине I2C