RC5Test/test.c

gehe zur Dokumentation dieser Datei
00001 /*******************************************************************************
00002 *
00003 * File Name:   IRDemo.c
00004 * Project  :   Demo
00005 *
00006 * Description: This file contains IRDemo features
00007 *
00008 * Ver.     Date         Author           Comments
00009 * -------  ----------   --------------   ------------------------------
00010 * 1.00     14.08.2003   Jan Grewe                build
00011 * 2.00     22.10.2003   Jan Grewe        angepasst auf asuro.c Ver.2.10
00012 *
00013 * Copyright (c) 2003 DLR Robotics & Mechatronics
00014 *****************************************************************************/
00027 /***************************************************************************
00028  *                                                                         *
00029  *   This program is free software; you can redistribute it and/or modify  *
00030  *   it under the terms of the GNU General Public License as published by  *
00031  *   the Free Software Foundation; either version 2 of the License, or     *
00032  *   any later version.                                                    *
00033  ***************************************************************************/
00034 #define RC5_AVAILABLE     /* muss vor den Header Files stehen,
00035 damit die RC5 Routinen eingebunden werden */
00036 
00037 #include "asuro.h"
00038 #include "rc5.h"
00039 #include <stdlib.h>
00040 
00041 #define DIARWD   0x1008
00042 #define DIAFWD   0x1002
00043 #define DIALEFT  0x1004
00044 #define DIARIGHT 0x1006
00045 #define DIASTOP  0x1029
00046 
00047 #define TUNERRWD   0x1021
00048 #define TUNERFWD   0x1020
00049 #define TUNERLEFT  0x1011
00050 #define TUNERRIGHT 0x1010
00051 #define TUNERSTOP  0x1025
00052 
00053 #define OFFSET  0x3F
00054 #define STEP    5
00055 
00056 int speedLeft,speedRight;
00057 
00058 void IRFwd(void)
00059 {
00060   speedRight += STEP;
00061   speedLeft  += STEP;
00062   if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1;
00063   if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1;
00064   FrontLED(ON);
00065   BackLED(OFF,OFF);
00066 }
00067 
00068 void IRRwd(void)
00069 {
00070   speedRight -= STEP;
00071   speedLeft  -= STEP;
00072   if (speedRight > 0 && speedRight <= OFFSET)  speedRight = -1;
00073   if (speedLeft > 0 && speedLeft <= OFFSET)  speedLeft = -1;
00074   FrontLED(OFF);
00075   BackLED(ON,ON);
00076 }
00077 
00078 void IRLeft (void)
00079 {
00080   speedLeft  -= STEP;
00081   if (speedLeft > 0 && speedLeft <= OFFSET) speedLeft = -1;
00082   speedRight += STEP;
00083   if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1;
00084   FrontLED(OFF);
00085   BackLED(ON,OFF);
00086 }
00087 
00088 void IRRight (void)
00089 {
00090   speedLeft  += STEP;
00091   if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1;
00092   speedRight -= STEP;
00093   if (speedRight > 0 && speedRight <= OFFSET) speedRight = -1;
00094   FrontLED(OFF);
00095   BackLED(OFF,ON);
00096 }
00097 
00098 
00099 void IRStop(void)
00100 {
00101   speedRight = speedLeft = 0;
00102   FrontLED(OFF);
00103   BackLED(OFF,OFF);
00104 }
00105 
00106 int main(void)
00107 {
00108 
00109   static unsigned int cmd;
00110   unsigned char leftDir = FWD, rightDir = FWD;
00111   char text[7];
00112 
00113   Init();
00114   InitRC5();
00115 
00116   SerPrint("RC5 Test\r\n");
00117   while (1)
00118   {
00119     cmd = ReadRC5();
00120     if (cmd)
00121     {
00122       cmd &= RC5_MASK;
00123       itoa(cmd, text, 16);
00124       SerPrint(text);
00125       SerPrint("\r\n");
00126 
00127       switch (cmd)
00128       {
00129       case TUNERRWD :
00130       case DIARWD :
00131         SerPrint("rwd\r\n");
00132         IRRwd();
00133         break;
00134       case TUNERFWD :
00135       case DIAFWD :
00136         SerPrint("fwd\r\n");
00137         IRFwd();
00138         break;
00139       case TUNERLEFT :
00140       case DIALEFT:
00141         SerPrint("lft\r\n");
00142         IRLeft();
00143         break;
00144       case TUNERRIGHT :
00145       case DIARIGHT:
00146         SerPrint("rgt\r\n");
00147         IRRight();
00148         break;
00149       case TUNERSTOP :
00150       case DIASTOP :
00151         SerPrint("stp\r\n");
00152         IRStop();
00153         break;
00154       }
00155     }
00156     if (speedLeft > 0 && speedLeft <  OFFSET) speedLeft += OFFSET;
00157     if (speedLeft < 0 && speedLeft > -OFFSET) speedLeft -= OFFSET;
00158     if (speedRight > 0 && speedRight <  OFFSET) speedRight += OFFSET;
00159     if (speedRight < 0 && speedRight > -OFFSET) speedRight -= OFFSET;
00160 
00161     leftDir = rightDir = FWD;
00162     if (speedLeft < 0)  leftDir = RWD;
00163     if (speedRight < 0) rightDir = RWD;
00164 
00165     if (speedLeft >   255) speedLeft  =  255;
00166     if (speedLeft <  -255) speedLeft  = -255;
00167     if (speedRight >  255) speedRight =  255;
00168     if (speedRight < -255) speedRight = -255;
00169 
00170     MotorDir(leftDir,rightDir);
00171     MotorSpeed(abs(speedLeft),abs(speedRight));
00172     Msleep(100);
00173   }
00174   return 0;
00175 }
00176 
00177 
00178 

Erzeugt am Mon Apr 9 13:28:39 2007 für ASURO Library von  doxygen 1.5.1-p1