RTC-Uhr stellen funktioniert nicht

Hallo,

habe versucht bei meinem RTC-Modul die Zeit einzustellen, Habe dazu das Beispielprogramm aus der Doku verwendet. Leider ohne Erfolg. Das Einbinden der Librarys scheint nicht zu klappen.

#include <RV8523.h>
#inlcude <SenseBoxMCU.h>
//#include <senseBoxIO.h>
#include <Wire.h>
#define BUFF_MAX 32

RV8523 rtc;
unsigned int recv_size = 0;
char recv[BUFF_MAX];

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  delay(200);
 
  Serial.println("Init RTC...");
  rtc.begin();
  rtc.start();
  rtc.set24HourMode();   rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
  rtc.batterySwitchOver(1);
}


void loop()
{
  uint8_t sec, min, hour, day, month;
  uint16_t year;

  //Uhrzeit befindet sich in den einzelnen Variablen !
  rtc.get(&sec, &min, &hour, &day, &month, &year);

  //serial output
  Serial.print("\nTime: ");
  Serial.print(hour, DEC);
  Serial.print(":");
  Serial.print(min, DEC);
  Serial.print(":");
  Serial.print(sec, DEC);

  Serial.print("\nDate: ");
  Serial.print(day, DEC);
  Serial.print(".");
  Serial.print(month, DEC);
  Serial.print(".");
  Serial.print(year, DEC);

  //wait a second
  delay(1000);
}

entweder meckert der Compiler eine unzulässige include Anweisung. oder er meint dass „SECOND“ nicht kennt-

Hi @altprog,

ohne genaue Ausgabe des Compiler ist es wieder schwierig eine Lösung zu finden. Kannst du die hierhin kopieren?

SECOND, MINUTE, HOUR etc. sind nur Platzhalter für die Konkrete Uhrzeit, die du einstellen willst.

Viele Grüße
Mario

Je nach Auskommentiren der include-Dateien kommen verschiedene Fehlermeldungen. Hier die erste, wenn senssboxIO.h auskommentiert ist

Arduino: 1.8.10 (Mac OS X), Board: „senseBox MCU, ON as Default“

RTCSet:9:19: error: ‚char recv [32]‘ redeclared as different kind of symbol
char recv[BUFF_MAX];
^
In file included from /Users/rolf/Documents/Arduino/libraries/WiFi101/src/WiFiClient.h:28:0,
from /Users/rolf/Documents/Arduino/libraries/WiFi101/src/WiFi101.h:35,
from /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/SenseBoxMCU-Lib/SenseBoxMCU.h:13,
from /Users/rolf/Documents/Arduino/RTCSet/RTCSet.ino:2:
/Users/rolf/Documents/Arduino/libraries/WiFi101/src/socket/include/socket.h:1574:16: note: previous declaration ‚sint16 recv(SOCKET, void*, uint16, uint32)‘
NMI_API sint16 recv(SOCKET sock, void *pvRecvBuf, uint16 u16BufLen, uint32 u32Timeoutmsec);
^~~~
/Users/rolf/Documents/Arduino/RTCSet/RTCSet.ino: In function ‚void setup()‘:
RTCSet:19:34: error: ‚SECOND‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~~
/Users/rolf/Documents/Arduino/RTCSet/RTCSet.ino:19:34: note: suggested alternative: ‚SERCOM‘
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~~
SERCOM
RTCSet:19:42: error: ‚MINUTE‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~~
/Users/rolf/Documents/Arduino/RTCSet/RTCSet.ino:19:42: note: suggested alternative: ‚INPUT‘
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~~
INPUT
RTCSet:19:50: error: ‚HOUR‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~
RTCSet:19:56: error: ‚DAY‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~
/Users/rolf/Documents/Arduino/RTCSet/RTCSet.ino:19:56: note: suggested alternative: ‚DAC‘
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~
DAC
RTCSet:19:61: error: ‚MONTH‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~
RTCSet:19:68: error: ‚YEAR‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~
Mehrere Bibliotheken wurden für „SenseBoxMCU.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/SenseBoxMCU-Lib
Mehrere Bibliotheken wurden für „Wire.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/arduino/hardware/samd/1.8.11/libraries/Wire
Mehrere Bibliotheken wurden für „SPI.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/arduino/hardware/samd/1.8.11/libraries/SPI
Mehrere Bibliotheken wurden für „TinyGPS++.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/TinyGPSPlus
Mehrere Bibliotheken wurden für „DallasTemperature.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/Arduino-Temperature-Control-Library
Mehrere Bibliotheken wurden für „RV8523.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/RV8523
Mehrere Bibliotheken wurden für „WiFi101.h“ gefunden
Benutzt: /Users/rolf/Documents/Arduino/libraries/WiFi101
Nicht benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/WiFi101
Mehrere Bibliotheken wurden für „OneWire.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/OneWire
Mehrere Bibliotheken wurden für „senseBoxIO.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/senseBoxIO
Mehrere Bibliotheken wurden für „SD.h“ gefunden
Benutzt: /Users/rolf/Documents/Arduino/libraries/SD
Nicht benutzt: /Applications/Arduino.app/Contents/Java/libraries/SD
exit status 1
‚char recv [32]‘ redeclared as different kind of symbol

