Funduino Düvelbot

1. Einleitung

Kleine flitzende Roboter sind seit Jahren beliebte Projekte, wenn es um das Thema Arduino in der Schule oder ganz allgemein im Bildungsbereich geht. Mit Ihnen lassen sich einfache Zusammenhänge zwischen Programmfunktionen und den daraus resultierenden Bewegungsabläufen erkennen. Mit nur wenigen weiteren Modulen und Sensoren lassen sich die Roboter anschaulich automatisieren. Mit einem Ultraschall-Entfernungssensor kann der kleine Düvelbot Hindernisse erkennen und darauf reagieren, indem er sie umfährt. Line-Tracking-Sensoren machen es möglich, den Roboter auf einer Linie fahren zu lassen.

Roboter und Chassis bzw. Fahrgestelle gibt es schon sehr viele. Was ist beim Düvelbot anders?

Der Düvelbot ist als vollständiges Lernset verfügbar. Die Komponenten sind bewusst so ausgewählt, dass die Programmierung mit der originalen Arduino-Software, aber auch auf Blockbasis visuell erfolgen kann. Zum Beispiel mit OpenRoberta oder S4A -Scratch for Arduino. Zudem handelt es sich um sehr typische und preiswerte Bauteile. So lässt sich der Roboter im Unterricht nachhaltig einsetzen, selbst wenn mal etwas kaputtgeht. Alle Teile lassen sich günstig beschaffen oder selber neu ausdrucken.

Der Düvelbot ist für die Verwendung mit einem Arduino-UNO Mikrocontroller oder einem Arduino-NANO Mikrocontroller mit passendem Shield in UNO-Bauform vorgesehen und entwickelt worden. Das folgende Bild zeigt die beiden Varianten. In der Anleitung verwenden wir die Skizze eines UNO-Controllers, die Verwendung ist jedoch gleich.

 

 

Der Düvelbot ist mit seinen Komponenten

  • Günstig
  • Vollständig (abgesehen von der Batterie bzw. dem Akku)
  • Per Arduino Software oder visuell programmierbar
  • Mit der Anleitung von Funduino auch für Schülerinnen und Schüler leicht zusammenzubauen
  • Mit der Anleitung von Funduino einfach zu programmieren

Anforderungen an die Schülerinnen und Schüler

  • Kabel an die Motoren löten (vier Lötstellen)
  • Einfache Schaltpläne lesen
  • Mikrocontroller, zwei Motoren, eine Batterie und einen Motortreiber verkabeln
  • Kabel mit dem Schraubendreher in Schraubklemmen befestigen
  • Programmieren mit Arduino oder OpenRoberta
  • Gehäuse mit einem 3D-Drucker ausdrucken (ggf. mithilfe der Lehrkräfte)

Differenzierungsmöglichkeiten

  • Erweiterung des Düvelbot mit eigenen 3D-Applikationen, wie Designs, Antennen, Spoiler, Schneeschieber etc… (Tinkercad etc.)
  • Erweiterung der Elektronik mit Linienverfolgung
  • Erweiterung der Elektronik mit Bluetooth

2. Aufbau des Gehäuses

Das Gehäuse ist sehr durchdacht, jede Ecke und jeder Winkel hat eine Bedeutung. Es ist sehr kompakt konstruiert und jedes elektrische Bauteil hat seinen vorgesehenen Platz. Das Gehäuse besteht nur aus dem Hauptelement, sowie einer Halbkugel, die als Gleiter dient. Der Gleiter ist wichtig, damit der Düvelbot gerade auf dem Boden steht. Ohne den Gleiter würde bspw. der Ultraschallsensor seine Signale zu weit nach oben senden und Hindernisse würden dadurch nicht erkannt werden.

Der fertige Düvelbot sollte in etwas so aussehen.

Der Zusammenbau erfolgt dabei in nachfolgender Reihenfolge.

2.1 Motoren und Räder montieren

Die Motoren werden nacheinander in den dafür vorgesehenen Schacht gedrückt. Wichtig ist dabei, dass die Kabel für den Motor vorher angelötet werden. Das Anlöten im eingebauten Zustand ist nur sehr schwer möglich. Allerdings werden die Motoren im eingebauten Zustand nur gesteckt und nicht verklebt. Die Motoren können also auch später noch entnommen und gelötet werden.

