Babos, а почему, когда отключаешь комнату со все светом потом снова включаешь ардуино он не сохраняет таймер, даже если я комментирую строчку. с сеттером начального таймера-тамера.
Можно. Я же красивый!
потому что сначала надо пройти курс, повторить проекты, и большинство вопросов сразу отпадет, инфа 300%! из 100
потому что этот модуль не ах. У меня было точно так же и уже давно ничего кроме модуля DS3231 не использую.
… но ты пробуй другие библиотеки, а вдруг…
Ребят, все работает как надо:
Но в Alash_DS1302.h у меня ошибка: время сбрасывается, после выключения питания! На 0.0.0 1.1.2000:
#include <Wire.h>
#include <Alash_DS1302.h>
//Today is: 0:0:0 1.1.2000 W: 0
/*
DS1302 IC Atmel AVR ESP8266 ESP32
GND GND GND GND
VCC2 5V(или 3.3V) 3V3 3V3
SCLK (CLK) 2(цифровой пин) D4 0
I/O (DAT) 3(цифровой пин) D2 5
CE (RST) 4(цифровой пин) D2 4
*/
// Подключение пина данных DS1302 к цифровому пину Arduino
#define DS1302_CLK_PIN 2
#define DS1302_IO_PIN 3
#define DS1302_CE_PIN 4
// Создание объекта RTC
Alash_DS1302 rtc = Alash_DS1302(DS1302_CLK_PIN, DS1302_IO_PIN, DS1302_CE_PIN);
String de0=":";
String de1=".";
void setup(){
Serial.begin(9600); // Начало последовательной связи с скоростью 115200 бит/с
Wire.begin(); // Начало работы с I2C
Wire.setClock(100000); // Установка скорости передачи данных по I2C
rtc.begin();
// Установка даты/времени: 19:20:22 1/1/2024 Weekday:5
//rtc.setDateTime(22, 32, 22, 9, 1, 2026, 5); // Вывод сообщения об ошибке в последовательный порт
}
void loop() {
String name ="20:22:20 1.1.2026" ;// Объявление массива для хранения строкового значения дня недели и месяца
uint8_t hour; //hh
uint8_t min; // mm
uint8_t sec; // ss
uint8_t mday; // dd
uint8_t mon; // MM
uint16_t year; // YYYY
uint8_t wday; // W
// Чтение даты/времени
if (!rtc.getDateTime(&hour, &min, &sec, &mday, &mon, &year, &wday)) {
Serial.println("Error:0000");
}
else{
Serial.print("Today is: ");
Serial.print(hour);
Serial.print(de0);
Serial.print(min);
Serial.print(de0);
Serial.print(sec);
Serial.print(" ");
Serial.print(mday);
Serial.print(de1);
Serial.print(mon);
Serial.print(de1);
Serial.print(year);
Serial.print(" W: ");
Serial.println(wday);
}
delay(1000); // Задержка 1000 мс
}```
а батарейка в часах есть ?)))
а она точно заряд держит ?)))
что то я не знаю тогда причину)))
Бабос, можете библиотеку подсказать нормальную.
Может в ней причина?
у меня их чуть ли не 10ток, и каждый раз перебираю какую использовать, то одно, то другое не работает…
возможно iarduino_RTC.h то что нужно, но это не точно
Ну, видимо, так и надо, раз “работает как надо”! Забейте!
Китайцы в своих часах очень любят ds1302 использовать. Ввиду дешевизны, очевидно.) Только там писать то всего ничего. Сотня строк за глаза.)
#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS1302, 2, 3, 4);
void setup() {
delay(300);
Serial.begin(9600);
time.begin();
time.settime(10, 10, 10, 4, 10, 2026, 3); // 10 секунд, 10 минут, 10 часов, 4 октября, 2017 года, среда
}
void loop() {
if (millis() % 1000 == 0) {
Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время
delay(1); // делаем небольшую задержку, чтобы не выводить время слишком часто
}
}
Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Плата:"Arduino Uno"
C:\Users\new\Desktop\AT0000\AT0000.ino: In function 'void setup()':
AT0000:7:9: error: 'class iarduino_RTC' has no member named 'begin'
time.begin();
^~~~~
exit status 1
'class iarduino_RTC' has no member named 'begin'
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
ну вот, уже начали целые лишние строки в место 1го символа пихать…
Я скопировал код поменял на Ваш. И вуаля. Ничего не работает, такая же ошибка.
Что за ошибка то?
это лишняя строчка! я же говорил вам что курс надо сначала пройти ?)))
а еще вы кажется обманщик!))) у меня компилируется даже с лишней строчкой!
ds3231 работает на ура и время сохраняется при выключенном ардуино…
Вот переменные. И методы.
#include "uRTCLib.h" //Часы
int ss=0;
int mm=0;
int hh=0;
int dd=0;
int w=0;
String W0="$";
String W1="$";
int MM=0;
int YYYY=1000;
int t=0;
String de0="/";
String de1=":";
String Si="\xC2\xB0";
uRTCLib rtc(0x68);
char WW0[7][24] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday","Sunday"};
char WW1[7][24] = { "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"};
void Init0() {
Serial.begin(9600);
URTCLIB_WIRE.begin();
// rtc.set(second, minute, hour, dayOfWeek, dayOfMonth, month, year)
rtc.set(0, 20, 15, 7, 1, 2, 26); //после установки при первом запуске, штрихуем комментируя эту строчку.
//и время будет тикать само.
}
void R0(){
t=(rtc.temp()/ 100);
W0=WW0[rtc.dayOfWeek()-1]; //День недели (Сроковый)
W1=WW1[rtc.dayOfWeek()-1]; //День недели (Сроковый)
w=rtc.dayOfWeek(); //День недели (Числовой)
dd=rtc.day(); //День месяца
MM=rtc.month(); //Месяц
YYYY=2000+rtc.year(); //Год
hh=rtc.hour(); //Часы
mm=rtc.minute(); //Минуты
ss=rtc.second(); //Секунды
}
void R1(){
rtc.refresh();//Обновлем таймер.
R0();//Обновляем в пременные.
Serial.println(w+de0+"("+W1+")"+de0+ dd+de0+ MM+de0 +YYYY+" "+hh+de1+mm+de1+ss+" t: "+ +t +Si+"C");//Выводим на экран данные
}
void setup (){
Init0();
R1();
}
void loop(){
R1();
delay(230);
}
Спасибо, добрый человек.
а ты точно программистом был, пока лекарства не начали работать?
Кто ж теперь вспомнит …