Edison Robotik: Lektion 6

Arbeitsblatt 6.1 - Blinker der LED als Reaktion auf ein Klatschen
In dieser Lektion musst du ein Programm mit dem Klatscherkennungssensor von Edison schreiben, damit der Roboter jedes Mal, wenn er ein Klatschen erkennt, eine LED blinkt.
Das erste, was zu tun ist, ist das Programm zu planen.

Flussdiagramme in der Programmierung
Professionelle Programmierer planen ihr Programm normalerweise, bevor sie anfangen, ihren Code zu schreiben. Mithilfe von Flussdiagrammen können Programmierer ihre Programme organisieren und planen.
Die Idee eines Flussdiagramms besteht darin, grafisch zusammenzufassen, was im Code geschieht, ohne auf alle Details eingehen zu müssen. Mithilfe von Flussdiagrammen kann ein Programmierer visualisieren und kommunizieren, wie der „Fluss“ des Programms abläuft.
In einem Flussdiagramm wird ein Programm mit verschiedenen Formen und Pfeilen dargestellt. Jede Form stellt ein anderes Element im Programm dar, und die Pfeile zeigen, wie die Elemente zusammenarbeiten. In Flussdiagrammen werden fünf Hauptsymbole verwendet:

Symbol Name Fuktion
tzutu Terminator (Start/Ende) Ein Oval gibt Start- oder Endpunkt an
zrtz Pfeil Eine Linie, die als Konnektor fungiert und die Beziehungen zwischen repräsentativen Formen zeigt
z45 Input / Output Ein Parallelogramm repräsentiert einen Eingang oder einen Ausgang
rech Prozess Ein Rechteck repräsentiert einen Prozess oder eine Aktion
raut Entscheidung Eine Raute ist eine Entscheidung

Bei komplizierteren Flussdiagrammen können auch zusätzliche Formen mit unterschiedlichen Bedeutungen verwendet werden.
Beim Erstellen eines Flussdiagramms zum Planen eines Programms werden häufig Wörter in die Formen oder neben die Pfeile eingefügt. Diese Wörter sind kurze Zusammenfassungen des Prozesses oder der Entscheidung.
Schauen wir uns ein Beispiel-Flussdiagramm an, in dem das Programm zusammengefasst ist, das wir erstellen möchten.

Hier ist ein Flussdiagramm für ein Programm, das deinen Edison-Roboter anweist, auf ein Klatschen zu warten und dann die linke LED zu blinken:

kgkghk

Dieses Programm verwendet Edisons Geräuscherkennungssensor, um festzustellen, ob ein Klatschen aufgetreten ist oder nicht. Das Ergebnis bestimmt, wie der Code als nächstes fließt.
Wenn du dir dieses Flussdiagramm ansiehst, stellst du möglicherweise fest, dass es kein Abschlusszeichen enthält. Dies liegt daran, dass dieses Programm eine "while" -Schleife verwendet, die so eingerichtet ist, dass das Programm unbegrenzt fortgesetzt wird.

Eine Endlosschleife machen
Manchmal möchtest du vielleicht ein Programm schreiben, das kein Ende hat, sondern eine Endlosschleife durchläuft. In der Programmierung wird dies oft als Endlosschleife bezeichnet.
Du kannst eine Endlosschleife verwenden, um das im Ablaufdiagramm geplante Programm zu erstellen.
Schau dir folgendes Programm an:

gfjfg
Dieses Programm wird durch unser Flussdiagramm dargestellt und enthält eine Endlosschleife.
Schau dir sich Zeile 12 des Programms an, in der eine 'while'-Schleife verwendet wird.
'While'-Schleifen benötigen immer eine Bedingung. Die Schleife wiederholt jeden eingerückten Code, während diese Bedingung auf "true" aufgelöst wird.
Wenn die "while" -Schleife unendlich wiederholt werden soll, ersetzen wir die Bedingung durch "True", anstatt eine Bedingung anzugeben, die das Programm auswerten muss.
"True" wird immer in "True" aufgelöst. Indem wir die Bedingung auf "True" setzen, haben wir die Bedingung unserer "while" -Schleife fest auf "True" codiert.
Beim Programmieren erzwingst du beim Hardcodieren einen bestimmten Vorgang, indem du ihn explizit eingibst.
Durch die Verwendung von "True" als Bedingung für die "while" -Schleife in unserem Programm kann die Schleifenbedingung niemals falsch sein und wird sich unendlich wiederholen.

