Hallo zusammen.
Nach 3 Jahren Programmierabstinenz beschäftige ich mich wieder der Arduino-Programierung. Mein Neueinstieg ist doch "zäher" als gedacht...
Folgend möchte ich einen kurzen Summerton (Tasten-Rückmeldung) als Funktion programmieren, ohne das der Programmfluss unterbrochen wird.
Die Funktion wird vom beliebigen Prg.ort aufgerufen und läuft 500ms.
Folgender code funktioniert nicht richtig;
Code:
void loop() {
LEDumschalt();
SummerKurzON();
delay(1000); //Prog.ablauf unterbrochen [ms]
}
void SummerKurzON() { //Tasten-Quitierungston
digitalWrite(Summer, 1); //Summer einschalten
static unsigned long StartZeit = millis();
__TESTmarker__(millis()); //Anzeige nach erstem Durchlauf= 2451 // 2.Durchlauf= 3451
__TESTmarker__(StartZeit); //Anzeige nach erstem Durchlauf= 0 // 2.Durchlauf= 2451
if (millis() >= StartZeit + SummerZeitKurz) { //nach erreichen der Zeit, 500ms, Summer ausschalten
digitalWrite(Summer, 0);
StartZeit = millis();
__TESTmarker__(StartZeit); //Anzeige nach erstem Durchlauf= 2451 //2.Durchlauf= 3451
}
}
+ Warum speichert die Var. StartZeit die falsche Zeit "0"?
+ Läuft millis() ab Programmstart oder erstem Funktionsaufruf?
+ Hat das mit dem static-Befehl zu tun?
+ Was mache ich hier grundlegend falsch?
Lesezeichen