In der dritten Praktikumsaufgabe zu c4ev3 wollen wir die Ansteuerung der Motoren unseres Roboters vertiefen. Wenn du bisher noch kein c4ev3-Projekt in Eclipse angelegt hast, hilft dir unsere erste Praktikumsaufgabe dabei.

Zweck

In praktisch allen Anwendungsfällen bewegen sich Roboter. Nachdem wir im letzten Praktikum das Vor- und Rückwärtsfahren behandelt haben, wollen wir uns nun dem Lenken widmen. Es gibt viele Roboter, die Gegenstände zu einem bestimmten Ziel transportieren. Dafür ist ein sicheres Navigieren notwendig. Bevor wir also größere Projekte realisieren können, befassen wir uns kurz damit, die Motoren unseres Roboters präzise anzusteuern, damit der Roboter exakte Kurven fährt und lernen gleichzeitig dabei, wie wir diese Bewegung in c4ev3 programmieren können.

Vorbereitung

Zur Vorbereitung erstellt ihr wie im vorherigen Praktikum zunächst ein neues c4ev3-Projekt. Wir starten wieder mit einem Hello World-Projekt, da uns Eclipse dadurch sehr viele Einstellungen abnimmt. Die C-Datei im Verzeichnis src, in der wir unseren Programmcode schreiben, können wir beliebig anpassen, um die gewünschte Aufgabe zu erfüllen. Wenn ihr die Programmierung direkt ausprobieren wollt, benötigt ihr einen EV3, der ähnlich dem Education Basismodell aufgebaut ist.

Aufgabe

Programmiere den Roboter so, dass er ein kleines Quadrat fährt. Dazu soll der EV3 genau 10 cm vorwärts fahren und sich um exakt 90° drehen. Diese beiden Schritte müssen dann noch drei Mal wiederholt werden, bis das Quadrat vollständig abgefahren ist.

Die Befehle, die für dieses Praktikum notwendig sind, kannst du aus der EV3-API von c4ev3 heraussuchen, falls du sie nicht auswendig weißt. Wenn du gar nicht weiterkommst oder nicht weißt, wie du anfangen kannst, helfen dir folgende Tipps vielleicht weiter. Aber versuche es erst ohne Hilfe.

Brauchst du einen Tipp?

Die folgenden Tipps helfen dir, falls du nicht weißt, wie du anfangen sollst oder wenn du nicht weiterkommst.

  • Zerlege die Aufgabe in kleinere Teile. Zuerst fahren und wenn das funktioniert um 90° drehen. Die Kombination vier Mal hintereinander wiederholen.
  • Achte immer darauf, dass du das aktuelle Projekt im Projekt-Explorer von Eclipse ausgewält hast.
  • Speichere dein Programm oft (Strg + S). So gehen Änderungen nicht verloren und beim Übertragen auf den EV3 wird die aktuelle Version übermittelt.
  • Denke daran, dein Programm zu kompilieren (Strg + B), bevor du den Code auf den EV3 überträgst.

Für die Aufgabe sind API-Aufrufe von c4ev3 nötig. Sie regeln, welche Befehle an den EV3 weitergeleitet werden. Wir haben das EV3-API etwas weiter oben im Text bereits verlinkt.

ZUR LÖSUNG WEITERSCROLLEN

Lösung

Das nachfolgende Listing zeigt das komplette Programm und damit auch eine mögliche vollständige Lösung.
Wenn du gar nicht weißt, wie du die Aufgabe angehen sollst, kannst du dir hier die Lösung anschauen.

[et_pb_dmb_code_snippet title=“Listing 1: Das C-Programm für die dritte c4ev3-Praktikumsaufgabe.“ linenums=“on“ _builder_version=“3.17.6″ body_font_size_tablet=“51″ body_line_height_tablet=“2″ header_font_size_tablet=“51″ header_line_height_tablet=“2″]

