Hallo, könnte mir wohl mal einer den nachfolgenden Befehl Zeile für Zeile beschreiben? #include <asuro.h> #include "rc5.h" #include <stdlib.h> #define LINKS 0x100b #define RECHTS 0x100a #define STOPP 0x102b #define VORWAERTS 0x102a #define RUECKWAERTS 0x102e #define MAXSPEED 180 int main(void) { static unsigned int cmd; //Lesepuffer für IR-Empfänger char text[7]; unsigned char taste; Init(); InitRC5(); SerPrint("RC5 Test\r\n"); FrontLED(OFF); BackLED(OFF, OFF); MotorDir(FWD, FWD); MotorSpeed(0, 0); Msleep(100); while (1) { taste=PollSwitch(); if (taste> 0) { MotorSpeed(0,0); FrontLED(OFF); } cmd = ReadRC5(); if (cmd) { cmd &= RC5_MASK; itoa(cmd, text, 16); SerPrint(text); SerPrint("\r\n"); switch (cmd) { case LINKS : SerPrint("LINKS\r\n"); BackLED(ON, OFF); FrontLED(OFF); MotorDir(FWD, FWD); MotorSpeed(0, 200); break; case RECHTS : SerPrint("RECHTS\r\n"); BackLED(OFF, ON); FrontLED(OFF); MotorDir(FWD, FWD); MotorSpeed(MAXSPEED, 0); break; case VORWAERTS : SerPrint("VORWAERTS\r\n"); BackLED(OFF, OFF); FrontLED(ON); MotorDir(FWD, FWD); MotorSpeed(150, 165); break; case RUECKWAERTS : SerPrint("RUECKWAERTS\r\n"); FrontLED(OFF); BackLED(ON, ON); MotorDir(RWD, RWD); MotorSpeed(150, 160); break; case STOPP : SerPrint("STOPP\r\n"); BackLED(OFF, OFF); FrontLED(OFF); MotorSpeed(0, 0); MotorDir(FWD, FWD); break; } } Msleep(100); } return 0; }
Fabian Lange schrieb: > Hallo, > > könnte mir wohl mal einer den nachfolgenden Befehl Zeile für Zeile > beschreiben? Nö. Mach man schön selbst. Lies ein C-Buch/Tutorial und die Asuro Doku. Oder frag explizit was du nicht verstehst. Der Code ist praktisch so selbsterklärend wie Pseudocode.
Schau dort: http://www.asurowiki.de/pmwiki/pub/html/ Und dort: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Hallo, erstmal danke schön für die Antworten. Super Seiten. Hab schon viel verstanden. Bis auf.... cmd = ReadRC5(); if (cmd) { cmd &= RC5_MASK; itoa(cmd, text, 16); SerPrint(text); SerPrint("\r\n");
RC5_MASK ist irgend ein Makro mit einer Bit-Maske. Dieses Makro (#define RC5_MASK) muss in einer der Header-Dateien stehen. Dann wird vielleicht deutlicher was da passiert. Wenn cmd > 0 ist wird cmd mit der Maske "ver-und-et". Daraus resultierenden dann je nach Wert von cmd verschiedene Werte, die wiederum für unterschiedliche Befehle stehen. itoa macht aus Integer-Werten ASCII-Zeichen. Naja und SerPrint gibt das ganze dann vermutlich auf die serielle Schnittstelle. Gruß Christian
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.