ich verwende die asurolib v280rc1 und im ordner examples kommt der ordner rc5 test. darin befindet sich dann die test.c datei.
Code:#include "asuro.h" #include "rc5.h" #include <stdlib.h> #define DIARWD 0x1008 #define DIAFWD 0x1002 #define DIALEFT 0x1004 #define DIARIGHT 0x1006 #define DIASTOP 0x1029 #define TUNERRWD 0x1021 #define TUNERFWD 0x1020 #define TUNERLEFT 0x1011 #define TUNERRIGHT 0x1010 #define TUNERSTOP 0x1025 #define OFFSET 0x3F #define STEP 5 int speedLeft,speedRight; void IRFwd(void) { speedRight += STEP; speedLeft += STEP; if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1; if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1; FrontLED(ON); BackLED(OFF,OFF); } void IRRwd(void) { speedRight -= STEP; speedLeft -= STEP; if (speedRight > 0 && speedRight <= OFFSET) speedRight = -1; if (speedLeft > 0 && speedLeft <= OFFSET) speedLeft = -1; FrontLED(OFF); BackLED(ON,ON); } void IRLeft (void) { speedLeft -= STEP; if (speedLeft > 0 && speedLeft <= OFFSET) speedLeft = -1; speedRight += STEP; if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1; FrontLED(OFF); BackLED(ON,OFF); } void IRRight (void) { speedLeft += STEP; if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1; speedRight -= STEP; if (speedRight > 0 && speedRight <= OFFSET) speedRight = -1; FrontLED(OFF); BackLED(OFF,ON); } void IRStop(void) { speedRight = speedLeft = 0; FrontLED(OFF); BackLED(OFF,OFF); } int main(void) { static unsigned int cmd; unsigned char leftDir = FWD, rightDir = FWD; char text[7]; Init(); InitRC5(); SerPrint("RC5 Test\r\n"); while (1) { cmd = ReadRC5(); if (cmd) { cmd &= RC5_MASK; itoa(cmd, text, 16); SerPrint(text); SerPrint("\r\n"); switch (cmd) { case TUNERRWD : case DIARWD : SerPrint("rwd\r\n"); IRRwd(); break; case TUNERFWD : case DIAFWD : SerPrint("fwd\r\n"); IRFwd(); break; case TUNERLEFT : case DIALEFT: SerPrint("lft\r\n"); IRLeft(); break; case TUNERRIGHT : case DIARIGHT: SerPrint("rgt\r\n"); IRRight(); break; case TUNERSTOP : case DIASTOP : SerPrint("stp\r\n"); IRStop(); break; } } if (speedLeft > 0 && speedLeft < OFFSET) speedLeft += OFFSET; if (speedLeft < 0 && speedLeft > -OFFSET) speedLeft -= OFFSET; if (speedRight > 0 && speedRight < OFFSET) speedRight += OFFSET; if (speedRight < 0 && speedRight > -OFFSET) speedRight -= OFFSET; leftDir = rightDir = FWD; if (speedLeft < 0) leftDir = RWD; if (speedRight < 0) rightDir = RWD; if (speedLeft > 255) speedLeft = 255; if (speedLeft < -255) speedLeft = -255; if (speedRight > 255) speedRight = 255; if (speedRight < -255) speedRight = -255; MotorDir(leftDir,rightDir); MotorSpeed(abs(speedLeft),abs(speedRight)); Msleep(100); } return 0; }







Zitieren

Lesezeichen