In dieser Aufgabenstellung befassen wir uns mit dem Bewegungsmelder. Wie es der Name schon erklärt, erfasst ein Bewegungsmelder Bewegungen im einem bestimmten Umkreis. Diese erfasste Bewegung gibt der Bewegungsmelder als Signal an den Mikrocontroller weiter.
Dieses Signal möchten wir mit dem Mikrocontroller auf unserem Funduino Cube auslesen und eine rote LED zum Leuchten bringen.
Wie immer beginnen wir mit der ROBOTERKONFIGURATION in OpenRoberta.
Im ersten Schritt wählen wir innerhalb von OpenRoberta die ROBOTERKONFIGURATION aus. Diese findest du im oberen Menü.
Anschließend navigieren wir in dem Menü auf der linken Bildschirmseite auf den Menüpunkt „Sensoren„.
In diesem Menüpunkt finden wir den Block für unseren Bewegungsmelder wieder.
Wie du es bereits aus den beiden ersten Lektionen gelernt hast, öffnet sich durch den Klick mit der linken Maustaste auf den Menüpunkt „Sensoren“ ein neues Untermenü.
Kannst du den Block für unseren Bewegungsmelder erkennen?
Toll gemacht!
Du findest den Block für den Bewegungsmelder an vierter Stelle.
Wir haben dir den Block auf der nachfolgenden Abbildung rot markiert.
Du kannst diesen Block, genauso wie alle anderen Blöcke in OpenRoberta auch, mit einem Klick mit der linken Maustaste anwählen und durch drücken der Maustaste in das weiße Feld ziehen.
Wenn du alles richtig gemacht hast, sollte deine ROBOTERKONFIGURATION jetzt so aussehen, wie du es in der Abbildung Schritt 5 siehst.
Wir haben den Bewegungsmelder somit erfolgreich zu unserer Roboterkonfiguration hinzugefügt.
Jetzt fehlen noch zwei wichtige Schritte:
Zunächst müssen wir einen Namen für unseren Bewegungsmelder vergeben.
Den Namen kannst du eintragen, indem du auf das Feld, in dem aktuell noch „B“ steht, klickst.
Damit wir später den Überblick behalten können, tragen wir hier den Namen „Bewegungsmelder“ ein.
Jetzt müssen wir dem Mikrocontroller auf unserem Funduino Cube noch beibringen, an welchem digitalen Pin der Bewegungsmelder mit dem Mikrocontroller verbunden ist.
Schaue doch einmal auf deinen Funduino Cube und versuche herauszufinden, welchen digitalen Pin wir verwenden müssen.
Kennst du die Antwort?
Sehr gut!
Der Bewegungsmelder ist an Pin D8 mit dem Mikrocontroller verbunden.
Wir klicken also mit der linken Maustaste auf das Feld neben „output“ und wählen den Pin D8 aus.
Mit der Auswahl des Pins D8 haben wir die Einstellung des Blocks für den Bewegungsmelder erfolgreich abgeschlossen.
Wir erinnern uns jetzt an unsere Aufgabenstellung zurück:
Wir möchten das Signal des Bewegungsmelders auswerten, indem wir eine rote LED immer dann zum leuchten bringen, wenn der Bewegungsmelder eine Bewegung erfasst.
Deshalb ergänzen wir unsere ROBOTERKONFIGURATION um einen LED Block.
Wie du das machst, hast du in den vorherigen Anleitungen bereits gelernt. Falls du vergessen hast, wie das funktioniert, schaue dir die Lektion 1 noch einmal an.
Tipp: Du findest den Block für die LEDs unter dem Menü „Aktion“ auf der linken Bildschirmseite.
Hurra! Wir haben unsere Roboterkonfiguration abgeschlossen!
Nachdem wir die ROBOTERKONFIGURATION erfolgreich abgeschlossen haben, können wir uns an das Programm wagen.
Wir klicken hierfür zunächst auf den Menüpunkt „Programm“ am oberen Bildschirmrand.
Jetzt wird es kniffliger: Wir erinnern uns an die Aufgabenstellung zurück.
Teil der Aufgabe war es, eine rote LED immer dann zum Leuchten zu bringen, wenn eine Bewegung erkannt wird.
In Lektion 2 haben wir gelernt, welchen Block wir für eine „wenn-Bedingung“ benötigen.
Erinnerst du dich? Falls nicht, schaue dir die Inhalte aus Lektion 2 noch einmal genauer an.
Sehr schön!
Wir benötigen eine zusätzliche Schleife. Diese Schleife finden wir mit einem Klick auf den Menüpunkt „Kontrolle“ am linken Bildschirmrand.
Damit wir die richtige Schleife auswählen, müssen wir unsere Aufgabenstellung vielleicht noch einmal übersetzen.
„Wenn eine Bewegung erkannt wird, schalte die rote LED ein.
Sonst soll die rote LED nicht leuchten.„
Erkennst du, welche Schleife wir benötigen?
Genau, wir verwenden die gleiche Schleife, die wir auch schon in Lektion zwei kennengelernt haben. Diese „if-else-Bedingung“ („wenn-sonst-Bedingung“) fügen wir jetzt zu unserem Programm hinzu.
Dein Programm sollte jetzt so aussehen, wie in Abbildung Schritt 4 zu sehen.
Jetzt fehlt in unserem Programm noch der Bewegungsmelder.
Den Block für den Bewegungsmelder findest du im linken Menü unter „Sensoren„.
In dem Untermenü von „Sensoren“ taucht jetzt der Block „Bewegungssensor HC-SR501“ auf, den wir bereits in unserer ROBOTERKONFIGURATION richtig eingestellt haben.
„Wenn eine Bewegung erkannt wird…“
Erkennst du, an welche Stelle im Programm wir diesen Block anfügen müssen?
Genau: wir fügen den Block rechts neben „wenn“ in unserer „if-else-Bedingung“ ein.
Den ersten Teil unserer Aufgabenstellung haben wir somit erfüllt.
Jetzt müssen wir nur noch die rote LED zu unserem Programm ergänzen.
Findest du den Block für die LED in OpenRoberta? Falls nicht, schaue dir noch einmal die Inhalte aus Lektion 2 an.
Tipp: den Block findest du im Menü auf der linken Seite unter „Aktion„.
„Wenn eine Bewegung erkannt wird, schalte die rote LED ein.
Sonst…“
Wir sind schon fast am Ziel! Wir müssen jetzt nur noch sicherstellen, dass die rote LED nicht mehr leuchtet, wenn keine Bewegung erkannt wird.
Dies gelingt uns, indem wir einen weiteren Block für die rote LED hinzufügen und in diesem Block „aus“ auswählen.
Gratulation! Wir machen große Fortschritte.
Lade dein Programm jetzt auf den Funduino Cube und schaue, ob alles funktioniert.
Frage: Wie müssten wir vorgehen, wenn wir erreichen möchten, dass immer eine rote LED leuchtet, sobald eine Bewegung erkannt wird und eine grüne LED leuchtet, wenn keine Bewegung erkannt wird?
int bewegungsmelder = 8; // Bewegungsmelder an Pin D8
int led_rot = 12; // LED Rot an Pin D12
void setup()
{
pinMode(bewegungsmelder, INPUT); // Der Bewegungsmelder ist ein Eingang
pinMode(led_rot, OUTPUT); // Die LED Rot ist ein Ausgang
}
void loop()
{
if ( digitalRead(bewegungsmelder) ) { // Wenn der Bewegungsmelder ein Eingangssignal erkennt...
digitalWrite(led_rot, HIGH); // Schalte LED Rot an (SIGNAL HIGH = 1)
} else { // Ansonsten...
digitalWrite(led_rot, LOW); // Schalte LED Rot aus (Signal LOW = 0)
}
}