Wortuhr- Problem beim Programm

Wir sind aktuell an einem Schulprojekt, bei dem wir eine Wortuhr bauen und programmieren.
Bis gestern hat auch alles funktioniert, doch seit heute können wir unser Programm nicht mehr hochladen, da er uns sagt: „RTC' was not declared in this scope".

Wortuhr_CODE.ino.ino (14,4 KB)

Das ist unser Code. Das Problem tritt in Zeile 80 auf. Vielleicht kann uns jemand da draußen helfen.
Danke schonmal im Voraus

Setze deinen Sketch bitte hie in Code-Tags rein, wie das geht kannst hier nachlesen.
Dann kann den auch jeder sehen und lesen.

Ich kenn mich damit leider garnicht aus. Weiß auch nicht was ich machen muss.

Das steht alles im Link drin.
Aber einfach gesagt.
Deinen Sketch in der IDE mit rechter Maustaste anklicken und für Forum kopieren klicken und hier einfügen.

Es fehlt vermutlich:

DS3232RTC RTC; 
...
  RTC.begin();

Schau Dir die Bibliotheksbeispiele an :wink:

Ich benutze den DS3231, da dieser angeblich auch mit in der Lib integriert ist.
Also schreib ich dann einfach DS3231RTC Rtc?

Es ist prima, das du auch auf unsere Aussagen eingehst.
Warum setzt du den Sketch hier nicht so rein, das ihn alle lesen können ?

Die Bibliotheksauswahl ist richtig, Du darfst aber keine Deiner Phantasie entsprungenen Klassennamen verwenden. In der Bibliothek finde ich keine Unterscheidung zwischen DS3231 und DS3232, weshalb Du die Klasse DS3232RTC auch für die Hardware DS3231 verwenden mußt.

Der Compiler unterscheidet zwischen Groß- und Kleinschreibung :wink:

Okay ich Werde es später mal versuchen.
Danke schonmal

Hilfe zur Selbsthilfe:

  1. Bibliotheksbeispiele sind für mich ein Quell der Erkenntnis. Es gibt gute und schlechte Sammlungen, aber ein Blick lohnt.
  2. In DS3232RTC\library.properties findest Du den Link zur Bibliotheksbeschreibung. Unter Initialization function findest Du nur DS3232RTC myRTC;.
  3. In rtcTimeTemp.ino findest Du auch setSyncProvider(myRTC.get); mit allen notwendigen Initialisierungen.

Wir haben es jetzt ausprobiert, jedoch zeigt uns das Programm nur ES IST 12 UHR :frowning:
Ich hab die gleiche Initialisierung genutzt wie angegeben

Es funktioniert :slight_smile:
Dankeschön für die Hilfe

Der Code compiliert für einen UNO Fehlerfrei auf einer 1.8.19
AAAAber:

/tmp/arduino_modified_sketch_600367/sketch_may14f.ino:504:5: warning: "/*" within comment [-Wcomment]
     /* leds[59] = CRGB::Green;
      
/tmp/arduino_modified_sketch_600367/sketch_may14f.ino: In function 'void displaytime()':
/tmp/arduino_modified_sketch_600367/sketch_may14f.ino:442:16: warning: this statement may fall through [-Wimplicit-fallthrough=]
       SwitchLED(VierM, (sizeof(VierM) / 2));
       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/arduino_modified_sketch_600367/sketch_may14f.ino:444:5: note: here
     case 3:
     ^~~~
/tmp/arduino_modified_sketch_600367/sketch_may14f.ino:445:16: warning: this statement may fall through [-Wimplicit-fallthrough=]
       SwitchLED(DreiM, (sizeof(DreiM) / 2));
       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/arduino_modified_sketch_600367/sketch_may14f.ino:447:5: note: here
     case 2:
     ^~~~
/tmp/arduino_modified_sketch_600367/sketch_may14f.ino:448:16: warning: this statement may fall through [-Wimplicit-fallthrough=]
       SwitchLED(ZweiM, (sizeof(ZweiM) / 2));
       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/arduino_modified_sketch_600367/sketch_may14f.ino:450:5: note: here
     case 1:
     ^~~~

Das sind Warnungen, die ernst zu nehmen sind!

Das hier sieht komisch aus:

  if (Std > 12)
  { Stunde = Std - 12; }
  else if (Std == 0)
  { Stunde = 12; }
  else
  { Stunde = Std; }

Damit ist es nie Mitternacht.

Wenn ihr hier:

int Es[] = {0, 1};

das richtige benutzt, könnt ihr hier (und im ganzen restlichen Code)

  SwitchLED(Es, (sizeof(Es) / 2));

auf das sizeof und die Division verzichten.

Das ist eine Umrechnung 24h auf 12h Format

Im 12h - Format gibt es keine 0 Uhr, sondern nur 1 - 12.
Mitternacht ist 12:00 AM.
Die Geisterstunde ist vorbei beim Wechsel von 12:59 nach 01:00

Guck dir zum Spass noch an, wann der Wechsel zwischen AM und PM ist.
(11:59 AM -> 12:00 PM ist Mittag, die Kirchturmuhr schlägt 12 mal)
11:59 PM -> 12:00 AM ist Mitternacht

Bitteschön!

In einem öffentlichen Forum kann man nehmen, sollte aber auch geben. Du könntest beschreiben, warum es nun funktioniert! Damit hilfst Du jenen, die ein vergleichbares Problem zu lösen suchen.

Außerdem könntest Du das Thema als gelöst markieren, dann wissen Mitlesende, daß das Thema erfolgreich beendet werden konnte.

Ja klar gerne.
Wir haben die Anweisungen aus der Lib zu Initialisierung genutzt und dann den setSyncProvider() genutzt indem wir myRTC.get reingeschrieben haben und dann hat es funktioniert

Aus eurem Code in #1

  //Versuche auf RTC zu zugreifen
  setSyncProvider(RTC.get);

Nochmal: Euer Code aus #1 compiliert fehlerfrei.
Die Warnungen habt ihr ignoriert.

Ich glaub kein Wort.