Hallo,
ähnliche Frage, grade 2 Tage her.
Ich nehme grade mal mein Beispiel von da:
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
}
den Code hatte ich für einen Arduino Nano geschrieben.
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ß.
Lesezeichen