Ich denke du solltest mal den Code posten, denn sonst kann dir Niemand helfen der dieses spezielle Heft nicht hat.
Und damit er gut lesbar ist, setz ihn bitte zwischenCode:und
Hi.
Aus dem Heft"SPASS MIT ASURO Teil2" habe ich das PRO__""Nur ein Stück geradeaus"abgetippt und compilliert. Hinter gedanke dabei ist , das Programmieren ansatzweise(learnig bei dooing" zu begreifen.
OK compillieren hat funktioniert, keine Fehler, geflasht, auch keine fehler-und siehe da der ASURO fährt ein STÜCK. jetzt meine Frage:
woher weis das Programm das es bei case172 anhlten soll?
Gruß Frank
Ich denke du solltest mal den Code posten, denn sonst kann dir Niemand helfen der dieses spezielle Heft nicht hat.
Und damit er gut lesbar ist, setz ihn bitte zwischenCode:und
So viele Treppen und so wenig Zeit!
Also hier erstmal der Code:
Code:#include "asuro.h" // Schwellwert Hell Dunkel #define TRIGGERLEVEL 540 #define HYSTERESIS 10 #define LOW 0 #define HIGH 1 int main (void){ unsigned int data[2]; signed int status [2]={0,0}; signed int difference=0; unsigned int distance=0; signed int speed; Init(); while(1){ switch(distance){ case 0:MotorDir(FWD,FWD);speed=255;break; case 150:speed=200; break; case 160:speed=150;break; case 172:MotorDir(BREAK,BREAK);break; } OdometrieData(data); if((status[0]==LOW)&&(data[0]>TRIGGERLEVEL+HYSTERESIS)){ status[0]=HIGH; difference++; distance++; } if((status[0]==HIGH)&&(data[0]<TRIGGERLEVEL-HYSTERESIS)){ status[0]=LOW; difference++; distance++; } if((status[1]==LOW)&&(data[1]>TRIGGERLEVEL+HYSTERESIS)){ status[1]=HIGH; difference--; } if((status[1]==HIGH)&&(data[1]<TRIGGERLEVEL-HYSTERESIS)){ status[1]=LOW; difference--; } if (difference<-speed)difference=-speed; if (difference>speed)difference=speed; StatusLED(status[0]+status[1]*2); if (difference>0)MotorSpeed(speed-difference,speed); else MotorSpeed(speed,speed+difference); } return 0; }
Hallo Frank
Wenn die Variable distance den Wert 172 hat, dann wird die Funktion MotorDir aufgerufen.
Dies Funktion ist in asuro.h definiert, ebenso der Übergabeparameter BREAK.
Sie steuert die Drehrichtung der Motoren. Über die Parameter werden die Port – Pins
zu den beiden H-Brücken gesetzt.
In diesem Fall werden die Motoren kurzgeschlossen. ( Bremsen )
MFG
August Hoffmann
Und die variabele Distance wird mit 1 inkrementiert (erhöht) bei jede gemessen (OdometrieData) schwarz/weiss ubergang (triggerlevel wert +/- hysteresis wert) auf den beiden geberscheiben.
..ob der erkannte Übergang von hell nach dunkel oder von dunkel nach hell war wird für jede Seite getrennt in status[0] und status[1] gespeichert...
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen