Funktionen zur Vorgabe von Fahrstrecken und Drehungen.
Mehr ...
#include "asuro.h"
#include "myasuro.h"
gehe zum Quellcode dieser Datei
|
void | GoTurn (int distance, int degree, int speed) |
| Faehrt eine bestimmte Strecke mit einer bestimmten Geschwindigkeit. (Autor: stochri)
ODER
Dreht um einen bestimmten Winkel mit einer bestimmten Geschwindigkeit. (Autor: stochri)
Benutzt die Odometrie Sensoren im Interrupt Betrieb.
Vor dem ersten Aufruf muss deshalb EncoderInit() aufgerufen werden.
|
|
Funktionen zur Vorgabe von Fahrstrecken und Drehungen.
- Siehe auch
- Defines zum setzen von Port's und Konfigurationen in asuro.h
TRUE, FALSE, LEFT, RIGHT
- Version
- V— - KEINE original Version von der ASURO CD vom DLR
-
V— - bis zum 07.01.2007 -
Bitte in Datei CHANGELOG nachsehen.
Das Grundgeruest dieser Funktionen wurde von stochri erstellt.
-
V001 - 13.01.2007 - m.a.r.v.i.n
+++ Alle Funktionen
Zerlegte Sourcen in einzelne Dateien fuer eine echte Library.
-
V002 - 27.01.2007 - Sternthaler
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)
-
V003 - 20.02.2007 - m.a.r.v.i.n
+++ GO()
+++ Turn()
Korrekturfakturen aus myasuro.h verwenden
-
V004 - 07.06.2007 - Sternthaler
+++ Go() Entfaellt
+++ Turn() Entfaellt
+++ GoTurn() NEU
Die Funktion GoTurn() ersetzt die Funktionen Go() und Turn() ersatzlos. Um allerdings bestehende Programme nicht umbauen zu muessen, gibt es Macros, die dann GoTurn() aufrufen in asuro.h
-
V005 - 27.06.2007 - Sternthaler
+++ GoTurn()
Im Beispiel zur Funktion die Variablendefinition in der for()-Schleife fuer i entfernt, da sie nicht immer uebersetzbar ist.
Definiert in Datei encoder.c.
void GoTurn |
( |
int |
distance, |
|
|
int |
degree, |
|
|
int |
speed |
|
) |
| |
Faehrt eine bestimmte Strecke mit einer bestimmten Geschwindigkeit. (Autor: stochri)
ODER
Dreht um einen bestimmten Winkel mit einer bestimmten Geschwindigkeit. (Autor: stochri)
Benutzt die Odometrie Sensoren im Interrupt Betrieb.
Vor dem ersten Aufruf muss deshalb EncoderInit() aufgerufen werden.
- Parameter
-
[in] | distance | Distanz in mm (- rueckwaerts, + = vorwaerts)
Bei 0 wird degree fuer einen Turn benutzt. |
[in] | degree | Winkel (- rechts, + links) |
[in] | speed | Geschwindigkeit (Wertebereich 0...255) |
- Rückgabe
- nichts
- Siehe auch
- MACRO Go() und MACRO Turn() koennen weiterhin aufgerufen werden um bestehenden Programmcode nicht umschreiben zu muessen.
-
In der globale Variable encoder, werden die Hell-/Dunkelwechsel der
Encoderscheiben im Interruptbetrieb gezaehlt.
- Hinweis:
- Die Berechnung der zu fahrenden Ticks beruht auf der Annahme, dass die
Anzahl der schwarzen Teilstuecke und die Raddurchmesser wie bei stochri sind.
(Sternthaler) Vermutung, dass der Hersteller unterschiedlich grosse Raeder
ausgeliefert hat, da die Berechnung in dieser Form bei Sternthaler nicht
funktioniert.
- Beispiel:
- (Nur zur Demonstration der Parameter/Returnwerte)
for (i = 0; i < 4; i++)
{
}
Definiert in Zeile 128 der Datei encoder.c.
{
unsigned long enc_count;
int tot_count = 0;
int diff = 0;
int l_speed = speed, r_speed = speed;
if (distance != 0)
{
enc_count = abs (distance) * 10000L;
if (distance < 0)
else
}
else
{
enc_count /= 360L;
if (degree < 0)
else
}
while (tot_count < enc_count)
{
if (diff > 0)
{
if ((l_speed > speed) || (r_speed > 244))
l_speed -= 10;
else
r_speed += 10;
}
if (diff < 0)
{
if ((r_speed > speed) || (l_speed > 244))
r_speed -= 10;
else
l_speed += 10;
}
}
}