Du bist dran:
Schreibe den obigen Code, um deinen Edison-Roboter so zu programmieren, dass die linke LED blinkt, wenn du klatschst. Lade es herunter und teste, wie es funktioniert.
1. Wie weit kannst du von deinem deinem Edison entfernt sein, damit er das Klatschen erkennt?
2. Was ist der Zweck, wenn die Funktion TimeWait () im Code aufgerufen wird? Was würde passieren, wenn wir sie nicht hätten? Tipp: Versuche, das Programm ohne die Funktionsaufrufe von TimeWait () auszuführen.
3. Sieh dir das Programm und das Flussdiagramm an, um zu vergleichen, wie sich der Code im Programm und im Flussdiagramm zueinander verhalten. Erläutere, was im Code passiert, wenn das Ergebnis der im Ablaufdiagramm dargestellten Entscheidung "Nein" lautet.


Versuch es!
Kannst du das Programm so ändern, dass beim Klatschen beide LEDs aufleuchten?

 

Arbeitsblatt 6.2 - Fahren als Reaktion auf ein Klatschen
In dieser Aktivität musst du ein Programm schreiben, mit dem dein Edison-Roboter als Reaktion auf ein Klatschen vorwärts fährt.
Du bist dran:
Aufgabe 1: Fahre vorwärts, wenn ein Klatschen festgestellt wird
Schreibe das folgende Programm und führe es aus:

kjlö

1. Warum muss in Zeile 12 ein erster Lesevorgang des Klatschsensors durchgeführt werden? Was macht das Hinweis: Rückblick auf das Arbeitsblatt 2.5.
________________________________________________________________________


Aufgabe 2: Vorwärts und rückwärts fahren, wenn ein Klatschen festgestellt wird
Der Geräuschsensor des Edison-Roboters reagiert nicht nur empfindlich auf Klatschen. Die Sensoren können auf jeden erkannten lauten Ton reagieren. Aus diesem Grund kannst du in der Nähe des Lautsprechers auf den Roboter tippen, um den Tonsensor auszulösen.
Die Motoren, Getriebe und Räder von Edison machen beim Drehen Geräusche, die den Geräuschsensor auslösen können. Um zu verhindern, dass der Geräuschpegel des Roboters den Geräuschsensor auslöst, musst du das Programm ändern.
Du musst einen TimeWait () -Funktionsaufruf mit einem Eingabeparameter von ca. 350 Millisekunden hinzufügen, um den Robotermotoren Zeit zum Stoppen zu geben.
Du musst auch einen ReadClapSensor () verwenden, um den Klopfsensor zu löschen.
Schreibe folgendes Programm:

lrft
Lade das Programm herunter und teste es.
2. Normalerweise schreiben wir ein Flussdiagramm, um unseren Code zu planen. Schreibe zu Übungszwecken ein Flussdiagramm, das dem soeben geschriebenen Code entspricht. Zeichne dein Flussdiagramm unten oder verwende ein Programm wie Google Slides, um dein Flussdiagramm zu erstellen.

Arbeitsblatt 6.3 - Entwerfen Sie Ihre eigene Funktion
In dieser Übung entwirfst du deine eigene Funktion und schreibst damit ein Programm für Edison.
Was genau sind Funktionen?
Nachdem du eine Weile mit Edison und EdPy programmiert hast, hast du eine Reihe verschiedener Funktionen aus der EdPy-Bibliothek verwendet.
Wie du weisst, ist eine Funktion ein Teil des Codes, der abhängig von den verwendeten Eingabeparametern eine bestimmte Rolle oder einen bestimmten Job im Programm ausführt.
Möglicherweise hast du jedoch nicht bemerkt, dass alle Funktionen, die du bisher verwendet hast, tatsächlich mehrere Codezeilen ausgeführt haben, wenn sie vom Programm ausgeführt wurden.
Dies liegt daran, dass eine Funktion ein Block aus organisiertem, wiederverwendbarem Code ist, der zum Ausführen einer einzelnen, verwandten Aktion verwendet wird.
Funktionen sind sehr hilfreich, da sie es uns ermöglichen, modularer zu programmieren und an verschiedenen Stellen im Programm denselben Codeblock zu verwenden. Damit dein Programm alle diese Codezeilen ausführt, musst du nur eine Zeile eingeben: Diese Funktion aufrufen.
Funktionen machen die Wiederverwendung von Code einfacher und effizienter, wenn wir programmieren.

Mach deine eigene Funktion
Bisher hast du jedes Mal, wenn du eine Funktion in EdPy verwendet hast, diese Funktion aus der Ed-Bibliothek aufgerufen. Du kannst auch eigene Funktionen erstellen.
In Python sehen die Funktionen folgendermaßen aus:

