Приветствую.
Дано:
Ардуино Uno R3;
Модуль часов ds3231.
Батарейка 3V.
Подключал так:
GND->GND
5V->VCC
SCL->A4
SDA->A5
Дан код такой:
#include <DS3231.h>
static const uint8_t P0 = A4;
static const uint8_t P1 = A5;
DS3231 rtc(P0, P1); //
void setup() {
Serial.begin(9600);
rtc.begin();
// Установка времени
rtc.setDOW(FRIDAY); // Установить день недели
rtc.setTime(16, 29, 0); // Установить время 16:29:00 (формат 24 часа)
rtc.setDate(31, 8, 2018); // Установить дату 31 августа 2018 года
}
void loop() {
Serial.print(rtc.getDOWStr()); // Отправляем день недели
Serial.print(" ");
Serial.print(rtc.getDateStr()); // Отправляем дату
Serial.print(" -- ");
Serial.println(rtc.getTimeStr()); // Отправляем время
delay(1000); // Задержка в одну секунду
}
Проблема:
Дает ошибку на строке с аналоговыми выводами.
A:6:18: error: no matching function for call to 'DS3231::DS3231(const uint8_t&, const uint8_t&)'
DS3231 rtc(P0, P1);
Есть сомнения в удивлении.
Примеры к используемой библиотеке смотрели? Там так инициализируется объект? Наверняка же без параметров.
2 лайка
Дайте мне правильный код и библиотеку.
Вроде бы нашел код сейчас выложу.
И ключ от квартиры где деффки вижжят…
Еще такой вопросик, а как напримр сделать чтобы часы синхронизировлись плавно с refresh(); т.е. чтобы не было скачков давления при движении масс спектрального анализатора повышенной индуктивности. Т.е. delay(1000) должно синхронизироваться.
NMi
01.Февраль.2026 10:15:27
10
Чувак, что за дурЬ ты куришь?
2 лайка
Я ни курил.
//Original code author belongs to: https://arduinokitproject.com/ds3231-rtc-arduino-tutorial/
//Code modified by: countervector0000;
#include "Arduino.h"
#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 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 setup() {
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 loop() {
rtc.refresh();//Обновлем таймер.
R0();//Обновляем в пременные.
Serial.println(w+de0+"("+W1+")"+de0+ dd+de0+ MM+de0 +YYYY+" "+hh+de1+mm+de1+ss+" t: "+ +t +Si+"C");//Выводим на экран данные
delay(1000);
}
Как дальше сделать плавное обновление секунд??
Например, delay(1000); должно плавно сочетаться с обновлением переменных hh:mm:ss;
lilik
01.Февраль.2026 10:47:00
17
Для плавного обновления используй delay(222);
NMi
01.Февраль.2026 10:53:47
18
Мошт delay (0,5L) или (0,7L) и совсем жосткА = delay (1,0L)
1 лайк
Вызывать refresh() по прерыванию от часов.
Не надо давить на часы.
countervector0000:
при движении масс
И пусть эти часы стоят на месте.
Зашунтировать индуктивность резистором.
Мишутк
01.Февраль.2026 14:58:50
20
//Original code author belongs to: https://arduinokitproject.com/ds3231-rtc-arduino-tutorial/
//Code modified by: countervector0000;
#include "Arduino.h"
#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] = { "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"};
bool 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(); //Минуты
int ss_prev=ss;
ss=rtc.second(); //Секунды
return (ss != ss_prev);
}
void setup() {
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 loop() {
rtc.refresh();//Обновлем таймер.
if ( R0() )//Обновляем в пременные.
{
Serial.println(w+de0+"("+W1+")"+de0+ dd+de0+ MM+de0 +YYYY+" "+hh+de1+mm+de1+ss+" t: "+ +t +Si+"C");//Выводим на экран данные
}
delay(50);
}
1 лайк
int ss_prev=ss;
ss=rtc.second();
return (ss != ss_prev);
Спасибо, еще раз.