Beim Einbau wird die Motorwelle durch das kleine Loch nach außen geführt. Der Motor wird mit leichtem Druck ganz nach außen in den vorgesehenen Ausschnitt gedrückt.

Im Anschluss können bereits die beiden Räder mit leichtem Druck auf die Achsen geschoben werden.

2.2 Lautsprecher einsetzen

Im nächsten Schritt wird der kleine Lautsprecher in die runde Aussparung zwischen die Motoren gesteckt. Die beiden Kontakte sind dabei nach oben gerichtet.

2.3 Motortreiber einsetzen

Der Motortreiber wird im hinteren Bereich des Düvelbot platziert. Er muss nicht fixiert oder geklebt werden. Dadurch bleibt man beim basteln flexibler.

2.4 Ultraschallsensor und Line-Tracking-Sensoren einsetzen

Zum Schluss werden die beiden Line-Tracking-Sensoren und der Ultraschallsensor eingesetzt.

2.5 Verkabelung vornehmen

Das gesamte System aus Sensoren und Aktoren liegt nun offen. Es fehlt lediglich der Mikrocontroller. Dies ist der beste Zeitpunkt, um die Verkabelung im Inneren des Düvelbot nach folgendem Schema vorzunehmen. Dabei werden nun alle Module mit Kabel versehen, abgesehen vom Mikrocontroller selbst. Die vier Leitungen am Motortreiber (IN1, IN2, IN3, IN4) und die beiden Leitungen für die Spannungsversorgung (GND und 5V am Motortreiber) werden durch die seitlichen Löcher des Gehäuses nach außen geführt. Solange noch kein Mikrocontroller montiert ist, lässt man die Kabel dort einfach hängen.

Weitere Informationen zur Verkabelung befinden sich im Kapitel „Verkabelung“.

2.6 Batterie einsetzen

Oben auf dem Motortreiber wird die 9V Batterie platziert und mit den Schraubterminals am Motortreiber verbunden. Je nachdem, welche Art von 9V-Batterieclip man bekommen kann, muss ggf. ein Stecker von dem Clip abgeschnitten werden. Die Kabel werden ohne DC-Stecker direkt in die Schraubterminals gesteckt und befestigt. Am „GND“ Schraubterminal befinden sich zwei Kabel, einmal „Minus“ der Batterie und „GND“ zum Mikrocontroller.

2.7 Mikrocontroller montieren

Nun wird der Mikrocontroller montiert. Wenn ein UNO-Controller verwendet wird, wird dieser ganz oben, vom hinten in den Schacht eingeschoben. Der Mikrocontroller verdeckt dadurch einen Großteil der Technik im Inneren des Roboters. Für den Fall, dass ein Arduino NANO-Controller verwendet wird, wird dieser auf der Rückseite des Roboters in die Halterung eingeklinkt. Die Stiftleisten verschwinden dabei in dem Schacht zwischen Roboterboden und Gleiter.

Während man den Mikrocontroller montiert, sollten parallel schon alle Kabel eingesteckt werden, sobald es die Kabellänge zulässt.

2.7 Mini Breadboard verwenden

Im letzten Schritt wird auf den Mikrocontroller ein Miniatur-Breadboard aufgelegt. Wie auch bei großen Breadboards sind hier die langen Reihen elektrisch leitend miteinander verbunden. So kann man mehrfach 5V und GND verwenden, wenn alle Sensoren gleichzeitig eingesetzt werden sollen.

3. Aufbau der Elektronik

Der grundlegende Aufbau der Elektronik ist in diesem Schaubild dargestellt und soll dabei helfen, den Düvelbot zu elektrisieren.

3.1 Verkabelung

