Die Verwendung des Controllers kann es einfacher machen, Ihren Roboter zu fahren und zu bewegen, um eine Aufgabe zu erledigen. Es gibt jedoch Einschränkungen bei der Verwendung des Drive-Programms, und abhängig von der Bauart Ihres Roboters oder der anstehenden Aufgabe benötigen Sie möglicherweise unterschiedliche Steuerungen. Durch die Codierung des Controllers können Sie den Controller optimieren, damit er besser zu Ihrem Roboter und der jeweiligen Aufgabe passt. Es gibt mehrere Möglichkeiten, den Controller in VEXcode V5 zu codieren. Jede hat ihre Vor- und Nachteile, und einige Methoden sind je nach gewünschtem Ergebnis für bestimmte Situationen besser geeignet.
Dieser Artikel führt Sie durch drei verschiedene Optionen für die benutzerdefinierte Codierung des Controllers in VEXcode V5. Jede Methode wird mit ihren Vorteilen, Einschränkungen und einem Beispielanwendungsfall beschrieben, um Sie bei der Auswahl einer Methode zu unterstützen. Für die Zwecke dieses Artikels wurden alle gezeigten Codebeispiele für den Clawbot erstellt. Die gleichen Konzepte könnten jedoch auf zahlreiche andere Builds angewendet werden, die auf builds.vex.comzu finden sind, sowie auf benutzerdefinierte Builds.
Option 1: Tasten in der Gerätekonfiguration zuweisen
Diese Option ist großartig, wenn Sie einen Standard-Build wie einen Speedbot oder Clawbot verwenden und schnell einsatzbereit sein möchten.
Mit dieser Option können Sie den Tasten auf dem Controller in der Gerätekonfiguration Motoren, einen Antriebsstrang oder Motorgruppen zuweisen. Weitere Informationen zum Zuweisen von Tasten zum Controller in der Gerätekonfiguration finden Sie
Zusammenfassung von Option 1: Zuweisen von Tasten in der Gerätekonfiguration
Vorteile |
Einschränkungen |
Beispielsituation |
|
|
|
Option 2: Verwenden einer Endlosschleife
Wenn Sie einen benutzerdefinierten Build anstelle eines Standard-Builds verwenden oder mehr Anpassungsmöglichkeiten für Ihren Controller wünschen, ist diese Option eine gute Option. Die Verwendung einer Forever-Schleife ist eine großartige Einführung zum Erstellen von benutzerdefiniertem Code für Ihren Controller.
Diese Option platziert alle Bedingungen für den Controller und die zugehörigen Schaltflächen in einer Endlosschleife. Dies bietet mehr Flexibilität, insbesondere bei benutzerdefinierten Build-Designs, erfordert aber auch etwas Programmiererfahrung. Bei der Verwendung dieser Option ist jedoch die Länge und Komplexität Ihres Projekts zu berücksichtigen. Je mehr Bedingungen hinzugefügt werden, desto länger kann der Codestapel werden. Das bedeutet, dass mehrere Blöcke der Reihe nach ausgeführt werden müssen, und wenn viele Blöcke vorhanden sind, kann dies die Projektausführung verlangsamen. Eine langsamere Projektausführung kann zu einer Verzögerung zwischen dem Drücken der Controller-Tasten und dem Erkennen des Roboterverhaltens führen.
Das unten gezeigte spezifische Beispiel ist eine Möglichkeit, wie Sie eine Forever-Schleife mit einem benutzerdefinierten Roboter (z. B. einem Roboter mit einem benutzerdefinierten Antriebsstrang) verwenden können, um den Roboter anzutreiben und die Klaue und den Arm zu manipulieren, um mit Objekten zu interagieren.
Laden Sie die VEXcode V5-Projektdatei „Option 2“ >herunter
Erläuterung des Codes für Option 2.
Codestück |
Erläuterung |
Für dieses Codebeispiel wurde ein Clawbot verwendet. Wenn die Tasten am Controller zum Anheben und Absenken des Arms verwendet werden, fällt der Arm aufgrund der Schwerkraft wieder nach unten, sobald die Taste losgelassen wird. Wenn Sie sowohl den Arm als auch die Klaue auf „Halten“ stellen, stellen Sie sicher, dass sowohl der Arm als auch die Klaue an Ort und Stelle bleiben, auch nachdem die Tasten am Controller losgelassen wurden. |
|
Für dieses Codebeispiel wurde ein Clawbot verwendet. Wenn die Tasten am Controller zum Anheben und Absenken des Arms verwendet werden, fällt der Arm aufgrund der Schwerkraft wieder nach unten, sobald die Taste losgelassen wird. Wenn Sie sowohl den Arm als auch die Klaue auf „Halten“ stellen, stellen Sie sicher, dass sowohl der Arm als auch die Klaue an Ort und Stelle bleiben, auch nachdem die Tasten am Controller losgelassen wurden. Eine Forever-Schleife wird verwendet, um kontinuierlich zu überprüfen, welche Tasten auf dem Controller gedrückt werden. Mit den Blöcken [Motorgeschwindigkeit einstellen] wird die Motorgeschwindigkeit entlang der 2. und 3. Achse auf die aktuelle Position des Controllers eingestellt. Dies entspricht dem Einschalten eines Autos. Das bringt das Auto nicht unbedingt in Bewegung, es setzt es nur in Bewegung. Jede Joystick-Achse gibt einen Wert zwischen -100 und +100 zurück und gibt in der Mitte den Wert Null zurück. Das bedeutet dann, dass die Joystick-Achsen, wenn sie gedrückt werden, -100 % bis 100 % entsprechen. Je weiter die Achsen in Richtung 100 oder -100 geschoben werden, desto schneller dreht sich der Motor. Der [Spin]-Block wird dann verwendet, um den Motor tatsächlich zu bewegen. Dies entspricht dem Gasgeben am Auto, nachdem die Richtung festgelegt wurde. Dadurch kann jeder Motor von einer der vier Controller-Achsen gesteuert werden. |
|
Für dieses Codebeispiel wurde ein Clawbot verwendet. Wenn die Tasten am Controller zum Anheben und Absenken des Arms verwendet werden, fällt der Arm aufgrund der Schwerkraft wieder nach unten, sobald die Taste losgelassen wird. Wenn Sie sowohl den Arm als auch die Klaue auf „Halten“ stellen, stellen Sie sicher, dass sowohl der Arm als auch die Klaue an Ort und Stelle bleiben, auch nachdem die Tasten am Controller losgelassen wurden. Der Block [If then else if then else] wird verwendet, um bestimmte Verhaltensweisen dem Drücken oder Loslassen von Tasten auf dem Controller zuzuordnen. In diesem Codeabschnitt werden die Bedingungen festgelegt, wenn die Auf- oder Ab-Tasten gedrückt werden. Wenn dies der Fall ist, treten bestimmte Verhaltensweisen auf, z. B. das Heben und Senken des Arms. Es gibt auch den else-Teil der Bedingung: Wenn keine Taste gedrückt wird, stoppt der Arm seine Bewegung. Beachten Sie, dass der folgende Codeabschnitt im Projekt für die Klaue derselben Erklärung folgt. |
Zusammenfassung von Option 2: Verwenden einer Forever-Schleife
Vorteile |
Einschränkungen |
Beispielsituation |
|
|
|
Option 3: Ereignisse verwenden
Wenn Sie Ihren Controller umfassend anpassen möchten, ist die Verwendung von Ereignissen die beste Option für Sie. Ein Knopfdruck kann mehrere Verhaltensweisen des Roboters auslösen, wie etwa das Drücken einer Taste, um die Klaue zu öffnen, den Arm anzuheben und eine bestimmte Strecke vorwärts zu fahren. Der Versuch, innerhalb einer Forever-Schleife mehrere Verhaltensweisen pro Schaltfläche zu programmieren, würde zu einer erheblichen Verlangsamung der Projektausführung führen. Mithilfe von Ereignissen können Sie dies effektiver tun.
Diese Option verwendet Ereignisse, um den Projektfluss zu unterbrechen. Dies ähnelt der Verwendung einer Forever-Schleife, ermöglicht jedoch eine bessere Organisation des Codes, sodass die Schaltflächenausführung eine schnellere Reaktionszeit hat. Eine schnellere Reaktionszeit bedeutet, dass Sie keine Verzögerung zwischen dem Drücken der Controller-Tasten und dem Erkennen des Roboterverhaltens bemerken. Dieses Beispiel zeigt die gleichen Verhaltensweisen wie das vorherige Projekt, jedoch unter Verwendung der Ereignisse anstelle der Forever-Schleife.
Laden Sie die VEXcode V5-Projektdatei >„Option 3“ herunter
Erläuterung des Codes für Option 3.
Codestück |
Erläuterung |
Für dieses Codebeispiel wurde ein Clawbot verwendet. Wenn die Tasten am Controller zum Anheben und Absenken des Arms verwendet werden, fällt der Arm aufgrund der Schwerkraft wieder nach unten, sobald die Taste losgelassen wird. Wenn Sie sowohl den Arm als auch die Klaue auf „Halten“ stellen, stellen Sie sicher, dass sowohl der Arm als auch die Klaue an Ort und Stelle bleiben, auch nachdem die Tasten am Controller losgelassen wurden. |
|
Für dieses Codebeispiel wurde ein Clawbot verwendet. Wenn die Tasten am Controller zum Anheben und Absenken des Arms verwendet werden, fällt der Arm aufgrund der Schwerkraft wieder nach unten, sobald die Taste losgelassen wird. Wenn Sie sowohl den Arm als auch die Klaue auf „Halten“ stellen, stellen Sie sicher, dass sowohl der Arm als auch die Klaue an Ort und Stelle bleiben, auch nachdem die Tasten am Controller losgelassen wurden. {When controller axis} Ereignisblöcke werden verwendet, um bestimmte Verhaltensweisen auszulösen, wenn eine der vier Achsen auf dem Controller mithilfe der Joysticks geändert wird. Mit den Blöcken [Motorgeschwindigkeit einstellen] wird die Motorgeschwindigkeit auf die aktuelle Position des Controllers entlang der A- und D-Achse eingestellt. Dies entspricht dem Einschalten eines Autos. Das bringt das Auto nicht unbedingt in Bewegung, es setzt es nur in Bewegung. Jede Joystick-Achse gibt einen Wert zwischen -100 und +100 zurück und gibt in der Mitte den Wert Null zurück. Das bedeutet dann, dass die Joystick-Achsen, wenn sie gedrückt werden, -100 % bis 100 % entsprechen. Je weiter die Achsen in Richtung 100 oder -100 geschoben werden, desto schneller dreht sich der Motor. Der [Spin]-Block wird dann verwendet, um den Motor tatsächlich zu bewegen. Dies entspricht dem Gasgeben am Auto, nachdem die Richtung festgelegt wurde. Dadurch kann jeder Motor von einer der vier Controller-Achsen gesteuert werden. |
|
Für dieses Codebeispiel wurde ein Clawbot verwendet. Wenn die Tasten am Controller zum Anheben und Absenken des Arms verwendet werden, fällt der Arm aufgrund der Schwerkraft wieder nach unten, sobald die Taste losgelassen wird. Wenn Sie sowohl den Arm als auch die Klaue auf „Halten“ stellen, stellen Sie sicher, dass sowohl der Arm als auch die Klaue an Ort und Stelle bleiben, auch nachdem die Tasten am Controller losgelassen wurden. {When controller axis} Ereignisblöcke werden verwendet, um bestimmte Verhaltensweisen dem Drücken oder Loslassen von Tasten auf dem Controller zuzuordnen. In diesem Codeabschnitt werden die Bedingungen festgelegt, wenn die Auf- oder Ab-Tasten gedrückt werden. Wenn dies der Fall ist, treten bestimmte Verhaltensweisen auf, z. B. das Heben, Senken oder Anhalten des Arms. Beachten Sie, dass der letzte Codeabschnitt im Projekt für die Klaue derselben Erklärung folgt. |
Zusammenfassung von Option 3: Verwenden von Ereignissen
Vorteile |
Einschränkungen |
Beispielsituation |
|
|
|