LyoKIFxmaWxlCQlwcmFrMDMuYwogXGF1dGhvcgkke3VzZXJ9CiBcZGF0ZQkJJHtkYXRlfQogXGJyaWVmCQlTaW1wbGUgSGVsbG8gV29ybGQhIGZvciB0aGUgRXYzCiovCgojaW5jbHVkZSA8ZXYzLmg+CgppbnQgbWFpbih2b2lkKQp7CgoJSW5pdEVWMygpOwoKCgkvKgoJICogICAxLiBTZWl0ZSBkZXMgUXVhZHJhdHMKCSAqLwoJCgkvL2VpbmUgU2VrdW5kZSBncmFkZWF1cyBmYWhyZW4KCU9uRndkUmVnKE9VVF9CQywyNSk7CglXYWl0KFNFQ18xKTsKCgkvL3N0b3BwZW4KCU9mZihPVVRfQkMpOwoJV2FpdChNU181MDApOwoKCS8vZWluZSA5MC1HcmFkLUt1cnZlIGZhaHJlbgoJT25Gd2RSZWcoT1VUX0IsMjUpOwoJT2ZmKE9VVF9DKTsKCVdhaXQoU0VDXzEpOwoJV2FpdChNU181MDApOwoKCS8vc3RvcHBlbgoJT2ZmKE9VVF9CQyk7CglXYWl0KE1TXzUwMCk7CgoJCgoKCgkvKgoJICogICAyLiBTZWl0ZSBkZXMgUXVhZHJhdHMKCSAqLwoJCgkvL2VpbmUgU2VrdW5kZSBncmFkZWF1cyBmYWhyZW4KCU9uRndkUmVnKE9VVF9CQywyNSk7CglXYWl0KFNFQ18xKTsKCgkvL3N0b3BwZW4KCU9mZihPVVRfQkMpOwoJV2FpdChNU181MDApOwoKCS8vZWluZSA5MC1HcmFkLUt1cnZlIGZhaHJlbgoJT25Gd2RSZWcoT1VUX0IsMjUpOwoJT2ZmKE9VVF9DKTsKCVdhaXQoU0VDXzEpOwoJV2FpdChNU181MDApOwoKCS8vc3RvcHBlbgoJT2ZmKE9VVF9CQyk7CglXYWl0KE1TXzUwMCk7CgoKCgoKCS8qCgkgKiAgIDMuIFNlaXRlIGRlcyBRdWFkcmF0cwoJICovCgkKCS8vZWluZSBTZWt1bmRlIGdyYWRlYXVzIGZhaHJlbgoJT25Gd2RSZWcoT1VUX0JDLDI1KTsKCVdhaXQoU0VDXzEpOwoKCS8vc3RvcHBlbgoJT2ZmKE9VVF9CQyk7CglXYWl0KE1TXzUwMCk7CgoJLy9laW5lIDkwLUdyYWQtS3VydmUgZmFocmVuCglPbkZ3ZFJlZyhPVVRfQiwyNSk7CglPZmYoT1VUX0MpOwoJV2FpdChTRUNfMSk7CglXYWl0KE1TXzUwMCk7CgoJLy9zdG9wcGVuCglPZmYoT1VUX0JDKTsKCVdhaXQoTVNfNTAwKTsKCgoKCgoJLyoKCSAqICAgNC4gU2VpdGUgZGVzIFF1YWRyYXRzCgkgKi8KCQoJLy9laW5lIFNla3VuZGUgZ3JhZGVhdXMgZmFocmVuCglPbkZ3ZFJlZyhPVVRfQkMsMjUpOwoJV2FpdChTRUNfMSk7CgoJLy9zdG9wcGVuCglPZmYoT1VUX0JDKTsKCVdhaXQoTVNfNTAwKTsKCgkvL2VpbmUgOTAtR3JhZC1LdXJ2ZSBmYWhyZW4KCU9uRndkUmVnKE9VVF9CLDI1KTsKCU9mZihPVVRfQyk7CglXYWl0KFNFQ18xKTsKCVdhaXQoTVNfNTAwKTsKCgkvL3N0b3BwZW4KCU9mZihPVVRfQkMpOwoJV2FpdChNU181MDApOwoKCgoKCgoKCQoJRnJlZUVWMygpOwoJcmV0dXJuIDA7Cn0=

[/et_pb_dmb_code_snippet]