In diesem Abschnitt wird der Infrarotsensor programmiert. An dieser Stelle kannst du entscheiden, ob mit "Arduino IDE" oder bausteinorientiert mit "Ardublockly" programmieren möchten. Es wird im Folgenden eine Anleitung zu beiden Varianten gegeben, wobei links die Anleitung zu "Arduino IDE" und rechts zu "Ardublockly" zu finden ist.


Arduino IDE
Ardublockly 
 

Öffnen Sie das Programm "Arduino IDE".

Das Programm besitzt zwei Funktionen "setup()" und "loop()". Bei Programmstart wird die Funktion "setup()" aufgerufen. Anschließend wird die Funktion "loop()"  als Endlosschleife ausgeführt. 

 

Öffnen Sie die Programmierung Ardublocky und wählen Sie unter "Preferences" Ihren verwendeten Mikrocontroller aus.

void setup() {}
void loop() {}

Abbildung: Ardublockly

Quelle: BBS 2 Wolfsburg 

Zu beginn müssen oberhalb der beiden Programmfunktionen die benötigten Variablen deklariert werden. Dazu gehört eine Variable, die den Datenpin des Sensors, sowie eine die den aktuellen Status der Bewegung speichert. Bei beiden Variablen soll der Datentyp "int" gewählt werden. Zu beginn müssen die benötigten Variablen definiert werden. Dazu wird eine Variable benötigt, die den aktuellen Status der Bewegung speichert. Wählen Sie unter "Variables" den Baustein "set item to" aus und ziehen Sie diesen in das Bausteinfenster. Durch das Klicken auf "item" kann der Variablenname geändert werden. Unter "Math" können Sie nun der erstellten Variable einen Wert zuweisen. Der erstellte Baustein muss nun in den Baustein "Arduino run first" gezogen werden, welcher unter "Functions" zu finden ist.
int bewegungssensor = 15;
int bewegungsStatus = 0;
  Arduino run first
 Als nächstes wird die Funktion "setup()" programmiert. Dazu muss innerhalb der geschweiften Klammern definiert werden, dass die Variable "bewegungssensor" ein Input ist. Außerdem soll später der Status der Bewegung auf dem seriellen Monitor ausgegeben werden. Der Monitor muss somit an dieser Stelle gestartet werden.   Damit der Status der Bewegung auf dem seriellen Monitor ausgegeben werden kann, muss der serielle Monitor gestartet werden. Dazu wird außerhalb des Hauptbausteins unter "Comms" folgender Baustein ausgewählt.
pinMode(bewegungssensor, INPUT);
Serial.begin(9600);
   
Als nächstes wird das Hauptprogramm geschrieben. Dazu muss in der Funktion "loop()" die Funktion aufgerufen werden, die im Anschluss noch erstellt wird.  
alarm();
 
 Nun wir die Funktion "alarm()" unterhalb der Funktion "loop()" erstellt. Da die Funktion nur ausgeführt werden muss und nichts zurück geben muss, wird als Rückgabetyp "void" gewählt. Der Methodenkopf sieht somit folgendermaßen aus.  
void alarm() {}
  Die nächsten beschriebenen Bausteine müssen nun im Hauptprogramm, also in dem Block "Arduino loop forever" eingefügt werden.
 Innerhalb der Methode, also in den geschweiften Klammern der Funktion, wird als erstes der Status der Bewegung von dem Sensor ausgelesen. Dies erfolgt durch den Funktionsaufruf "digitalRead()". Bei dem Funktionsaufruf muss jedoch noch der auszulesende Pin übergeben werden, sodass innerhalb der Klammern der Datenpin eingefügt werden muss. Die Funktion gibt den Inhalt des Datenpins zurück, der anschließend in der Variable "bewegungsStatus" gespeichert werden soll.   In der erstellten Variable "bewegungsStatus" soll der Zustand des Infrarotsensors gespeichert werden. Wenn eine Bewegung erkannt wird, so ist der Datenpin 15 des Sensors auf "High". Wenn keine Bewegung erkannt wird, so ist der Datenpin auf "Low". Die Speicherung des Zustandes kann mit folgendem Baustein erfolgen.
bewegungsStatus = digitalRead(bewegungssensor);
   
Nun wird mithilfe einer if-Schleife die Ausgabe auf dem seriellen Monitor programmiert. Wenn eine Bewegung erkannt wird, also wenn die Variable "bewegungsStatus" auf dem Wert "High" ist, soll eine Ausgabe auf dem Monitor getätigt werden. Wenn die Variable aber auf "Low" ist, wird die Schleife nicht ausgeführt.    Auf dem seriellen Monitor soll der Text "Alarm" erscheinen, wenn die Variable "bewegungsStatus" auf "High" ist. Wenn die Variable auf "Low" ist, erfolgt keine Ausgabe. Hinter dem "if" wird die Ausführungsbedingung überprüft. Wenn die Bedingung wahr ist, wird der Block unter "do" ausgeführt.
if (bewegungsStatus = HIGH)
  {
   Serial.println("Alarm");
  }
   
 Das Programm gibt nun auf dem Monitor "Alarm" aus, wenn eine Bewegung erkannt wird. Dies kann nun durch klicken auf "Hochladen" überprüft werden. Um den seriellen Monitor sehen zu können, muss nach dem Starten des Programmes auf die Lupe oben rechts im Programmfenster geklickt werden.    In dem Block "do" wird nun die Ausgabe auf dem seriellen Monitor getätigt. Das Häkchen bei "add new line" beschreibt, ob mit jeder neuen Ausgabe eine neue Zeile verwendet werden soll, oder nicht.
     

Zuletzt geändert: Montag, 5. Februar 2024, 13:30