#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 |
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 | ) |
void IRLeft | ( | void | ) |
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 | ) |
int speedRight |