Grafik-Timer Problem DOGXL160

Hallo!
Projekt: Steuerung eines Motor’s über 3 Schalter (H),(1 und 2 sind Endschalter) , Anzeige auf Grafikdisplay DOGXL160.

Grundsätzliche Erklärung: Motorsteuerung funktioniert, Anzeige nicht.

Wenn der Hauptschalter “H” HIGH geschaltet wird, Schalter “1” ist HIGH, Schalter “2” ist LOW
soll der Motor rechts drehen bis Schalter “2” HIGH wird, währenddessen wird automatisch Schalter “1” LOW.
Solange der Motor läuft wir am Display fix eine Grafik (LOGO2) dargestellt und 2 weitere (LOGO1)+(LOGO4) sollen sich im 200 ms Takt abwechseln.
Wenn Schalter “2” High ist schaltet der Motor ab und die Grafik wechselt auf (LOGO3) .

Bis hierher hat es funktioniert (dank an Oliver Kraus für U8GLIB)

Doch im letzten Zustand (Schalter “2” High) wird LOGO4 angezeigt, was nicht sein soll. Nur LOGO3.

Als Anfänger ist der Sketch nicht sauber Programmiert. (lerne noch)

Denke, irgendwo beim Takten der Grafik liegt das Problem. (HIGH.LOW)

Würde es gerne mit einem Timer 200ms Takt der mir 1,2,3,2,1 ausgibt, dann mit case1, case2, case3 lösen, aber das bekomme ich derzeit noch gar nicht hin.

Bin dankbar für jede Hilfe

blauzahnsteuerung-test.ino (7.23 KB)

switch(schalterStatus2)
  {
    case (HIGH): drawLogo3(); break;             //tastenfeld
    case (LOW): drawLogo2(); break;              //funke
  }   
  switch(caseStatus && schalterStatus2 != HIGH) 
  {
    case (LOW) : drawLogo4(); break;             //dreieck verändert
    case (HIGH) : drawLogo1(); break;            //dreieck
  }

solltest Du mit if machen

Grüße Uwe

Danke Uwe, das läuft besser.

Möchte noch die drei logos 1,2,3 ( ohne delay) mittels millis im Lauflichtmodus anzeigen.

Alle Beispiele im Netz geben bei den OUTPUTS aus, möchte es aber als wert (y) ausgeben und damit die logos wechseln. Habe es auf verschiedene arten versucht. Hänge aber so richtig fest. Brauch einen RESET :confused:

So wie bei (x) das wird mit Tastern ungeschaltet.

Mit welcher Funktion verwirklicht man das???

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  

  if (schalterStatus2 == HIGH) 
    drawLogo5();                //tastenfeld   
  else 
    drawLogo4();                //funke



    
  if (schalterStatus2 == LOW) 
  
   switch (y)
  
  {
    case0 : drawLogo1(); break;             //dreieck 
    case1 : drawLogo2(); break;             //dreieck verändert 
    case2 : drawLogo3(); break;             //dreieck verändert +
  } 


  if (schalterStatus2 == HIGH)
  
  switch(x) 
  {
    case 0 : drawLogo10(); break;  
    case 1 : drawLogo11(); break; 
    case 2 : drawLogo12(); break; 
    case 3 : drawLogo13(); break;  
    case 4 : drawLogo14(); break; 
    case 5 : drawLogo15(); break;    
    case 6 : drawLogo16(); break;  
    case 7 : drawLogo17(); break; 
    case 8 : drawLogo18(); break;
    case 9 : drawLogo19(); break;
 
   }



 //  if((millis() - prev) > intervall){
 //   prev = millis();
 //  }
 //   for (y = 0; y < 3; y++)