Не распознается библиотека Clock Module-2 DS1302

Babos, а почему, когда отключаешь комнату со все светом потом снова включаешь ардуино он не сохраняет таймер, даже если я комментирую строчку. с сеттером начального таймера-тамера.

Можно. Я же красивый!

1 лайк

потому что сначала надо пройти курс, повторить проекты, и большинство вопросов сразу отпадет, инфа 300%! из 100

1 лайк

потому что этот модуль не ах. У меня было точно так же и уже давно ничего кроме модуля 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 мс
}```

а батарейка в часах есть ?)))

1 лайк

а она точно заряд держит ?)))
что то я не знаю тогда причину)))

Бабос, можете библиотеку подсказать нормальную.
Может в ней причина?

у меня их чуть ли не 10ток, и каждый раз перебираю какую использовать, то одно, то другое не работает…
возможно iarduino_RTC.h то что нужно, но это не точно

Ну, видимо, так и надо, раз “работает как надо”! Забейте!

2 лайка

Китайцы в своих часах очень любят 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го символа пихать…

Я скопировал код поменял на Ваш. И вуаля. Ничего не работает, такая же ошибка.
Что за ошибка то?

это лишняя строчка! я же говорил вам что курс надо сначала пройти ?)))

а еще вы кажется обманщик!))) у меня компилируется даже с лишней строчкой!

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);
}


Спасибо, добрый человек.

1 лайк

а ты точно программистом был, пока лекарства не начали работать?

Кто ж теперь вспомнит …

2 лайка