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.
Gast
#3280009
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");
Gast
#3281286
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.