Der Düvelbot wird mit zwei Gleichstrommotoren bewegt. Damit das möglich ist, müssen die beiden Motoren mit einer Menge elektrischer Energie versorgt werden. Die Spannungsausgänge vom Arduino-Mikrocontroller liefern jedoch leider nur 50mA (Milliampere). Das würde gerade einmal ausreichen, um den Roboter zittern zu lassen. Daher werden die Motoren nicht direkt vom Mikrocontroller mit Strom versorgt, sondern über einen sogenannten Motortreiber. Das ist ein Bauteil, dass die notwendigen Informationen von einem Mikrocontroller bekommt und dann eine große Menge an elektrischer Energie an die Motoren weiterleitet. Der Düvelbot verwendet dazu den Motortreiber „L298N“. Das ist ein günstiges und sehr vielseitiges Modul, welches auch in vielen elektrischen Geräten im Alltag verwendet wird. Motortreiber werden übrigens auch „H-Brücke“ oder Motorshield genannt, je nachdem, wie das Modul aufgebaut ist.

In unserem Fall ist der Motortreiber bereits auf einer Platine verbaut. Es ist dort mit Schraubklemmen, praktischen Steckverbindern und einem Kühlelement versehen, damit der Motortreiber nicht zu warm wird.

An dem Motortreiber können zwei Motoren angeschlossen und getrennt voneinander angesteuert werden.

Neben den Motoren können noch weitere Module angeschlossen werden. Dazu gehört der Ultraschallsensor und der Abstandssensor.

3.2 Funktionsweise des Motortreibers L298N

Da die verwendete L298N H-Brücke relativ viele Aus- und Eingänge besitzt, haben wir diese auf der folgenden Skizze dargestellt und nummeriert. Zunächst werden nicht alle Anschlüsse verwendet. Später können weitere Anschlüsse verwendet werden, um die Leistung der beiden Motoren separat zu drosseln. Dies ist über ein sogenanntes PWM-Signal möglich.

  1. Anschluss für den Gleichstrommotor 1 – „Plus“
  2. Anschluss für den Gleichstrommotor 1 – „Minus“
  3. 12V Jumper. Dieser kann entfernt werden, wenn du eine Versorgungsspannung von mehr als 12V Gleichstrom verwendest. Das Entfernen des Jumpers aktiviert die 5V Regulator der H-Brücke.
  4. Eingang für die Spannungsversorgung der H-Brücke (max. 35V Gleichstrom)
  5. Eingang für den GND
  6. 5V Ausgang, z.B. für die Stromversorgung des Mikrocontrollers
  7. Pin, über den der Gleichstrommotor 1 angesteuert wird. Falls dieser Pin an einen PWM-Pin des Mikrocontrollers angeschlossen wurde, kann die Motorgeschwindigkeit gedrosselt werden.
  8. Anschluss IN1 – Steuert Gleichstrommotor 1
  9. Anschluss IN2 – Steuert Gleichstrommotor 1
  10. Anschluss IN3 – Steuert Gleichstrommotor 2
  11. Anschluss IN4 – Steuert Gleichstrommotor 2
  12. Pin, über den der Gleichstrommotor 2 angesteuert wird. Falls dieser Pin an einen PWM-Pin des Mikrocontrollers angeschlossen wurde, kann die Motorgeschwindigkeit gedrosselt werden.
  13. Anschluss für den Gleichstrommotor 2 – „Plus“
  14. Anschluss für den Gleichstrommotor 2 – „Minus“

3.3 Spannunsgversorgung des Gesamtsystems

Für den gesamten Düvelbot gibt es nur eine Spannungsquelle. Wir verwenden dazu eine 9V Batterie. Diese gibt es als aufladbare Powerpacks und sind sehr zu empfehlen.

Die Batterie wird am Motortreiber an 12V(+) und an GND angeschlossen. Die Aufschrift 12V ist dabei etwas irreführend. Es soll bedeuten, dass dort nur Spannungen bis 12V angeschlossen werden dürfen. Denn auf dem Modul befindet sich ein Spannungswandler, der aus der angeschlossenen Spannung zusätzlich eine 5V Spannung erzeugt. Das ist sehr praktisch, denn dadurch können wir an dem Modul auch den Mikrocontroller anschließen. Es wird keine separate Spannungsquelle für den Mikrocontroller benötigt.

Signale zwischen Mikrocontroller und Motortreiber