jkq
Alles, was eingerückt ist, ist Teil der Funktion. Alles, was nicht eingerückt ist, gehört nicht zur Funktion, sondern zur nächsten Codezeile im Programm.
Beachte, dass sich die von dir erstellte Funktionen nicht von den Funktionen unterscheiden, die du in der Ed-Bibliothek bisher verwendet hast.
Wenn du deine Funktion (mit oder ohne Parameter) aufrufen, springt das Programm vom Aufruf zum Code in der Funktion (dem eingerückten Code). Das Programm führt diesen Code dann aus, bevor es zu der Leitung zurückkehrt, in der du den Anruf getätigt hast.
Wenn du deine Funktion so einstellst, dass sie einen Wert zurückgibt, wird der Funktionsaufruf durch den Wert ersetzt, den die Funktion zurückgegeben hat, wenn das Programm zu der Zeile zurückkehrt, in der Sie den Aufruf ausgeführt haben.
Dies ist wichtig, da das Programm immer Funktionen auflöst und anschließend die mathematischen Anweisungen und Ausdrücke in dieser Reihenfolge ausführt.

Organisiere deinen Code
Die Konvention in EdPy besteht darin, die Definition deiner Funktionen am Ende deines Codes zu schreiben, nachdem du deine Funktion bereits in deinem Programm verwendet hast.
Dies ist so, dass dein Code schön und ordentlich ist. Wenn du deinen Code auf diese Weise organisierst, können alle deine Funktionen, unabhängig davon, ob du deine eigenen Funktionen verwendest oder Funktionen aus einer Bibliothek aufrufen, in den Hauptteil deines Programms auf übersichtliche Weise geschrieben werden. Deine Funktionsdefinitionen können sich darüber hinaus weiter unten im Programm befinden.
Du bist dran:
Aufgabe 1: Übe das Definieren einer Funktion
Schau dir folgendes Programm an:

kl567
Zeile 17 im Programm ist der Funktionsaufruf. Die Zeilen 21 bis 25 definieren die Funktion. Denke daran, dass die Konvention darin besteht, deine Funktion am Ende deines Programms zu definieren, um alles übersichtlich und übersichtlich zu halten.
Schreibe das Programm und lade  es auf deinen Edison-Roboter herunter. Führe  das Programm aus, um zu sehen, wie es funktioniert.
1. Wir könnten eine Funktion schreiben, die den Edison-Roboter eine Quadrat abfahren lässt. Fülle  die fehlenden Wörter in der folgenden Funktion aus, um das Schreiben dieser Funktion abzuschließen.
def driveInaSquare ():
    für i in range (___):
        Ed.Drive (_____________, _____________, _____________)
        Ed.Drive (_____________, _____________, _____________)
2. Schreibe die Syntax für den Code, um diese Funktion aufzurufen. Mit anderen Worten, was würdest du in dein Programm eingeben, um es aufzurufen?

Schreibe ein Programm, das Edison auf mehreren Feldern antreibt. Du musst die Funktion "driveInaSquare" definieren und dein Programm muss diese Funktion mehrmals aufrufen. Lade das Programm herunter und führe es aus, um zu sehen, wie es funktioniert.
3. Tut das Programm das, was du erwartest hast? Wenn nicht, beschreibe, was du erwartest hast und was das Programm tatsächlich getan hat. Beschreibe alle Probleme, die du hattest, um dein Programm zum Laufen zu bringen.

Aufgabe 2: Entwerfe deineeigene Funktion
Schreibe deine eigene Funktion, die Edison veranlasst, etwas zu tun, wenn du klatschst. Du könntest Edison zum Tanzen bringen, eine LED blinken lassen, sich in einem Kreis drehen oder irgendetwas anderes, was du magst!

Schritt 1: Design
Schreibe zunächst ein Flussdiagramm, das dein Programm grafisch zusammenfasst. Erstelle dein Flussdiagramm, indem du es auf Papier zeichnest, oder verwende ein Programm wie Google Slides. Stelle sicher, dass du die richtigen Formen in deinem Flussdiagramm verwenden, um den Start, die Prozesse, die Entscheidungspunkte und den Fluss des Programms darzustellen.
Welche Formen du benötihst, hängt von deinem Flussdiagramm ab. Du benötigst mindestens die ovale Startform, die Rechteckprozessform und die Rautenentscheidungsform in deinem Flussdiagramm.
Schritt 2: Code
Übersetze deine Idee in der EdPy-App in Code. Verwende dein Flussdiagramm als Richtlinie und kodiere deine Funktion, um jeden Schritt, den du in deinem Flussdiagramm festgelegt hast, einzuschließen.
Schritt 3: Test
Schreibe ein Testprogramm mit deiner Funktion und zusätzlichem Code, um deine Funktion zu „trainieren“. (Wenn du eine Funktion ausübst, musst du sie in deinem Code aufrufen.) Überprüfe, ob deine Funktion so funktioniert, wie du es geplant und erwartet hast. Wenn nicht, überprüfe dein Flussdiagramm und deinen Code und passe  sie nach Bedarf an. Experimentiere, um zu sehen, was funktioniert!
4. Beschreibe, was deine Funktion getan hat.
5. Beschreibe alle Probleme, die du hattest.