Wenn man kein retriggerbares Monoflop braucht, geht natürlich auch delay().
Code:
// Digispark Mini, ATtiny85, USB
// Test 1 - Feste Zeiten mit Delay
void setup() {
pinMode(0, INPUT);
pinMode(1, OUTPUT);
}
void loop() {
int trigger = digitalRead(0);
if (trigger <> 0)
{
digitalWrite(1, HIGH);
delay(1000); //1 Sekunde an
digitalWrite(1, LOW);
delay(10000); //10 Sekunden aus
digitalWrite(1, HIGH);
delay(1000); //1 Sekunde an
digitalWrite(1, LOW);
}
}
Sobald der Trigger ausgelöst ist, wird das stur abgearbeitet.
Ob währenddessen ein zweiter Trigger kommt, der den Zyklus verlängern soll, wird nicht registriert.
Bei Retriggerbarkeit, wird der erste 1 Sekunden Puls erzeugt, wenn während oder nach dem Impuls ein neuer Trigger kommt wird die Zeit für das Monoflop zurückgesetzt und die Gesammtzeit ist dann die schon verstrichene Zeit plus die Zeit auf die der Timer eingestellt ist. Wie bei einem Treppenhauslicht kann man damit die Zeit bis zum zweiten 1 Sekunden Puls beliebig verlängern, wenn mann innerhalb der Zeit immer wieder neu triggert.
Es kommt halt auf die exakte Aufgabenstellung an, was man benötigt.
Lesezeichen