User manual

RP6 ROBOT SYSTEM - 4. Programmierung des RP6
Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "RP6RobotBaseLib.h"
int main(void)
{
initRobotBase(); // Mikrocontroller initialisieren
powerON(); // Encoder und Motorstromsensoren anschalten!
moveAtSpeed(60,60); // Geschwindigkeit einstellen
startStopwatch1(); // Stopwatch1 starten
while(true)
{
if(getStopwatch1() > 4000) // Sind 4000ms (= 4s) vergangen?
{
// Bewegungsrichtung ändern:
if(getDirection() == FWD) // Fahren wir vorwärts...
changeDirection(BWD); // dann Rückwärts einstellen!
else if(getDirection() == BWD) //... oder Rückwärts?
changeDirection(FWD); // dann Vorwärts einstellen!
setStopwatch1(0); // Stopwatch1 auf 0 zurücksetzen
}
task_motionControl(); // Automatische Antriebsregelung
task_ADC(); // Wird wegen den Motorstromsensoren aufgerufen!
}
return 0;
}
In diesem Beispiel fährt der RP6 zunächst geradeaus das ist die immer nach einem
Reset eingestellte Bewegungsrichtung. Wir verwenden eine der Stopwatches um 4 Se-
kunden zu warten und dann die Bewegungsrichtung umzuschalten. Es wird in Zeile 16
und 18 abgefragt, in welcher Richtung wir uns derzeitig bewegen und dann die jeweils
andere Richtung eingestellt. Das wiederholt sich alle 4 Sekunden und so fährt der Ro-
boter die ganze Zeit vor und zurück.
Auch hier reagiert er natürlich noch nicht auf Hindernisse!
Mit den bisher besprochenen Funktionen ist es nicht so einfach, bestimmte Distanzen
zu fahren – dafür gibt es zwei spezielle Funktionen.
void move(uint8_t desired_speed, uint8_t dir, uint16_t distance,
uint8_t blocking)
Mit der move Funktion, kann man gerade Strecken mit vorgegebener Distanz abfah-
ren. Man muss Sollgeschwindigkeit, Richtung (FWD oder BWD) und die Distanz in En-
coder Zählschritten angeben.
Mit dem Makro:
DIST_MM(DISTANCE)
kann man von einer Distanz in Millimetern auf Encoder Zählschritte umrechnen. Dazu
sollte man natürlich die Encoder Auflösung kalibriert haben (s. Anhang). Im Beispiel-
programm weiter unten sieht man, wie man das anwenden kann.
- 102 -