IRDemo.h-Dateireferenz

gehe zum Quellcode dieser Datei

Funktionen

void IRDemo (void)


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 }


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