IRDemo.c-Dateireferenz

#include "asuro.h"
#include <stdlib.h>

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define DIARWD   0xFE01
#define DIAFWD   0xFF00
#define DIALEFT   0xFB04
#define DIARIGHT   0xFA05
#define DIASTOP   0xF30C
#define TUNERRWD   0xF00F
#define TUNERFWD   0xEE11
#define TUNERLEFT   0xE718
#define TUNERRIGHT   0xE51A
#define TUNERSTOP   0xE619
#define OFFSET   0x3F
#define STEP   5

Funktionen

void IRFwd (void)
void IRRwd (void)
void IRLeft (void)
void IRRight (void)
void IRStop (void)
void IRDemo (void)

Variablen

int speedLeft
int speedRight


Makro-Dokumentation

#define DIAFWD   0xFF00

Definiert in Zeile 26 der Datei IRDemo.c.

#define DIALEFT   0xFB04

Definiert in Zeile 27 der Datei IRDemo.c.

#define DIARIGHT   0xFA05

Definiert in Zeile 28 der Datei IRDemo.c.

#define DIARWD   0xFE01

Definiert in Zeile 25 der Datei IRDemo.c.

#define DIASTOP   0xF30C

Definiert in Zeile 29 der Datei IRDemo.c.

#define OFFSET   0x3F

Definiert in Zeile 37 der Datei IRDemo.c.

#define STEP   5

Definiert in Zeile 38 der Datei IRDemo.c.

#define TUNERFWD   0xEE11

Definiert in Zeile 32 der Datei IRDemo.c.

#define TUNERLEFT   0xE718

Definiert in Zeile 33 der Datei IRDemo.c.

#define TUNERRIGHT   0xE51A

Definiert in Zeile 34 der Datei IRDemo.c.

#define TUNERRWD   0xF00F

Definiert in Zeile 31 der Datei IRDemo.c.

#define TUNERSTOP   0xE619

Definiert in Zeile 35 der Datei IRDemo.c.


Dokumentation der Funktionen

void IRDemo ( void   ) 

Definiert in Zeile 90 der Datei IRDemo.c.

00091 {
00092 
00093   unsigned char oldToggle,toggle,i;
00094   unsigned char data[33],start;
00095   static unsigned int cmd;
00096   unsigned char leftDir = FWD, rightDir = FWD;
00097 
00098   Init();
00099   for (;;)
00100   {
00101     oldToggle = 1;
00102     start = FALSE;
00103     i = 0;
00104     while (PIND & (1 << PD0)); // wait for Sync
00105     TCNT0 = 0;
00106     TCCR0 = (1 << CS02) | (1 << CS00); // Start Timer
00107     do
00108     {
00109       toggle = PIND & (1 << PD0);
00110       while (PIND & (1 << PD0));
00111     }
00112     while (toggle != oldToggle);
00113     data[0] = TCNT0;
00114     if (TCNT0 > 0x60 && TCNT0 < 0x72)
00115     {
00116       start = TRUE;
00117       StatusLED(YELLOW);
00118     }
00119     oldToggle = 0;
00120     TCNT0 = 0;
00121 
00122     if (start == TRUE)
00123     {
00124       do
00125       {
00126         toggle = PIND & (1 << PD0);
00127         if (toggle != oldToggle)
00128         {
00129           if (toggle < oldToggle)
00130           { //HIGH to LOW
00131             if ((TCNT0 > 0x10 && TCNT0 < 0x13) || (TCNT0 > 0x06 && TCNT0 < 0x10))
00132               data[i++] = TCNT0;
00133             TCNT0 = 0;
00134           }
00135           oldToggle = toggle;
00136         }
00137       }
00138       while (i < 32 && TCNT0 < 0x60);
00139 
00140       if (TCNT0 < 0x62)
00141       {
00142         cmd = 0;
00143         for (i = 16; i < 32; i++)
00144           if (data[i] > 0x10) cmd |= 1 << (i - 16);
00145         StatusLED(GREEN);
00146       }
00147     }
00148 
00149     switch (cmd)
00150     {
00151     case TUNERRWD :
00152     case DIARWD :
00153       IRRwd();
00154       break;
00155     case TUNERFWD :
00156     case DIAFWD :
00157       IRFwd();
00158       break;
00159     case TUNERLEFT :
00160     case DIALEFT:
00161       IRLeft();
00162       break;
00163     case TUNERRIGHT :
00164     case DIARIGHT:
00165       IRRight();
00166       break;
00167     case TUNERSTOP :
00168     case DIASTOP :
00169       IRStop();
00170       break;
00171     }
00172     if (speedLeft > 0 && speedLeft <  OFFSET) speedLeft += OFFSET;
00173     if (speedLeft < 0 && speedLeft > -OFFSET) speedLeft -= OFFSET;
00174     if (speedRight > 0 && speedRight <  OFFSET) speedRight += OFFSET;
00175     if (speedRight < 0 && speedRight > -OFFSET) speedRight -= OFFSET;
00176 
00177     leftDir = rightDir = FWD;
00178     if (speedLeft < 0)  leftDir = RWD;
00179     if (speedRight < 0) rightDir = RWD;
00180 
00181     if (speedLeft >   255) speedLeft  =  255;
00182     if (speedLeft <  -255) speedLeft  = -255;
00183     if (speedRight >  255) speedRight =  255;
00184     if (speedRight < -255) speedRight = -255;
00185 
00186     MotorDir(leftDir,rightDir);
00187     MotorSpeed(abs(speedLeft),abs(speedRight));
00188   }
00189 }

void IRFwd ( void   ) 

Definiert in Zeile 42 der Datei IRDemo.c.

00043 {
00044   speedRight += STEP;
00045   speedLeft  += STEP;
00046   if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1;
00047   if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1;
00048   FrontLED(ON);
00049   BackLED(OFF,OFF);
00050 }

void IRLeft ( void   ) 

Definiert in Zeile 62 der Datei IRDemo.c.

00063 {
00064   speedLeft  -= STEP;
00065   if (speedLeft > 0 && speedLeft <= OFFSET) speedLeft = -1;
00066   speedRight += STEP;
00067   if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1;
00068   FrontLED(OFF);
00069   BackLED(ON,OFF);
00070 }

void IRRight ( void   ) 

Definiert in Zeile 72 der Datei IRDemo.c.

00073 {
00074   speedLeft  += STEP;
00075   if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1;
00076   speedRight -= STEP;
00077   if (speedRight > 0 && speedRight <= OFFSET) speedRight = -1;
00078   FrontLED(OFF);
00079   BackLED(OFF,ON);
00080 }

void IRRwd ( void   ) 

Definiert in Zeile 52 der Datei IRDemo.c.

00053 {
00054   speedRight -= STEP;
00055   speedLeft  -= STEP;
00056   if (speedRight > 0 && speedRight <= OFFSET)  speedRight = -1;
00057   if (speedLeft > 0 && speedLeft <= OFFSET)  speedLeft = -1;
00058   FrontLED(OFF);
00059   BackLED(ON,ON);
00060 }

void IRStop ( void   ) 

Definiert in Zeile 83 der Datei IRDemo.c.

00084 {
00085   speedRight = speedLeft = 0;
00086   FrontLED(OFF);
00087   BackLED(OFF,OFF);
00088 }


Variablen-Dokumentation

int speedLeft

Definiert in Zeile 40 der Datei IRDemo.c.

int speedRight

Definiert in Zeile 40 der Datei IRDemo.c.


Erzeugt am Wed Feb 14 16:10:02 2007 für ASURO Library von  doxygen 1.5.1-p1