Projektvorstellung: Library für das Erstellen von Menus für LCD Displays

Guten Morgen miteiander,

ich hab mein Problem gelöst. Der Fehler entstand, da keine Zeitbfrage mehr läuft wenn man mit der IR-Fernbedinung eingibt. Er erkennt einfach es ist einmal ein Signal gekommen und denkt es ist immer da. Damit ruft er immer wieder die Routinen zum letzten Signal (up, down und so weiter )auf.

Ich habe das ganze jetzt gefunden indem ich Step by Step mit dem Serial Monitor Statusmeldungen bei jeder Funktion ausgegeben habe, wenn Sie aktiviert wurde. Dabei fiel mir auf, dass es sich sofort um eine Endlosschleife handelte, sobald einmal die Fernbedienung aktiv war.

Die Lösung waren zwei Boolean und zwei If Schleifen. Ich habe zum als die Booleans im IR Eingangssignal eingebaut.

//Pseudocode
//...
// Funktion wird aufgeführt
 if (dstatus == false) {dstatus = true; lastdstatus = false;}
          else {dstatus = false; lastdstatus = true;}

Als nächstes habe ich die Prüfroutine eingebaut. Wenn einmal ausgelöst wurde, wird der lastdstatus dem status gleichgesetzt.

void loop()
{  
  Abfrage();
  if(g_function != 255)                                         //Überprüfen welche Funktion gerade läuft und gegebenfalls wieder aufrufen 
  {   
    LCDMenu_functions[obj_lcdmenulib.curfuncname]();            //Menüroutine starten
  }
    if (dstatus != lastdstatus)                                 //Prüfen, dass keine Endlosschleife der Fernbedienung
    {
    ButtonMode_analog();                                        //Eingaben ausführen 
    lastdstatus=dstatus;                                        // Status ändern    
  }   
}

Jetzt läuft es.