Vom Mikrocontroller gehen vier Kabel von den digitalen Ports 2, 3, 4 und 5 zu den Eingängen IN1, IN2, IN3 und IN4 am Motortreiber. Diese vier Leitungen steuern die Bewegungen der beiden Motoren.

3.4 Spannungsversorgung des Mikrocontrollers

Der Mikrocontroller wird, und das ist in diesem Fall eine Besonderheit, über den Motortreiber mit Spannung versorgt. Auf der Platine des Motortreibers ist ein Spannungswandler verbaut, der unabhängig von der Spannungsquelle eine 5V Spannung erzeugt. Der verwendete Mikrocontroller, wie Arduino UNO oder Arduino NANO wird mit dem 5V Spannungsausgang des Motortreibers, sowie mit GND bzw. Minus des Motortreibers verbunden.

3.5 Spannungsversorgung der Motoren

Die beiden Motoren werden mit den gegenüberliegenden zweipoligen Schraubklemmen auf dem Motortreiber verbunden. Die Polung (Plus und Minus) ist dabei zunächst unwichtig. Es gibt hier kein richtig oder falsch. Es kann passieren, dass sich die Motoren später in die „falsche“ Richtung drehen. In diesem Fall kann man später die beiden Kabel zum Motor einfach miteinander vertauschen.

3.5.1 Signaleingang für Motor 1

IN1 und IN2 am Motortreiber steuern die Stromzufuhr für Motor1, indem auf diese beiden Leitungen Spannungen ausgegeben werden. Der Arduino Mikrocontroller verwendet dabei in der Programmierung die Begriffe „HIGH „ und „LOW“.

Spannung „HIGH“ bedeutet, dass über den digitalen Pin am Mikrocontroller eine 5V Spannung ankommt.

Spannung „LOW“ bedeutet, dass über den digitalen Pin am Mikrocontroller keine 5V Spannung ankommt.

Dabei sehen die Drehbewegungen folgendermaßen aus:

IN1=LOW / IN2=LOW → Der Motor steht still

IN1=LOW / IN2=HIGH → Der Motor dreht vorwärts

IN1= HIGH / IN2=LOW→ Der Motor dreht rückwärts

IN1= HIGH / IN2= HIGH → Der Motor steht still

3.5.2 Signaleingang für Motor 2

Für den zweiten Motor gilt das gleiche wie für den ersten Motor, nur dass hier am Motortreiber die Eingänge IN3 und IN4 verwendet werden.

Dabei sehen die Drehbewegungen hier folgendermaßen aus:

IN3=LOW / IN4=LOW → Der Motor steht still

IN3=LOW / IN4=HIGH → Der Motor dreht vorwärts

IN3= HIGH / IN4=LOW→ Der Motor dreht rückwärts

IN3= HIGH / IN4= HIGH → Der Motor steht still

Wir könnten über die oben genannten Kombinationen beide Motoren in gleiche und unterschiedliche Richtungen rotieren lassen, oder auch anhalten. Wenn sich die Motoren in entgegengesetzte Richtungen drehen, dreht sich der Roboter.

4. Programmierung des Roboters

Für die Programmierung bieten sich grundsätzlich zwei verschiedene Möglichkeiten an. Man kann die Arduino Software nutzen, um in sogenannter „Hochsprache“ zu programmieren, oder man verwendet eine visuelle Programmiermethode. In unserem Fall nutzen wir für die visuelle Methode die cloudbasierte Software OpenRoberta.

4.1 Programmieren in OpenRoberta

4.1.1 Software

Die Programmierplattform, mit der die Arduino Mikrocontroller programmiert werden, heißt OpenRoberta und kann unter dem Link https://lab.open-roberta.org aufgerufen werden. Damit die Programme mit einem USB-Kabel auf den Mikrocontroller übertragen werden können, müssen ein paar Vorbereitungen getroffen werden. Neben der Verkabelung des Mikrocontrollers wird die Open-Roberta-Connect Anwendung benötigt

4.1.2 Installation

Die Open Roberta Connector Anwendung benötigt Java ab Version 8 (stand Juli 2022). Java ist eine Software, die auf dem Computer installiert wird und in der Regel schon auf dem Computer vorhanden ist. Die aktuelle Version von Java kann unter dem Link https://www.java.com/de/download/ heruntergeladen werden.

