RTC DS3231+ AT24C32 překakuje čas
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: RTC DS3231+ AT24C32 překakuje čas
Koukám, že tě to moc nebere,
tu moji obludnost na "posouvání znaků" když je méně než 10h nebo 10min
lze elegantně vyřešit pomocí "sprintf" a formátování výstupu "%02d:%02d"
škoda
tu moji obludnost na "posouvání znaků" když je méně než 10h nebo 10min
lze elegantně vyřešit pomocí "sprintf" a formátování výstupu "%02d:%02d"
škoda
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: RTC DS3231+ AT24C32 překakuje čas
Ahoj.
Super popsané, konečně se mi podařilo dostat na displej ten čas.
Mám dotaz. Lze z toho dostat i název dne? V popisu DS3231 jsem o tom něco četl, teprve začínám, tak je pro mne ještě problém to najít. Pomůžete mi prosím?
Díky
Super popsané, konečně se mi podařilo dostat na displej ten čas.
Mám dotaz. Lze z toho dostat i název dne? V popisu DS3231 jsem o tom něco četl, teprve začínám, tak je pro mne ještě problém to najít. Pomůžete mi prosím?
Díky
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: RTC DS3231+ AT24C32 překakuje čas
Google, dotaz - 3 řádek - odpověď
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
pominu že je to i v příkladech knihovny
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
pominu že je to i v příkladech knihovny

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: RTC DS3231+ AT24C32 překakuje čas
Píše mi to:
'class DS3231' has no member named 'getDOWStr'
Znamená to, že mám špatnou knihovnu? Nebo to špatně volám?
String test = rtc.getDOWStr();
Serial.println(test);
Příklady z této knihovny mi nejdou zkompilovat, píše mi to:
'tmElements_t' was not declared in this scope
a vadí mu něco kolem tohoto řádku:
tmElements_t tm;
'class DS3231' has no member named 'getDOWStr'
Znamená to, že mám špatnou knihovnu? Nebo to špatně volám?
String test = rtc.getDOWStr();
Serial.println(test);
Příklady z této knihovny mi nejdou zkompilovat, píše mi to:
'tmElements_t' was not declared in this scope
a vadí mu něco kolem tohoto řádku:
tmElements_t tm;
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: RTC DS3231+ AT24C32 překakuje čas
Tak vyzkoušej, já to nemám jak vyzkoušet, nemám tento RTC, a články se rozcházejí,
pokud máš tuto knihovnu https://github.com/NorthernWidget/DS3231
tak toto je přímo z ní.
Ale je spousta upravených knihoven vycházejících z této ... jestli máš jinou, hoď odkaz ...
Serial.print(rtc.getDoW(), DEC);
DoW by měl být day off week
pokud máš tuto knihovnu https://github.com/NorthernWidget/DS3231
tak toto je přímo z ní.
Ale je spousta upravených knihoven vycházejících z této ... jestli máš jinou, hoď odkaz ...
Serial.print(rtc.getDoW(), DEC);
DoW by měl být day off week
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: RTC DS3231+ AT24C32 překakuje čas
Tak jsem ji nainstaloval a nejde to zkompilovat, najednou to píše:
'RTCDateTime' does not name a type; did you mean 'DateTime'?
Nelíbí se mu:
RTCDateTime datumCas; // vytvoření proměnné pro práci s časem
Tak teď jsem z toho úplně blby...
Použil jsem kód tady od kolegy, co řešil přeskakující čas, jelo mi to, než jsem nainstaloval tu knihovnu z odkazu. Teď nevím, jak z toho ven...
'RTCDateTime' does not name a type; did you mean 'DateTime'?
Nelíbí se mu:
RTCDateTime datumCas; // vytvoření proměnné pro práci s časem
Tak teď jsem z toho úplně blby...
Kód: Vybrat vše
//RTC DS3231 hodiny reálného času + AT24C32 paměťový modul
#include <Wire.h> // připojení potřebných knihoven
#include <DS3231.h>
DS3231 rtc; // inicializace RTC z knihovny
RTCDateTime datumCas; // vytvoření proměnné pro práci s časem
// LCD 20x4 I2C
#include <Wire.h> // knihovny pro LCD přes I2C
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4); // nastavení adresy I2C (0x27 v mém případě) a dále počtu znaků a řádků LCD, zde 20x4
void setup() {
Serial.begin(9600);
// LCD 20x4 I2C
lcd.init(); // inicializace LCD
lcd.backlight(); // zapnutí podsvícení
lcd.print("Cas ");
lcd.setCursor( 15, 0);
}
void loop() {
if (Serial.available())
{
if (Serial.read() == 'T') nastav_cas(); // když je první znak velké 'T', nastaví se čas podle následujících čísel
while (Serial.available()) Serial.read(); // všechno ostatní ze sériové linky se smaže
}
ds3231(10);
Serial.println("Test");
}
//RTC DS3231 hodiny reálného času + AT24C32 paměťový modul
void ds3231(short DS3231_delay) {
// načtení času z RTC do proměnné
datumCas = rtc.getDateTime();
// postupný tisk informací po sériové lince
/* Serial.print("Datum a cas DS3231: ");
Serial.print(datumCas.year); Serial.print("-");
Serial.print(datumCas.month); Serial.print("-");
Serial.print(datumCas.day); Serial.print(" ");
Serial.print(datumCas.hour); Serial.print(":");
Serial.print(datumCas.minute); Serial.print(":");
Serial.print(datumCas.second); Serial.println("");*/
//display
lcd.setCursor( 5, 1);
lcd.print(dOw);
// zobrazení datumu
lcd.setCursor( 5, 2);
lcd.print(".");
lcd.setCursor( 8, 2);
lcd.print(".");
if (datumCas.day < 10) { //pokud je mene nez 2 znaky
lcd.setCursor( 3, 2);
lcd.print("0");
lcd.setCursor( 4, 2);
lcd.print(datumCas.day);
} else { //pokud jsou 2 znaky
lcd.setCursor( 3, 2);
lcd.print(datumCas.day);
}
if (datumCas.month < 10) { //pokud je mene nez 2 znaky
lcd.setCursor( 6, 2);
lcd.print("0");
lcd.setCursor( 7, 2);
lcd.print(datumCas.month);
} else { //pokud jsou 2 znaky
lcd.setCursor( 6, 2);
lcd.print(datumCas.month);
}
lcd.setCursor( 9, 2);
lcd.print(datumCas.year);
// zobrazení času
lcd.setCursor( 6, 3);
lcd.print(":");
lcd.setCursor( 9, 3);
lcd.print(":");
if (datumCas.hour < 10) { //pokud je mene nez 2 znaky
lcd.setCursor( 4, 3);
lcd.print("0");
lcd.setCursor( 5, 3);
lcd.print(datumCas.hour);
} else { //pokud jsou 2 znaky
lcd.setCursor( 4, 3);
lcd.print(datumCas.hour);
}
if (datumCas.minute < 10) { //pokud je mene nez 2 znaky
lcd.setCursor( 7, 3);
lcd.print("0");
lcd.setCursor( 8, 3);
lcd.print(datumCas.minute);
} else { //pokud jsou 2 znaky
lcd.setCursor( 7, 3);
lcd.print(datumCas.minute);
}
if (datumCas.second < 10) { //pokud je mene nez 2 znaky
lcd.setCursor( 10, 3);
lcd.print("0");
lcd.setCursor( 11, 3);
lcd.print(datumCas.second);
} else { //pokud jsou 2 znaky
lcd.setCursor( 10, 3);
lcd.print(datumCas.second);
}
// pauza na konci smyčky loop
delay(DS3231_delay);
}
void nastav_cas(void) // T 20,1,10,18,56 = 10.ledna 2020 ; 18:56, přes seriový monitor
{
delay(10); // chvilku pauza, aby se stačil načíst celý řetězec z komunikace
byte rok = Serial.parseInt();
byte mesic = Serial.parseInt();
byte den = Serial.parseInt();
byte hodina = Serial.parseInt();
byte minuta = Serial.parseInt();
byte vterina= Serial.parseInt();
rtc.setDateTime(rok + 2000, mesic, den, hodina, minuta, vterina);
Serial.println("Nastaveno");
}
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: RTC DS3231+ AT24C32 překakuje čas
No, já nevím odkud jsi měl knihovnu, nepíšeš to, tak tu knihovnu co jsi instaloval poslední smaž.
Jak jsem psal, knihoven je spousta, je dobré psát odkud používáš ty tvoje.
Každá knihovna má "ukázky" jak co funguje, ty ukázkové programy ti chodí ?
Jak jsem psal, knihoven je spousta, je dobré psát odkud používáš ty tvoje.
Každá knihovna má "ukázky" jak co funguje, ty ukázkové programy ti chodí ?
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: RTC DS3231+ AT24C32 překakuje čas
Programuji teprve dva měsíce, takže čerpám hodně z příkladů na netu. Každý používá nějakou jinou knihovnu, takže jich mám nainstalovaných mraky a teď pořádně nevím, kterou potřebuji a ne. Jak tu knihovnu smažu? V IDE, Spravovat knihovny mi to nedovolí odinstalovat? Ve složce "C:\Program Files (x86)\Arduino\libraries" ji taky nevidím... Tak jak se ji zbavím. Jakou knihovnu jsem tam měl předtím už nevím, ale když odstraním všechny, tak si nahraju znova jen ty, co aktuálně používám. Našel jsem i jiný kód jak získat časové údaje a nastavit čas, takže teď používám knihovnu https://github.com/adafruit/RTClib a knihovnu WIRE, která je součástí IDE. Ta však neumí fce, které jsou v knihovnách pro RTC. No aspoň jsem zjistil, kde najdu klíčová slova, která s knihovnou můžu použít a že v ní existují i příklady... 

Re: RTC DS3231+ AT24C32 překakuje čas
doinstalovávané knihovny jsou v Dokumenty/Arduino/Libraries
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host