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)

breadboard    


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
		}
	   }
	}