Im Anschluss wird die OpenRoberta-Connector Anwendung heruntergeladen. Die Anwendung gibt es in der jeweils aktuellsten Version auf der Internetseite

https://github.com/OpenRoberta/openroberta-connector/releases.

Die Open Roberta Connector Anwendung sieht nach der erfolgreichen Installation so aus:

Wenn beim Starten des OpenRoberta-Connector folgende Meldung kommt, dann wurde Java nicht oder fehlerhaft installiert.

4.1.3 OpenRoberta Connect

Nun kann der Arduino-Mikrocontroller über ein USB-Kabel mit dem PC verbunden werden. Der Controller wird von der Anwendung direkt erkannt und ausgewählt.

Damit der Mikrocontroller programmiert werden kann, muss der Button „Verbinde“ gedrückt werden. Die Anwendung wird nun versuchen, eine Verbindung mit lab.open-roberta.org herzustellen. Bei einer erfolgreichen Verbindung wird eine Kombination aus Zahlen und Buchstaben generiert. Diese Kombination wird Token genannt.

4.1.4 OpenRoberta Lab - Konfiguration

Jetzt müssen noch letzte Einstellungen auf der Internetseite vorgenommen werden. Dafür wird die Seite https://lab.open-roberta.org aufgerufen. Es werden die verschieden Mikrocontroller und Roboter angezeigt, die im OpenRoberta-Lab programmiert werden können. Um mit einem Arduino zu arbeiten, ist das System Nepo4Arduino richtig.

Die Weboberfläche von OpenRoberta sieht wie folgt aus. In der Menüleiste sind folgende drei Punkte relevant.

  1. Bearbeiten

Mit diesen Menüpunkt können Programme erstellt, geladen, exportiert und importiert werden. Exportieren bedeutet, dass man ein zuvor erstelltes Programm auf dem PC abspeichert. Importieren bedeutet, dass man ein zuvor auf dem PC gespeichertes Programm wieder in das OpenRoberta-Lab läd.

  1. Roboter

In diesem Bereich wird der Mikrocontroller mit der Internetseite verbunden. Nachdem der Punkt Roboter angeklickt wurde, erscheint ein Dropdownmenü. Hier wird der oberste Menüpunkt „Verbinden“ angeklickt.

Nun öffnet sich ein neues Fenster, welches einen Wert abfragt. Dort trägt man den zuvor beschriebenen Token aus der OpenRoberta-Connect Anwendung ein.

  1. Benutzer- und Gruppenlogin

Im Bereich Benutzer besteht die Möglichkeit, ein eigenes Benutzerkonto in OpenRoberta einzurichten. Dies ist jedoch nicht erforderlich. Es bietet jedoch Vorteile, da mit einem Benutzerkonto selbst erstellte Programme online abgespeichert und aufgerufen werden können. Der Gruppenlogin ist insbesondere für die Arbeit mit Schulklassen interessant.

OpenRoberta ist eingerichtet und die Programmierung kann beginnen.

4.2 Düvelbot programmieren in OpenRoberta

Nun kann es aber losgehen. In der OpenRoberta Übersicht wählt man den entsprechenden Arduino-Mikrocontroller aus und befasst sich dann nacheinander mit der Roboterkonfiguration und der Programmierung.

4.2.1 Konfiguration

In der Konfiguration bekommt die Software die Informationen über die Verkabelung, die sich am Mikrocontroller befindet. Wir verwenden hier zunächst nur die beiden Motoren, den Lautsprecher und den Ultraschallsensor. Erst in diesem Bereich wird es wichtig, dass man ganz genau hinsieht, welche Kabele an welchen Ports angeschlossen sind.

Praxistipp: In diesem Beispiel sind die Kabel anders angeschlossen als in der Schaltskizze im Kapitel „Verkabelung“. Wichtig ist, dass für die einzelnen Module genau die Ports ausgewählt werden, an denen die Kabel auch tatsächlich angeschlossen wurden. Also von nun an genau hinsehen und Prüfen! Welches Kabel kommt von welchem Modul und wo geht es hin?

