Programmierung der Alarmausgabe (Infrarotsensor)
Nun wird die Alarmausgabe programmiert, wobei auch hier eine Anleitung für "Arduino IDE" und "Ardublockly" gegeben wird.
Arduino IDE | Ardublockly | |
---|---|---|
Als erstes muss der Pin für die LED sowie für den Lautsprecher bei der Variablendeklaration definiert werden. | ||
int alarmLED = 5;
int alarmBuzzer = 2;
|
||
In der Funktion "setup()" müssen die erstellten Variablen beide als Output definiert werden. Dies kann analog wie bei der Variable "bewegungsStatus" umgesetzt werden. | ||
In der selbst erstellten Funktion "alarm()" muss nun eingefügt werden, dass bei Bewegungserkennung die LED und der Lautsprecher ausgelöst werden. Da die Alarmausgabe durch Piepen beziehungsweise blinken erfolgen soll, muss der Alarm mehrmals ein- und wieder ausgeschaltet werden. Dazu kann eine for-Schleife verwendet werden. In den Klammern der for-Schleife wird erst eine Laufvariable definiert und auf 0 gesetzt. Als zweites wird die Ausführbedingung mit "i < 3" definiert, also bei welcher Zahl der Laufvariablen die Schleife ausgeführt werden soll. Als drittes wird die Laufvariable mit " i++" bei jedem Durchlauf hochgezählt. Die Schleife wird somit genau drei mal ausgeführt. | Bisher kann das Programm bei Erkennung einer Bewegung eine Ausgabe auf dem seriellen Monitor tätigen. Es soll nun eingefügt werden, dass zusätzlich zu der Ausgabe auf dem Monitor sowohl der Piezo-Buzzer, als auch die LED ausgelöst werden. Diese sollen insgesamt drei mal ausgelöst werden, damit ein Piepen bzw. blinken entsteht. Dafür kann der folgender Baustein verwendet werden. Es wird eine Variable i definiert, die zu beginn den Wert 0 besitzt. Der Block "do" wird so oft ausgeführt, bis die Variable i größer als 2 ist, wobei bei jedem Durchlauf die Variable um eins hochgezählt wird. Der Baustein muss direkt unter dem Baustein für die serielle Ausgabe eingefügt werden. | |
for (int i = 0; i<3; i++)
{
}
|
![]() |
|
Innerhalb der for-Schleife müssen die Alarmpins auf "High" gesetzt werden und dort für eine bestimmte Zeit gehalten werden. Mit dem Funktionsaufruf "delay()" wird das Programm im aktuellen Zustand für die angegebene Zeit gehalten. Beispielsweise würde bei "delay(500)" das Programm für 500 ms gehalten werden. Mit der Funktion "digitalWrite(alarmLED,HIGH);" wird der Alarmpin der LED auf "High" gesetzt. | Unter dem Block "do" sollen nun die Pins für die LED und den Buzzer auf "High" gesetzt werden. Dieser Zustand soll für 500 ms gehalten werden. Anschließend werden die Pins wieder auf "Low" gesetzt und 500 ms der Zustand gehalten. | |
digitalWrite(alarmLED, HIGH);
digitalWrite(alarmBuzzer, HIGH);
delay(500);
|
![]() |
|
Genauso wie oben gezeigt, müssen die Alarmpins auf gleiche Weise für 500 ms auf "Low" gesetzt werden. Damit ist die Funktion des Programmes vollständig gegeben. | Das Programm ist nun fertig und kann getestet werden. |
Last modified: Friday, 19 January 2024, 1:53 PM