DCF77 Uhrzeit / Screen per Taster umschalten

Hallo zusammen, habe mal wieder eine Frage an der ich scheitere :~

Ich habe 2 Taster an meinen Arduino um meine gespeicherten Min und Max Temperaturen anziegen zu lassen. Wenn keine Taste gedrückt ist, wird die aktuelle Temperatur und Luftfeuchte angezeigt. Mein wunsch ist es noch einen DCF77 Empfänger (Pollin) anzuschließen und mit einem weiteren Taster den Screen komplett auf "Uhrzeit / Datum" Anzeige umschalten zu können. Mit den 2 Tastern für die Max und Min Temp wird der Screen auch umgeschaltet aber nur für ca. 10s. Das ist auch gut und so gewollt. Aber wie bekomme ich es hin das die Uhrzeit und Datumsanzeige dauerhaft mit dem 3ten Taster angezeigt wird solange bis er erneut gedrückt wird? Dabei soll aber der Rest der loop weiterlaufen da hier später noch Tempwerte per Ehternet und GET weitergegeben werden sollen. Bin da etwas überfragt. Habt ihr ein Denkanstoß für mich? Dachte ich könnte den 3ten Taster "zählen" wie oft er gedrückt wurde und bei gerader Zahl soll die Temp Anzeige kommen und bei ungerader dann die Uhrzeit und dies per While Schleife, jedoch fürchte ich das der Rest der Loop in der Zeit einfach stehen bleibt. Sorry für die wahrscheinlich lächerliche Frage, aber irgendwie habe ich einen ziehmlichen Knoten im Moment im Kopf. Anbei noch meine Loop:

void loop(void) // Diese Loop wird ständig wiederholt
{ 
  Backlight(); // Aufruf der "Backlight" Loop
  UpdateMinMax(); // Min. und Max. Temp. / Luftfeuchte ermitteln und speichern
  buttonState = digitalRead(analogPin1); // Min. Taster überwachen
  buttonState2 = digitalRead(analogPin2); // Max. Taster überwachen

  if (buttonState == HIGH && tempupdate == 0) { // Wenn kein Taster gedrückt ist und Tempupdate = 0 
      ShowActual(); // dann aktuelle Werte darstellen
      } 
  if 
     (buttonState == HIGH && tempupdate == 1) { // Wenn kein Taster gedrückt ist und Tempupdate = 1    
      ShowUpdate(); // dann Screen updaten
      }      
  if 
     (buttonState == LOW && tempupdate == 0) {  // Wenn Min. Taster gedrückt ist und Tempupdate = 0   
      ShowMin(); // zeige Minimale Temperaturen und Luftfeuchte
      } 
  if 
     (buttonState2 == LOW && tempupdate == 0) { // Wenn Max. Taster gedrückt ist und Tempupdate = 0   
      ShowMax(); // zeige Maximale Temperaturen und Luftfeuchte
      } 
}

ht81:
Habt ihr ein Denkanstoß für mich? Dachte ich könnte den 3ten Taster "zählen" wie oft er gedrückt wurde und bei gerader Zahl soll die Temp Anzeige kommen und bei ungerader dann die Uhrzeit und dies per While Schleife, jedoch fürchte ich das der Rest der Loop in der Zeit einfach stehen bleibt.

Probieren wir es mal... Dein Ansatz ist prinzipiell nicht verkehrt. Ich würde in der loop() sämtliche Daten sammeln und eine Variable screen definieren. in Abhängigkeit von screen werden dann die entsprechenden Daten angezeigt, also ein if()-Block:

void loop (){
  // hier Daten sammeln, Temperaturen, Zeit etc.
  if (screen==0) {
     // hier deinen bisherigen Code
  }
  if (screen==1) {
    // hier den Code zum Anzeigen der Uhrzeit
  }
  // hier eine Toggle-Funktion: Abfrage des Tasters 3, screen alternierend zwischen 0 und 1
}

Die Toggle-Funktion sollte sich mit der Modulo-Anweisung schnell basteln lassen.

Hallo sht77,

Sorry das ich erst jetzt antworte.

:slight_smile: Danke für den Denkanstoß. Ich werde mir das mit dem Togglen ansehen. Habe auch schon ein Roh Gerüst im Kopf. Mal sehen ob es sich so umsetzten lässt mit der Mudolo Funktion. Ich werde berichten.