Ein Beispiel: In der Roboterkonfiguration ist als grüner Befehlsbaustein der Ultraschallsensor HC-SR04 ausgewählt worden. Für diesen Sensor können folgende Felder angepasst werden:

Name des Sensors: In diesem Fall „S1“

trig: „trig“ steht für den „Trigger-Pin“ am Sensor. In diesem Fall soll also ein Kabel vom „Trigger-Pin“ zum digitalen Port 9 am Mikrocontroller gehen.

echo: „echo“ steht für den „Echo-Pin“ am Sensor. In diesem Fall soll also ein Kabel vom „Echo-Pin“ vom digitalen Port 8 am Mikrocontroller gehen.

Um die Motoren ansteuern zu können, wird viermal das orangefarbene Modul „Aktor digital“ verwendet. Der Befehlsbaustein „Aktor digital“ ist in der Lage, über einen digitalen Pin des Mikrocontrollers ein 5Volt-Plus Signal (HIGH) oder ein GND-Minus Signal zu senden. Wie im Kapitel zum Motortreiber beschrieben, können über diese Signale die beiden Motoren angesteuert werden. Auch hier ist es wichtig, dass für die einzelnen Module genau die Ports ausgewählt werden, an denen die Kabel auch tatsächlich angeschlossen wurden. Genau hinsehen und Prüfen! Welches Kabel kommt von welchem Modul und wo geht es hin?

In diesem Beispiel sind sind die Befehlsbausteine Motor1a an IN1, Motor1b an IN2, Motor2a an IN3 und Motor2b an IN4 angeschlossen.

4.2.2 Roboter programmieren

Nach der Konfiguration beginnen wir mit der visuellen Programmierung.

4.2.2.1 Aufgabe 1

Die Aufgabe besteht darin, dass der Roboter geradeaus fährt.

Die Lösung zu dieser Aufgabe wird detaillierter beschrieben, damit man versteht, welche Funktionen die einzelnen Programmblöcke haben.

Zunächst sollen sich beide Räder vorwärts bewegen. Daher müssen nun die Pins IN1 und IN2 für den Motor1 und die Pins IN3 und IN4 für den Motor2 mit Signalen versorgt werden. Je Kombination entsteht dann an dem Rad eine Vorwärtsbewegung, Rückwärtsbewegung oder ein Stopp. Die Kombinationen sind ++, +-, – – oder – +. Zum Vergleich, in der Arduino Software lauten die Kombinationen HIGH HIGH, HIGH LOW, LOW LOW oder LOW HIGH. Aus technischer Sicht bedeutet das, dass an den beiden Pins eine Kombination aus Spannung (5V) oder GND anliegt.

In OpenRoberta verwenden wir den vorgegebenen Block der Schleife (rot), um hier die Programmierbausteine einzusetzen. Der Ausgangspunkt sieht so aus:

Nun verwenden wir den Programmbaustein „Schreibe Wert“, um die vier Pins anzusteuern.

Diesen Baustein finden wir links im Menü im Bereich „Aktion“ und „pin“

Laut der Roboterkonfiguration haben wir diese vier Pins Motor1a, Motor1b, Motor2a und Motor2b genannt. Die Zahl im blauen Programmblock muss eine 1 oder eine 0 enthalten. Diese Ziffern stehen für 5V (1) und GND (0). Bei einer 1 wird an diesem Pin des Mikrocontrollers eine Spannung von 5V ausgegeben und bei einer 0 liegt an diesem Pin GND an. Daher sieht die Ansteuerung nun so aus:

Sollten sich nun beide oder auch nur ein Rad rückwärts drehen, kann durch ein Vertauschen der Ziffern 1 und 0 die Drehbewegung verändert werden. Damit ist die Aufgabe vollständig gelöst. Sobald eine Batterie angeschlossen wird, fährt der Roboter vorwärts.

4.2.2.2 Aufgabe 2

Die Aufgabe besteht darin, dass der Roboter einfach rückwärts fährt.

Diese Aufgabe lässt sich mit dem Wissen aus Aufgabe 1 natürlich schnell umsetzen. Die Kombination der Ansteuerung muss lediglich vertauscht werden. Die Lösung sieht dann so aus:

4.2.2.3 Aufgabe 3

