Zeitschalter / Treppenhausbeleuchtung / Monoflop
Folgendes Problem war zu lösen:
Eine (kurzer) Tastendruck soll eine LED aufleuchten lassen.
Die LED soll für eine bestimmte Zeit leuchten und dann wieder verlöschen.
Also:
- Taste drücken: LED beginnt zu leuchten
- Taste loslassen: LED bleibt für eine gewisse Zeit leuchtend
- wenn Zeit abgelaufen: LED wird dunkel
- ... von vorn
Lösung:
Ene solche Schaltung nennt man Zeitschalter.
Man findet sie in bei Treppenhausbeleuchtungen.
Eine andere Bezeichnung für diese Schaltung ist: Monoflop (siehe auch FlipFlop).
Schaltung:
- Taste an Pin 10
- LED an Pin 3 (mit Widerstand = 220 Ohm =
rot rot braun)
Quelltext 1 - Taste kurz druecken ==> LED fuer 9s an und verlischt danach:
void setup() {
// Taste:
pinMode(10, INPUT);
digitalWrite(10, HIGH); // interner Pull Up Widerstand von Pin10
// LED:
pinMode(3, OUTPUT);
}
void loop() {
if ( digitalRead(10) == LOW) {
digitalWrite(3, HIGH); // LED an
delay(9000); // 9000ms = 9s
digitalWrite(3, LOW); // LED aus
}
}
Quelltext 2 - Taste kurz druecken ==> LED fuer 9s an und wird dann langsam dunkler:
void setup() {
// Taste:
pinMode(10, INPUT);
digitalWrite(10, HIGH); // interner Pull Up Widerstand von Pin10
// LED: pinMode(...) nicht nötig, da PWM benutzt wird.
}
void loop() {
if ( digitalRead(10) == LOW) {
analogWrite(3, 255); // LED leuchtet mit voller Helligkeit
delay(9000);
// Dunkelwerden (fade out):
for (int i = 255; i >= 0; i--) {
analogWrite(3, i);
delay(20); // 20*256 ==> ca. 5s
}
}
}
|