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:

fdgdg
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.

gfgdg

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:

nnv

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:

gfhjgfj

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:

djdjgfj

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:

fhf

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:

nbgn

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?