Hallo,
ähnliche Frage, grade 2 Tage her.
Ich nehme grade mal mein Beispiel von da:
den Code hatte ich für einen Arduino Nano geschrieben.Code:unsigned long prev1micros = 0; const long toggleinterval = 1000; // nach wieviel Millisekunden soll ein Zustandswechsel erfolgen int togglestate = LOW; void setup() { } void loop() { <<<<< hier passiert was das nichts mit der Zeit zu tun hat unsigned long cur1micros = millis(); if (cur1micros - prev1micros >= toggleinterval) { //alle 10ms umschalten prev1micros = cur1micros; if (togglestate == LOW){ togglestate = HIGH; <<<<< hier passiert was das Abhängig von der Zeit ist }else{ togglestate = LOW; <<<<< hier passiert was das Abhängig von der Zeit ist } } <<<<< hier passiert was das nichts mit der Zeit zu tun hat }
Deine Ausgangslage ist halt anders.
Also immer wenn der Befehl zum setzen des Pins kommt, setzt man 'prev1micros = cur1micros' (oder 'prev1micros = millis()') schaltet den Pin und setzt 'togglestate = HIGH'.
Wenn 'togglestate == HIGH' ist und 'cur1micros - prev1micros >= toggleinterval' ist, löscht man den Pin wieder und setzt 'togglestate = LOW'.
Soll nach dem ersten Empfangs des Befehls ein zweiter Befehl ignoriert werden, solange der Pin gesetzt ist, muß man das auch noch verriegeln.
Ich hoffe das hilft als Denkanstoß.






Zitieren

Lesezeichen