Der Bewegungsmelder soll mit Hilfe eines Interrupts die LED einschalten, nach einer Wartezeit wird die LED wieder ausgeschaltet.
Stelle durch Drehen nach rechts des linken Potentiometers ein längeres Ausgangssignal ein.
Beachte bei der Verkabelung, dass die beiden Potentiometer nach vorn zeigen.
Außerdem wird der Bewegungsmelder an Pin 2 und Pin 3 angeschlossen.
Benötigte Bauteile:
- Bewegungsmelder HC-SR501
- Widerstand 220 Ω
- Leitungsdrähte
- LED
Beachte die ⇒Vorwiderstände verschiedener LEDs
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Definiere die beiden Pins des Bewegungsmelders und den Pin der LED und lege im setup-Teil den pinMode für die Bauteile fest.
#define BEWEGUNG_EIN 2
#define BEWEGUNG_AUS 3
#define ROT 5
void setup()
{
pinMode(ROT, OUTPUT);
pinMode(BEWEGUNG_EIN, INPUT);
pinMode(BEWEGUNG_AUS, INPUT);
Außerdem musst du für die Auslöser die Interrupt-Funktion festlegen:
/*
wenn eine Bewegung registriert wird
Signal ist HIGH -> RISING -> LEDEin
wenn die Wartezeit abgelaufen ist
Signal ist LOW -> FALLING -> LEDAus
*/
attachInterrupt(digitalPinToInterrupt(BEWEGUNG_EIN), LEDEin, RISING);
attachInterrupt(digitalPinToInterrupt(BEWEGUNG_AUS), LEDAus, FALLING);
}
Der loop-Teil bleibt leer, weil das Programm ausschließlich durch die Interrupts gesteuert wird.
Jetzt fehlen nur noch die Funktionen LEDEin() und LEDAus().
void LEDEin()
{
digitalWrite(ROT, HIGH);
}
void LEDAus()
{
digitalWrite(ROT, LOW);
}
Verwandte Anleitungen:
- Interrupt: Lauflicht
- Interrupt - Lauflicht mit Drehgeber
- Interrupt: Licht ein- und ausschalten
- Interrupt: Morsegerät
- Interrupt: Farbenspiel mit einem NeoPixel-Ring
- Interrupt: Lauflicht mit Fernbedienung
Letzte Aktualisierung: