Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:blc:robotics:ablauf [2017/07/04 20:45] Simon Knaus |
lehrkraefte:blc:robotics:ablauf [2018/12/14 15:56] (current) Ivo Blöchliger [Dienstag 4. Juli] |
||
---|---|---|---|
Line 75: | Line 75: | ||
* Download der Ivobot-Library: | * Download der Ivobot-Library: | ||
* Beispiel-Code studieren und verstehen. | * Beispiel-Code studieren und verstehen. | ||
- | * [[https:// | + | * [[https:// |
- | * [[pid|Theorie Line-Following und PID-Regler]] | + | |
* Programmierung Display und Buttons, Bestimmung der PID-Parameter | * Programmierung Display und Buttons, Bestimmung der PID-Parameter | ||
==== Mittwoch 5. Juli ==== | ==== Mittwoch 5. Juli ==== | ||
Line 99: | Line 98: | ||
robot.motors.resetCounters() | robot.motors.resetCounters() | ||
</ | </ | ||
+ | Ein Beispiel, welches bis zu einer TickDifferenz von 5 fährt, nachher die Motoren abstellt und den Counter zurücksetzt: | ||
+ | <code c++> | ||
+ | void loop() { | ||
+ | int tickDiff = robot.motors.getTicks(0) - robot.motors.getTicks(1); | ||
+ | if (robot.buttons.get() == 1) { | ||
+ | robot.motors.setPowers(799, | ||
+ | while (abs(tickDiff) < 5) { // so lange die Schlaufe ausführen, als dass die TickDifferenz < 5 ist. | ||
+ | tickDiff = robot.motors.getTicks(0) - robot.motors.getTicks(1); | ||
+ | robot.lcd.clear(); | ||
+ | robot.lcd.print(" | ||
+ | robot.lcd.print(tickDiff); | ||
+ | delay(50); //LCD ohne Flackern | ||
+ | } | ||
+ | robot.lcd.setCursor(0, | ||
+ | robot.lcd.println(" | ||
+ | robot.motors.setPowers(0, | ||
+ | robot.motors.resetCounters(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
=== Distanzmessung === | === Distanzmessung === | ||
Beim Fahren auf Distanz geht es darum, den US-Sensor auszulesen. Dieser kann (siehe ivobot) mit // | Beim Fahren auf Distanz geht es darum, den US-Sensor auszulesen. Dieser kann (siehe ivobot) mit // | ||
Folgende Bemerkungen: | Folgende Bemerkungen: | ||
- | * // | + | * // |
- | * Distanz Überprüfungen können im Code z.B. wie folgt überprüft werden: <code ++> float distance = us.measure() | + | * Distanz Überprüfungen können im Code z.B. wie folgt überprüft werden: <code ++> float distance = us.measure(); |
- | | + | |
} </ | } </ | ||
- | * Allenfalls könnte man sanftes Abbremsen andenken.... | + | |
==== Donnerstag 6. Juli ==== | ==== Donnerstag 6. Juli ==== | ||
- | * Festlegen | + | |
+ | | ||
+ | * Aufräumen | ||
+ | * Mittag | ||
* Programmieren / Testen etc. | * Programmieren / Testen etc. | ||
+ | === Menu Struktur === | ||
+ | <code txt untermenu.txt> | ||
+ | |||
+ | void meinTollesUntermenu() { | ||
+ | // Menu anzeigen, Resultat ist Ganzzahl (int), gespeichert in der Variablen ' | ||
+ | int choice = robot.menu.choice(" | ||
+ | if (choice==1) { // Wenn gleich 1 | ||
+ | | ||
+ | } else if (choice==2) { // Sonst wenn gleich 2 | ||
+ | meinCoolesProgrammKannsBesser(); | ||
+ | } else if (choice==3) | ||
+ | sontEinTestOderSo(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // Wird immer wieder aufgerufen | ||
+ | void loop() { | ||
+ | // Menu anzeigen, Resultat ist Ganzzahl (int), gespeichert in der Variablen ' | ||
+ | int choice = robot.menu.choice(" | ||
+ | if (choice==1) { // Wenn gleich 1 | ||
+ | | ||
+ | } else if (choice==2) { // Sonst wenn gleich 2 | ||
+ | meinCoolesProgramm(); | ||
+ | } else if (choice==3) | ||
+ | sontEinTestOderSo(); | ||
+ | } else if (choice==4) | ||
+ | undNochWas(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
==== Freitag ==== | ==== Freitag ==== | ||
- | | + | === Wettbewerb === |
+ | | ||
+ | * Wird eine Markierung mit allen Rädern überfahren, | ||
+ | * Einer Berührung mit Mauern und Hindernissen gibt 1 Minuspunkt. Entlangschleifen gibt 2 Minuspunkte. | ||
+ | * Manuelles Eingreifen beendet die Challenge. Bisher gemachte Punkte zählen aber. | ||
+ | * In die richtige Richtung wenden nach einer Challenge gibt 1 Punkt. | ||
+ | * Eine Challenge autonom nach einer anderen zu fahren gibt 1 Punkte mehr für die zweite Challenge. | ||
+ | * Die vierte Challenge ohne den vorgegebenen Line-Following Code zu fahren, gibt 2 Plus-Punkte. | ||
+ | |||
+ | Wertung | ||
+ | * Drei Versuche pro Challenge und Team. Der beste Lauf zählt. | ||