User manual
ASURO - 70
-
Jaja, diesmal wieder im ganzen Programm:
#include “asuro.h” // Linienverfolgung auf die einfachste Art
int main(void) {
unsigned int data[2]; //Speicher bereitstellen
Init();
FrontLED(ON); // Linienbeleuchtung einschalten
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
while(1){ // Endlosschleife, ASURO soll beliebig
// lang einer Linie nachfahren
LineData(data); // aktuelle Helligkeitswerte der
// Fototransistoren einlesen
if (data [0] > data [1] ) // links heller als rechts...
{MotorSpeed(200,150);} // ... dann links mehr Gas geben...
else
{MotorSpeed(150,200);} // ... sonst rechts mehr Gas geben!
}
return 0;
}
9.2.11. void OdometrieData(unsigned int *data)
Die Re exlichtschranke wird ausgewertet. Die Leuchtdioden (D13, D14) werden aktiviert und die
A/D-Wandler-Werte der Fototransistoren (T11, T12) zurückgegeben. Wie in der Funktion LineData
() muss ein Speicherbereich mit zwei Integerwerten übergeben werden, der dann von der
Funktion gefüllt wird. Der erste Integerwert enthält den Wandler-Wert des linken (T11), der zweite
Integerwert den des rechten Fototransistors (T12). Maximale Helligkeit entspricht einem Wert von
’0’ dunkel entspricht einem Wert von ’1023’
5
. Die beiden Extremwerte werden normalerweise nicht
erreicht, der Messwert bewegt sich irgendwo dazwischen.
Beispiel:
Auslesen der Re exlichtschranke
unsigned int data[2]; //Speicher bereitstellen
.
.
OdometrieData(data);
data[0] enthält den Wert vom linken Fototransistor (T11)
data[1] enthält den Wert vom rechten Fototransistor (T12)
Um Missverständnissen vorzubeugen: OdomertieData() liest nicht die Drehzahl direkt aus,
sondern nur die aktuelle Helligkeit der Geberscheibe an der Lichtschranke. Eine Auswertung der
Helligkeitswerte, ein Zählen der Hell-Dunkel-Übergänge und die Bestimmung der Drehzahl des
Rades daraus bleibt dem Programmierer überlassen!
5
Dass die Wertigkeiten genau andersrum sind, wie bei den Fototransistoren der Linienverfolgung ist schaltungstechnisch
bedingt und ein Zugeständnis an die Einfachheit der Schaltung.
9. C für ASURO