Edison Robotik: Lektion 2
Arbeitsblatt 2.1 - Lass den Roboter
vorwärts fahren
In dieser Lektion musst du ein Programm schreiben,
um deinen Edison-Roboter vorwärts fahren zu lassen. Schau dir folgendes
Programm an:
Schritt 1:
Schreibe das obige Programm in der EdPy-App, indem du in Zeile 13 "Ed"
eingibst. Wenn du in Zeile 13 mit der Eingabe von "Ed" beginnst, wird
ein Popup-Fenster angezeigt. In der Eingabeaufforderung wird eine Liste
der möglichen Befehle angezeigt, die du auswählen kannst. Dies ist eine
Funktion der EdPy-App namens "Befehlszeilen-Vervollständigung", mit der
du schneller programmieren kannst.
Schritt 2: Gib "Ed.Drive ("
in Zeile 13 ein und wähle die Funktion "Ed.Drive ()". Ed.Drive () ist
eine Funktion in Python, die vom Setup-Code aus dem
Edison-Bibliotheksmodul "Ed" importiert wird. Eine Funktion ist ein Teil
des Codes, der abhängig von den eingegebenen Parametern eine bestimmte
Rolle oder einen bestimmten Auftrag ausführt. Alle Funktionen, die aus
der Bibliothek "Ed" importiert werden, müssen mit "Ed" beginnen. Dies
teilt dem Programm mit, zu welcher Bibliothek es gehen soll, um diese
Funktion zu finden.
Schritt 3: Gib die
Eingabeparameter ein. Wenn eine Funktion Eingabeparameter hat, musst du
für jeden einen Wert eingeben. Die Funktion Drive () hat drei
Eingabeparameter:
• direction -
die Richtung, in die Edison fahren wird
• speed - die
Geschwindigkeit, mit der Edison fahren wird
• distance -
die Anzahl der Entfernungseinheiten, die Edison zurücklegen wird
Unterschiedliche Eingabeparameter nehmen
unterschiedliche Werte an. Zum Beispiel nimmt 'speed' in Form des
Befehls Ed.SPEED_ X eine Zahl von 1 bis 10 (10 ist das Maximum) an. Die
Art der Entfernungseinheiten wird durch die Konstante gesteuert, auf die
"Ed.DistanceUnits" im Setup-Code eingestellt ist. Es gibt drei
Entfernungseinheiten, die du verwenden kannst:
• Zentimeter, geschrieben als Ed.CM
• Inches, geschrieben als Ed.INCH
• Uhrzeit, geschrieben als Ed.TIME
Hinweis: Wenn du einen Edison V1-Roboter
hast, musst du Ed.Time verwenden. Stelle daher sicher, dass
Ed.DistanceUnits = Ed.TIME ist. Die Zeiteinheit für die Entfernung ist
Millisekunden. Dies bedeutet, dass du zum Fahren für 2 Sekunden den
Abstandseingabeparameter auf 2000 einstellen musst (2000 Millisekunden =
2 Sekunden).
Schritt 4:
Überprüfe dein Programm.
Schauen wir uns die Antriebsfunktionen und
-parameter in diesem Programm genauer an.
Wenn du das vollständige Programm geschrieben
haben, klicke auf die Schaltfläche "Code überprüfen" und überprüfe im
Fenster "Compiler-Ausgabe", ob du beim Eingeben Fehler gemacht
hast.Tippfehler werden als "Syntaxfehler" bezeichnet. Wenn du ein Wort
eingibst, das nicht Teil der Sprache des EdPy-Programms ist (auch als
"Syntax" bezeichnet), kann der EdPy-Compiler nicht verstehen, was damit
gemeint ist. Dies erzeugt einen Syntaxfehler.Wenn dein Code Fehler
enthält, behebe diese, damit dein Code dem Beispiel entspricht.
Schritt 5:
Lade dein Programm herunter und teste
es. Wenn du überprüft hast, dass dein Code keine Fehler
enthält, lade dein Programm auf deinen Edison herunter.
1. Schalte Edison ein und drücke die
Aufzeichnungstaste (runde Taste) von Edison einmal
2. Schließe Edison mit dem EdComm-Kabel an den
Computer an und vergewissere dich, dass die Lautstärke voll aufgedreht
ist.
3. Drücke die Taste "Program Edison" in der oberen
rechten Ecke der EdPy-App
4. Befolge die Schritte im Popup-Fenster und
drücke dann auf "Program Edison".Ziehe nach dem Herunterladen des
Programms das EdComm-Kabel ab. Verwende Übungsblatt 2.1 oder farbiges
Klebeband, um die Start- und Ziellinien auf einem Schreibtisch oder dem
Boden als Testfläche für dein Gerät zu markieren. Drücke die
Wiedergabetaste (Dreieck) einmal, um das Programm auszuführen und
beobachte, was passiert.
Schritt 6: Experimentiere
mit deinem Programm. Messe den Abstand zwischen deiner Start- und
Ziellinie. Versuche, dein Programm so zu ändern, dass dein
Edison-Roboter kurz vor der Ziellinie hält. Experimentiere, um zu sehen,
was funktioniert.
Du bist dran:
1. Auf welche Konstante hattest du
"Ed.DistanceUnits" im Setup-Code festgelegt?
2. Welche Zahl musstest du als
Abstandseingabeparameter eingeben, damit Edison vom Start bis zur
Ziellinie fuhr?
3. Experimentiere das Fahren des Edison-Roboters
mit unterschiedlichen Geschwindigkeiten. Was macht der Roboter, wenn du
Edison mit Geschwindigkeit 10 fahren lässt? Bemerkst du irgendwelche
Änderungen in der Genauigkeit von Edison, wenn er mit Geschwindigkeit 10
fährt?
Arbeitsblatt 2.2 - Lass den Roboter rückwärts fgahren
In dieser Aktivität musst du ein Programm
schreiben, um deinen Edison-Roboter rückwärts fahren zu lassen.Wenn du
in EdPy ein Programm für Edison schreibst, befolge immer dieselben
grundlegenden Schritte:
• Schritt 1: Überprüfe, ob der Setup-Code die
gewünschten Konstanten verwendet.
• Schritt 2: Schreibe das Programm, wähle die
gewünschten Funktionen aus und fülle die Eingabeparameter mit den
gewünschten Werten.
• Schritt 3: Überprüfe dein Programm auf Fehler,
indem du auf die Schaltfläche "Code überprüfen" klickst.
• Schritt 4: Lade dein Programm auf deinen
Edison-Roboter herunter und teste es. Denke daran, wenn du einen Edison
V1-Roboter hast, sicher zu stellen, dass Ed.DistanceUnits = Ed.TIME ist.
Der Abstandsparameter für Ed.TIME wird in Millisekunden angegeben.
Du bist dran:
Aufgabe 1:
Rückwärts fahren
Schreibe das folgende Programm:
Verwende Übungsblatt 2.1 oder farbiges Klebeband,
um die Start- und Ziellinien auf einem Schreibtisch oder dem Boden als
Testfläche für dein Programm zu markieren. Experimentiere, um
festzustellen, ob du deinen Edison vom Start bis zur Ziellinie rückwärts
fahren lassen kannst.
Aufgabe 2:
Verwende die Konstante "Ed.DISTANCE_UNLIMITED". Es gibt mehrere
Möglichkeiten, deinen Edison so zu programmieren, dass er vorwärts und
rückwärts fährt. Eine andere Möglichkeit ist die Verwendung von
"Ed.DISTANCE_UNLIMITED" für den Entfernungsparameter. Diese Konstante
schaltet beide Antriebsmotoren von Edison ein. Anders als bei Verwendung
eines Zahlenwerts für den Abstandsparameter gibt Ed.DISTANCE_UNLIMITED
keinen genauen Wert an, nach dem die Motoren anhalten. Stattdessen
werden die Motoren eingeschaltet und dann zur nächsten Codezeile
gewechselt. Ein Stopp der Motoren wird später im Code benötigt. Die
Verwendung von Ed.DISTANCE_UNLIMITED kann nützlich sein, wenn duein
Programm schreiben möchtest, bei dem die Motoren nur dann anhalten, wenn
ein anderes Ereignis eintritt, z. B. wenn ein Hindernis erkannt wird.
Schau dir folgendes Programm an:
Dieses Programm schaltet die Edison-Motoren ein,
um rückwärts zu fahren, und wartet dann 200 Millisekunden, bevor die
Motoren ausgeschaltet werden. Schreibe ein Programm mit dem Parameter
Ed.DISTANCE_UNLIMITED, um rückwärts zu fahren. Verwende Übungsblatt 2.1
oder farbiges Klebeband, um die Start- und Ziellinien auf einem
Schreibtisch oder dem Boden als Testfläche für dein Programm zu
markieren. Experimentiere mit Ihrem Programm, um festzustellen, ob du
deinen Edison dazu bringen kannst, vom Ziel bis zur Startlinie rückwärts
zu fahren.
1. Stelle die Geschwindigkeit in deinem Programm
auf Ed.SPEED_6 ein. Wie viele Millisekunden musst du in die TimeWait ()
- Funktion eingeben, damit Edison vom Ziel bis zur Startlinie rückwärts
fährt?
2. Experimentiere mit verschiedenen
Geschwindigkeits- und TimeWait () - Eingabeparametern. Was sind die
schnellsten und langsamsten Zeiten, in denen Edison vom Ziel bis zur
Startlinie rückwärts fahren kann?
Arbeitsblatt 2.3 - Vorwärts, dann rückwärts
In diesem Lektionsteil musst du ein Programm
schreiben, um deinen Edison-Roboter vorwärts und dann rückwärts fahren
zu lassen. Denke daran, die vier grundlegenden Programmierschritte für
Edison mit EdPy zu befolgen:
• Schritt 1: Überprüfe , ob der Setup-Code die
gewünschten Konstanten verwendet.
• Schritt 2: Schreibe das Programm, wähle die
gewünschten Funktionen aus und fülle die Eingabeparameter mit den
gewünschten Werten.
• Schritt 3: Überprüfe dein Programm auf Fehler,
indem du auf die Schaltfläche "Code überprüfen" klickst.
• Schritt 4: Lade dein Programm suf deinen
Edison-Roboter herunter und teste es.Denke daran, wenn du einen Edison
V1-Roboter habst: stelle sicher, dass Ed.DistanceUnits = Ed.TIME ist.
Der Abstandsparameter für Ed.TIME wird in Millisekunden angegeben.
Du bist dran:
Aufgabe 1:
Schreibe das folgende Programm:
Verwende Übungsblatt 2.1 oder farbiges Klebeband,
um die Start- und Ziellinien auf einem Schreibtisch oder dem Boden als
Testfläche für dein Programm zu markieren.
1. Welches sind die korrekten Werte für die
Abstandseingabeparameter, damit Edison zwischen der Start- und der
Ziellinie vorwärts und dann rückwärts fährt?
Aufgabe 2:
Schreibe ein neues Programm, mit dem Edison vorwärts und dann rückwärts
zwischen der Start- und der Ziellinie fährt. Verwende diesmal den
Parameter Ed.DISTANCE_UNLIMITED und die Funktionen Ed.TimeWait ().
Verwende Übungsblatt 2.1 oder farbiges Klebeband, um die Start- und
Ziellinien auf einem Schreibtisch oder dem Boden als Testfläche für dein
Programm zu markieren.
Arbeitsblatt 2.4 - Ausdrücke in Python
In dieser Übung lernst du ein wichtiges
Codeelement kennen, das wir beim Programmieren in Python verwenden:
Bedingungen.
Was sind Bedingungen?
Eine Bedingung ist eine Frage, die entweder als
"wahr" oder "falsch" gelöst werden kann. Zum Beispiel: "Ist A kleiner
als B?" Oder "Ist A gleich B?"Im Code werden Bedingungen mit
mathematischen Notationen anstelle von Wörtern geschrieben. Im
Setup-Code habst du gesehen, dass die = -Notation verwendet wird.
Beispiel: Ed.DistanceUnits = Ed.CM. Die Verwendung der Notation "A = B"
bedeutet, "A auf den gleichen Wert wie B einstellen". Bedingungen
verwenden auch Notationen. Dies sind einige der grundlegenden Notationen
in Bedingungen, die wir in Python verwenden können:
Bedingung |
Bedeutung |
A == B |
hat A denselben Wert wie B |
A != B |
ist A ungleich B |
A > B |
ist A größer B |
A >= B |
ist A größer oder gleich B |
A < B |
ist A kleiner B |
A <= B |
ist A kleiner oder gleich B |
Bedingungen vergleichen die linke Seite mit der
rechten Seite der Notation in der Anweisung. Du kannst das "A" und "B"
in der Liste der obigen Ausdrücke durch einen beliebigen Wert oder eine
beliebige Funktion ersetzen, die einen Wert zurückgibt. Du kannst auch
mit diesen Werten rechnen. Zum Beispiel bedeutet "(A + 2)> B" "Ist A
plus 2 größer als B?" Im Code arbeiten Bedingungen in einer bestimmten
Reihenfolge. Wenn dein Bedingung Rechnungen zu einem Wert enthält oder
eine Funktion aufruft, löst die Bdeingung zuerst die Rechnung oder die
Funktion auf. Anschließend wird die linke Seite der bedingung mit der
rechten Seite verglichen und entweder in "wahr" oder "falsch" aufgelöst.
Wofür werden in Python Bedingungen
verwendet?
Bedingungen werden zusammen mit anderen
Codeelementen verwendet, z. B. 'while'-Schleifen und' if'-Anweisungen,
um den Codefluss zu ändern. Diese Elemente ermöglichen es dem Code, sich
anders zu bewegen als nur im sequentiellen Ablauf von Zeile 1 - Zeile 2
- Zeile 3.
Du bist dran:
Übe das Auflösen von Bedingungen. Schreibe
zunächst auf, was jeder Ausdruck bedeutet, und löse ihn dann in wahr
oder falsch auf. Wenn A = 2 und B = 4, was bedeutet jeder der folgenden
Ausdrücke und in was löst sich jeder auf (wahr oder falsch)?
1. (A * 2) == B
2. A >= B
3. (A + A) != B
4. (A-1) < (B-3)
Arbeitsblatt 2.5 - Tastaturgesteuertes
Fahren
In diesem Lektionsteil musst du ein Programm
schreiben, um deinen Edison-Roboter nur vorwärts fahren zu lassen, wenn
entweder die runde Taste oder die dreieckige Taste gedrückt wird. Dazu
verwenden wir Bedingungen und die 'while'-Schleife. Schau dir folgendes
Programm an:
Dieses Programm verwendet eine 'while'-Schleife
mit einer Bedingung. In Python wiederholt eine "while" -Schleife eine
Anweisung oder eine Gruppe von Anweisungen, während eine gegebene
Bedingung WAHR ist. Sie testet die als Anweisung geschriebene Bedingung,
bevor der Schleifenkörper ausgeführt wird. Wenn die Bedingung TRUE
ergibt, wiederholt das Programm die Befehle in der Schleife. Wenn der
Bedingung FALSE ergibt, springt das Programm zur nächsten Codezeile
außerhalb der Schleife.
Einrückung verwenden
Python verwendet Einrückungen, um Anweisungen oder
Befehle zu gruppieren. In Python werden alle Anweisungen, die von der
gleichen Anzahl von Zeichenräumen eingerückt werden, als ein einziger
Codeblock betrachtet. Schaue dir Zeile 14 des Programms an. Da "pass"
eingerückt ist, befindet es sich innerhalb der Schleife. Zeile 15 im
Programm wird jedoch nicht eingerückt, sodass sich Zeile 15 nicht
innerhalb der Schleife befindet.
Funktionen und Konstanten in diesem Programm
Ed.ReadKeyPad ()
- Diese Funktion liest den Tastaturstatus von Edison ein. Mit anderen
Worten, es wird bestimmt, ob eine der Tasten von Edison gedrückt wurde
oder nicht.
Ed.ReadKeyPad ()
gibt einen Wert zurück, der angibt, welche Schaltfläche gedrückt wurde:
Ed.KEYPAD_NONE, Ed.KEYPAD_TRIANGLE oder Ed.KEYPAD_ROUND. Diese Funktion
ist für die Quadrat-Taste nicht verfügbar. Dies liegt daran, dass die
rechteckige Taste nur zum Stoppen eines Programms verwendet wird. Die
quadratische Taste stoppt immer jedes laufende Programm, wenn es
gedrückt wird.
Besonderer Hinweis: Verwenden von
Lesefunktionen in einer Schleife
Einige Datentypen werden vorübergehend im Speicher
von Edison gespeichert. Auf diese Weise kann die Ed.ReadKeyPad ()
-Funktion einen Tastendruck lesen, bevor die Lesefunktion in deinem Code
aufgerufen wird. In diesem Programm möchten wir sicherstellen, dass das
Ed.ReadKeyPad () in der while-Schleife wartet, bis eine Taste gedrückt
wurde, und keine Tastendrücke berücksichtigen, die vor der
while-Schleife auftreten. Deshalb setzen wir Ed.ReadKeyPad () in die
Zeile oberhalb der while-Schleife (Zeile 12). Dies löscht alle
vorherigen Tastendrücke vor der Schleife. Du solltest diesen Vorgang
immer befolgen, wenn du eine Lese-Funktion in einer Schleife verwendest.
Du bist dran:
Schreibe das Programm. Stelle sicher, dass du beim
Schreiben der while-Schleife den Doppelpunkt einfügst und den Einzug
korrekt ausführst:
Lade das Programm herunter und drücke die
Dreieck-Taste, um das Programm zu starten. Warte einen Moment und
versuche dann, entweder die Dreieck- oder die Rundtaste zu drücken.
1. Was hat der Roboter getan, als du einige
Sekunden nach dem Start des Programms das Dreieck oder den runden Knopf
gedrückt hast?
2. Führe das Programm erneut aus und versuche ,
anstelle der runden oder dreieckigen Taste die quadratische Taste zu
drücken. Was ist passiert? Warum ist das passiert?
3. Versuche nun, am Ende des Programms weiteren
Code hinzuzufügen. Der neue Code, den du schreibst, sollte Edison
veranlassen, rückwärts zu fahren, nachdem du die runde oder die
Dreieck-Taste erneut gedrückt hast. Mit anderen Worten, dein Programm
sollte Edison anweisen, beim ersten Drücken einer Taste vorwärts und
beim erneuten Drücken einer Taste rückwärts zu fahren. Denke daran, den
Doppelpunkt einzuschließen und deinen Code in die while-Schleife
einzurücken. Wie sieht dein neues Programm aus?