Hallo miteinander,
ich habe jetzt auch meinen "Assi" zum Laufen gebtacht und den ersten Test mit einem primitiven Linienprogramm gemacht.
Sehr wichtig erscheint mir der Abgleich der Phototransitoren an der Unterseite des Asuro. Wenn die bei einer z.B. weißen Fläche unterschiedliche Werte erzeugen, dann gibt es auch Probleme mit der Linienverfolgung...
Das folgende kleine Programm dient zum Abgleich der beiden Phototransitoren und macht nichts anderes als die Helligkeitswerte der beiden Transistoren im Terminalprogramm auszugeben.
Ich habe nur die rote LED in der Mitte ausrichten müssen und schon habe ich einigermaßen gleiche Heligkeitswerte erhalten.
Grüße, Hans.
Hier der Quelltext für den Phototransitoren-Abgleich:
Hier der Quelltext für die Linienverfolgung:Code:#include "asuro.h" // Prüfung der Phototransitoren /* ------------ Line Sensor Test ---------------- */ /* Left Sensor -> Left Break LED ON when Light on Left Phototransistor bright enough */ /* Right Sensor -> Right Break LED ON when Light on Right Phototransistor bright enough */ int main(void) { unsigned char tmp[2] = {OFF,OFF}; unsigned int data[2]; unsigned int z; Init(); SerWrite("\n\r --- Line Sensor Test ---",28); StatusLED(OFF); FrontLED(ON); do { /* for(z = 1; z < 100; z++); EDIT 1: unnützer Code { } */ LineData(data); if (data[0] > 400) tmp[0] = ON; else tmp[0] = OFF; if (data[1] > 400) tmp[1] = ON; else tmp[1] = OFF; BackLED(tmp[0],tmp[1]); SerWrite("\n\r Phototransistorwerte links/rechts: ",39); PrintInt(data[0]); SerWrite("/ ",2); PrintInt(data[1]); // SerWrite("\f",1); //Seitenvorschub EDIT 2: bringt Fehler bei der Ausgabe } while(1); return 0; } /* END Line Sensor Test ------------------------- */
Code:#include "asuro.h" // Linienverfolgung auf die einfachste Art int main(void) { unsigned int data[2]; //Speicher bereitstellen Init(); FrontLED(ON); // Linienbeleuchtung einschalten //MotorDir(RWD,RWD); // Beide Motoren auf rückwärts!!!! 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(150,100);} // ... dann links mehr Gas geben... else {MotorSpeed(100,150);} // ... sonst rechts mehr Gas geben! } return 0; }







Zitieren

Lesezeichen