Die Aufgabe besteht darin, den Roboter um die eigene Achse drehen zu lassen.

Für die Lösung dieser Aufgabe ist es wichtig, dass sich ein Rad vorwärts und ein Rad rückwärts dreht. Daher wird in dieser Aufgabe nur von einem Motor die Drehrichtung verändert.

Alternativ könnte man eines der Räder vollständig stoppen und die Drehung nur von einem der Motoren durchführen lassen. Das sieht dann so aus:

4.2.2.4 Aufgabe 4

Die Aufgabe besteht darin, dass der Roboter eine fröhliche Melodie von sich gibt.

Um einen Ton abzugeben, muss der Lautsprecher vom Mikrocontroller angesteuert werden. Die Räder bzw. der Antrieb wird in dieser Aufgabe nicht verwendet. Wir starten mit dem Standardblock und ergänzen den Programmblock für die Tonerzeugung aus dem Menü „Aktion“ und „Klang“.

In diesem einfachen Programmblock würde der Roboter für 1000 Millisekunden, also für eine Sekunde, einen Ton in der Frequenz 300Hz abgeben. Und da dieser Programmblock durch die standardmäßige Schleife unendlich oft wiederholt werden würde, ergibt sich ein dauerhafter Ton. Also alles andere als eine fröhliche Melodie. Damit es etwas schöner klingt, benötigen wir also etwas Abwechslung in der Tonabfolge. Diese könnte dann so aussehen:

Versuche es selber. Mit etwas Gefühl für Töne und Melodien, wird der Roboter ganz freundlich klingen.

4.2.2.5 Aufgabe 5

Die Aufgabe besteht darin, dass der Roboter eine fröhliche Melodie von sich gibt, wenn ein Hindernis im Sensorbereich erkannt wird.

Die Hauptaufgabe besteht in dieser Aufgabe darin, die Entfernung zu messen und die Messwerte als Bedingung dafür zu nutzen, dass eine Melodie gespielt wird. Dazu verwenden wir nun im Menü den Programmblock „Sensoren“ und „gib Abstand“.

Schnell stellt man fest, dass der Programmblock nirgendwo andocken kann und blass erscheint. Das liegt daran, dass der Sensorwert in einer Kontrollfunktion verwendet wird. Diese Funktion muss mit in das Programm aufgenommen werden.

An diese Kontrollfunktion wird nun eine Logik geknüpft.

Dahinter verbirgt sich die Frage:

„Was soll passieren, wenn welcher Fall eintritt?“

In unserem Fall soll eine Melodie gespielt werden, wenn der ermittelte Abstand eines Gegenstandes zum Entfernungssensor weniger als 40 Zentimeter beträgt. Daher werden die Module nun folgendermaßen kombiniert.

4.2.2.5 Aufgabe 6

Die Aufgabe besteht darin, dass der Roboter eine fröhliche Melodie von sich gibt und stehen bleibt, wenn ein Hindernis im Sensorbereich erkannt wird.

Für diese Aufgabe werden keine neuen Programmbausteine verwendet. Das folgende Programm setzt sich aus einer Kombination der Programmblöcke aus den vorherigen Aufgaben zusammen.

4.2.2.6 Aufgabe 7

Die Aufgabe besteht darin, dass der Roboter eine fröhliche Melodie von sich gibt und stehen bleibt, wenn ein Hindernis im Sensorbereich erkannt wird. Danach soll sich der Roboter drehen und in eine andere Richtung weiterfahren.

So langsam wird deutlich, dass das Programm unübersichtlich wird. Für jede Motorbewegung werden vier neue Zeilen benötigt. Das ändern wir jetzt, indem wir Funktionen verwenden. Funktionen können mehrere Programmbausteine kombinieren und lass sich dann im Hauptprogramm einfach aufrufen.

In diesem Fall erstellen wir Programmblöcke für die Bewegungen „Vor“, „Zurück“, „Stop“, „Drehung“ und „Melodie“.

Die Namen der Funktionen erscheinen nun im Menü „Funktionen“ und können fortan verwendet werden.

Zur Lösung dieser Aufgabe ergibt sich mit den Funktionen das folgende Programm: