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

Все подключил.
Есть либа для ардуино RTC_DS1302. Скачал через менеджер библ…
Установил и другие пробовал но не распознается.

#include <RTC_DS1302.h>  
// Инициализация модуля DS1302  
iarduino_RTC time(RTC_DS1302, 6, 7, 8); // RST, DAT, CLK [3](https://vk.com/wall-43363264_585609)  

void setup() {  
    // Настройка порта времени DS1302  
    rtc.halt(false);  
    rtc.writeProtect(false);  
    // Установка времени  
    rtc.setDOW(SATURDAY);  
    rtc.setTime(12, 30, 0);  
    rtc.setDate(5, 5, 2023);  
}  

void loop() {  
    // Чтение времени с модуля DS1302  
    rtc.readTime();  
    int hour = rtc.getHour();  
    int minute = rtc.getMinute();  
    int second = rtc.getSecond();  
    // Вывод времени в монитор порта  
    Serial.print(hour);  
    Serial.print(":");  
    Serial.print(minute);  
    Serial.print(":");  
    Serial.println(second);  
    delay(1000);  // Задержка 1 секунду  
}
Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Плата:"Arduino Uno"

T0001:3:1: error: 'iarduino_rtc' does not name a type; did you mean 'Arduino_h'?

 iarduino_rtc time(RTC_DS1302, 6, 7, 8); // RST, DAT, CLK

 ^~~~~~~~~~~~

 Arduino_h

C:\Users\new\Documents\Arduino\T0001\T0001.ino: In function 'void setup()':

T0001:7:5: error: 'rtc' was not declared in this scope

     rtc.halt(false);

     ^~~

C:\Users\new\Documents\Arduino\T0001\T0001.ino:7:5: note: suggested alternative: 'getc'

     rtc.halt(false);

     ^~~

     getc

T0001:10:16: error: 'SATURDAY' was not declared in this scope

     rtc.setDOW(SATURDAY);

                ^~~~~~~~

C:\Users\new\Documents\Arduino\T0001\T0001.ino: In function 'void loop()':

T0001:17:5: error: 'rtc' was not declared in this scope

     rtc.readTime();

     ^~~

C:\Users\new\Documents\Arduino\T0001\T0001.ino:17:5: note: suggested alternative: 'getc'

     rtc.readTime();

     ^~~

     getc

exit status 1

'iarduino_rtc' does not name a type; did you mean 'Arduino_h'?

Админы, ну забаньте уже этого юродивого, а?

4 лайка

Я - не идиот, не псих, не болван, не юродивый, не урод, не кретин, не задира, не выскочка, не высокомерный, не самоуверенный, не Пикунов Андрей, Не Паша Лопатенко, Не порча знаний, Не порча Сознаний, Не Камиль Аджиев. Не Яворский, Не Рыба, Я друг, я свой, я человек, я бог, я жизнь, я процветание, я не муки, я не Иисус Христос, Я ангел, Я не раб сатаны, я не его друг. Я просто задаю правильные вопросы в правильное время. Я не люблю зло, а свобода это когда делаешь себе добро и при этом не трогаешь нос другого.
Я - Алунц Артур, он же countervector. Он же countervector0000.

Ну какиеже правильнве вопросы?
Там же написано

посмотри в примере как должно быть

Вопросы правильные, поэтому на них возникают ответы.

:::Вопросы:::

  1. Вопрос какие должны быть пины: У меня такие задействованы.
    //(6, 7, 8); // RST, DAT, CLK

  2. Как здесь определить их? (В вашем коде)
    #define RTC_CLK 25
    #define RTC_DAT 26
    #define RTC_RST 27

Это не мой код. Это код автора библиотеки. Если возмёшь этот скетч, пропишешь ноги к которым подключен твой модуль, то должно всё заработать.

Ты счас вот прям серьёзно ашибаешься.

2 лайка

Ошибаюсь я а ошибка ты!

#include <RTC_DS1302.h>

#define RTC_CLK 6
#define RTC_DAT 7
#define RTC_RST 8

DS1302 rtc(RTC_RST, RTC_CLK, RTC_DAT); //P:::8,6,7

uint8_t past_sec;

void setup() {
  Serial.begin(115200);
  rtc.init();
  rtc.setReg(REG_HOUR,rtc.hour&0x7F); // Set 24-hour format (need once). The list of register names is in the Ds1302.h file.
}

void loop() {
    rtc.getDateTime();
    if(rtc.second!=past_sec){
        past_sec=rtc.second;
        Serial.printf("%d-%02d-%02d %02d:%02d:%02d",2000+rtc.year,rtc.month,rtc.day,rtc.hour,rtc.minute,rtc.second);

}
    delay(10);
}

21 строчка кода проблема:
Пишет ошибку.
Мне нужен обычный код:
setDate(2026,1,9);
setTime(19,00,00);
getMinutes()
getSeconds()// и т.д. и т.п.

А раэрешение на использование printf ты поставил?

На уно же, вроде бы, нет такой настройки.

А какая разница, что есть на Uno, а чего нет? Тут же по-любому …

3 лайка

Ну ладно он, мы ж не такие. Должно быть всё достоверно.

Боюсь что это навсегда.(

Да уж… давно для уно не открывал настроек.

Вот что получилось! Я нашел библиотеку в интернете!

Немного сократил его код и вот что …

#include <Wire.h>
#include <Alash_DS1302.h>
/*
  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(11, 59, 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("Today is:" + hour + de0+ min +de0 + sec + "   "+de1 + mday +de1 + mon +de1+ year+" W: "+ wday);
  }
  delay(1000);  // Задержка 1000 мс
}

Скажите, ребята, а почему не показываются часы hh (В мониторе порта)?

проблема тут, почитайте про функции про лож и истину, пройдите курсы сначала, а потом когда получите базовый уровень, сможете задавать вопросы))) еще за 10к могу попытаться решить каждый ваш вопрос, подходит ?

а еще может вот этот символ ( ! ) надо куда то там вставить, держите))) или условие else…

Потому, что

Неправда неправда.