Wenn ich senseboxMCU auskommentiere:

Arduino: 1.8.10 (Mac OS X), Board: „senseBox MCU, ON as Default“

/Users/rolf/Documents/Arduino/RTCSet/RTCSet.ino: In function ‚void setup()‘:
RTCSet:19:34: error: ‚SECOND‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~~
/Users/rolf/Documents/Arduino/RTCSet/RTCSet.ino:19:34: note: suggested alternative: ‚SERCOM‘
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~~
SERCOM
RTCSet:19:42: error: ‚MINUTE‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~~
/Users/rolf/Documents/Arduino/RTCSet/RTCSet.ino:19:42: note: suggested alternative: ‚INPUT‘
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~~
INPUT
RTCSet:19:50: error: ‚HOUR‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~
RTCSet:19:56: error: ‚DAY‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~
/Users/rolf/Documents/Arduino/RTCSet/RTCSet.ino:19:56: note: suggested alternative: ‚DAC‘
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~
DAC
RTCSet:19:61: error: ‚MONTH‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~~
RTCSet:19:68: error: ‚YEAR‘ was not declared in this scope
rtc.set24HourMode(); rtc.set(SECOND, MINUTE, HOUR, DAY, MONTH, YEAR); // Aktuelle Uhrzeit / Datum HIER setzen!
^~~~
Mehrere Bibliotheken wurden für „RV8523.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/RV8523
Mehrere Bibliotheken wurden für „senseBoxIO.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/sensebox/hardware/samd/1.4.2/libraries/senseBoxIO
Mehrere Bibliotheken wurden für „Wire.h“ gefunden
Benutzt: /Users/rolf/Library/Arduino15/packages/arduino/hardware/samd/1.8.11/libraries/Wire
exit status 1
‚SECOND‘ was not declared in this scope

Dieser Bericht wäre detaillierter, wenn die Option
„Ausführliche Ausgabe während der Kompilierung“
in Datei → Voreinstellungen aktiviert wäre.

So wie es aussieht musst du nur die Uhrzeit an der entsprechenden Stelle eintragen. Ersetze mal SECOND, MINUTE etc. durch die aktuelle Uhrzeit und dem aktuellen Datum.

Hi @mario ,

danke für den Tipp. Ohne genau den Quelltext zu lesen, bin ich davon ausgegangen, dass man die Uhrzeit und das Datum eingibt und dann im passenden Moment auf „Stellen“ drückt. So kann man ja die Uhrzeit nicht exakt einstellen weil ja immer noch der Kompilierungsvorgang und der Ladevorgang dazwischen liegt. Ich probiere mal das zu ändern.

Viele Grüße

Altprog

Hi @Mario

mir ist noch aufgefallen, dass man die Daten im Oktalsystem eingeben muss. Da der September der 9. Monat ist, hat der Compiler bei der 9 gemeckert. Die Eingabe 011 für 9 hat er dann geschluckt und der Monat wird dann als Monat 9 ausgegeben.

@altprog
mit rtc.set(00, 16, 12, 6, 9,2021); funktioniert es bei mir. Ich denke du hast 09 beim Monat verwendet? Ich werde die Dokumentation aber auch noch erweitern und auch ein weiteres Beispielprogramm hinzufügen, bei dem die Uhrzeit dann über den Seriellen Monitor oder über einen NTP Server per WiFi abgerufen wird.