Ahoj lidi,
pustil jsem se do malého projektu kde potřebuji pracovat s RTC. Mám Arduino UNO, RTC DS3231 přes I2C a LCD 2004 pres I2C. LCD zobrazuje čas i datum z RTC bez problémů. Moje slabé místo je že potřebuji z RTC vyčíst aktuální čas který potřebuji převést na sekundy a v programu porovnat s jinou proměnnou která je taky v sekundách. Už nad tím trávím nejeden večer a nic. Na úvodu programu, jak se inicializují knihovny, RTC i LCD, tak jsem se dočetl ze musím inicializovat proměnnou (třeba "datumCas") pro práci s časem : DateTime datumCas (někde je vidět typ proměnné jako RTCDateTime). V loopu se pak tato proměnná naplní z RTC datumCas = rtc.getDateTime() a dále se s ní může pracovat po částech třeba jako Serial.print(datumCas.hour);
Jenže já neprojdu kompilací, hned u inicializace proměnné "DateTime" mi to vyhodí chybu.
Zkoušel jsem několik knihoven ale také bez úspěchu
Jak dál, poradí někdo?
Načítání hodnot z RTC
Načítání hodnot z RTC
- Přílohy
-
- 02 - chyba pri kompilaci.PNG (6.8 KiB) Zobrazeno 3940 x
-
- 01 - úvodní knihovny.PNG (8.59 KiB) Zobrazeno 3940 x
Re: Načítání hodnot z RTC
myslím, že ti tam chybí knihovna
#include <DateTime.h>
a je lepším dát celý kód
#include <DateTime.h>
a je lepším dát celý kód
Re: Načítání hodnot z RTC
Nepoužívej název DateTime, ale tak jak je to v příkladech
Taky nechápu to
Taky nechápu to
Kód: Vybrat vše
DS3231 rtc(SDA,SCL);
Kód: Vybrat vše
#include <Wire.h>
#include <DS3231.h>
// inicializace RTC z knihovny
DS3231 rtc;
// vytvoření proměnné pro práci s časem
RTCDateTime datumCas;
void setup() {
// zahájení komunikace po sériové lince
// rychlostí 9600 baud
Serial.begin(9600);
// zahájení komunikace s RTC obvodem
rtc.begin();
// nastavení času v RTC podle času kompilace programu,
// stačí nahrát jednou
// rtc.setDateTime(__DATE__, __TIME__);
// přímé nastavení času pro RTC
//rtc.setDateTime(__DATE__, "12:34:56");
}
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Načítání hodnot z RTC
A tady to právě záleží na tom co máš za knihovnu. V jedné verzi (ta za arduino navodu) co jsem našel je :
Jiná knihovna má zase :
A proto máme rádi, když někdo kdo chce najít chybu, nebo pomoc, pošle celý kód i s odkazy na knihovny, které používá. Ideálně i se schématem zapojení.
Kód: Vybrat vše
struct RTCDateTime
{
uint16_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minute;
uint8_t second;
uint8_t dayOfWeek;
uint32_t unixtime;
};
Kód: Vybrat vše
class DateTime {
public:
DateTime (uint32_t t =0);
DateTime (uint16_t year, uint8_t month, uint8_t day,
uint8_t hour =0, uint8_t min =0, uint8_t sec =0);
DateTime (const char* date, const char* time);
uint16_t year() const { return 2000 + yOff; }
uint8_t month() const { return m; }
uint8_t day() const { return d; }
uint8_t hour() const { return hh; }
uint8_t minute() const { return mm; }
uint8_t second() const { return ss; }
uint8_t dayOfTheWeek() const;
// 32-bit times as seconds since 1/1/2000
long secondstime() const;
// 32-bit times as seconds since 1/1/1970
// THE ABOVE COMMENT IS CORRECT FOR LOCAL TIME; TO USE THIS COMMAND TO
// OBTAIN TRUE UNIX TIME SINCE EPOCH, YOU MUST CALL THIS COMMAND AFTER
// SETTING YOUR CLOCK TO UTC
uint32_t unixtime(void) const;
protected:
uint8_t yOff, m, d, hh, mm, ss;
};
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti