#include #include #include #include #define IR 4 IRrecv irrecv(IR); #define WHEEL_FRONT_LEFT_F A0 #define WHEEL_REAR_LEFT_R A1 #define WHEEL_REAR_RIGHT_F A2 #define WHEEL_FRONT_RIGHT_R A3 #define WHEEL_FRONT_LEFT_R 10 #define WHEEL_REAR_LEFT_F 9 #define WHEEL_FRONT_RIGHT_F 8 #define WHEEL_REAR_RIGHT_R 7 /* * 4060792887 ^ * 4060752087 v * 4060768407 < * 4060784727 > * 4060801047 enter * 4060776567 menu * 4060774527 aspect * 4060745967 vol+ * 4060794927 vol- * 4060803087 mute * 4060750047 source * 4060790847 video mode * 4060786767 keystone + * 4060778607 keystone - * 4060782687 mouse + * 4060766367 mouse - * 4060748007 auto adj * 4060743927 freeze * 4060754127 blank * 4060762287 zoom + * 4060770447 zoom - * 4060759227 info * 4060780647 vga * 4060742907 video * 4060775547 s-video */ void setup() { Serial.begin(115200); irrecv.enableIRIn(); pinMode(WHEEL_REAR_RIGHT_R, OUTPUT); pinMode(WHEEL_REAR_RIGHT_F, OUTPUT); pinMode(WHEEL_REAR_LEFT_R, OUTPUT); pinMode(WHEEL_REAR_LEFT_F, OUTPUT); pinMode(WHEEL_FRONT_RIGHT_R, OUTPUT); pinMode(WHEEL_FRONT_RIGHT_F, OUTPUT); pinMode(WHEEL_FRONT_LEFT_R, OUTPUT); pinMode(WHEEL_FRONT_LEFT_F, OUTPUT); } void stop(){ digitalWrite(WHEEL_REAR_RIGHT_R, HIGH); digitalWrite(WHEEL_REAR_RIGHT_F, HIGH); digitalWrite(WHEEL_REAR_LEFT_R, HIGH); digitalWrite(WHEEL_REAR_LEFT_F, HIGH); digitalWrite(WHEEL_FRONT_RIGHT_R, HIGH); digitalWrite(WHEEL_FRONT_RIGHT_F, HIGH); digitalWrite(WHEEL_FRONT_LEFT_R, HIGH); digitalWrite(WHEEL_FRONT_LEFT_F, HIGH); } void forward(){ digitalWrite(WHEEL_REAR_RIGHT_F, LOW); digitalWrite(WHEEL_REAR_LEFT_F, LOW); digitalWrite(WHEEL_FRONT_RIGHT_F, LOW); digitalWrite(WHEEL_FRONT_LEFT_F, LOW); } void backward(){ digitalWrite(WHEEL_REAR_RIGHT_R, LOW); digitalWrite(WHEEL_REAR_LEFT_R, LOW); digitalWrite(WHEEL_FRONT_RIGHT_R, LOW); digitalWrite(WHEEL_FRONT_LEFT_R, LOW); } void strafe_l(){ digitalWrite(WHEEL_REAR_RIGHT_R, LOW); digitalWrite(WHEEL_REAR_LEFT_F, LOW); digitalWrite(WHEEL_FRONT_RIGHT_F, LOW); digitalWrite(WHEEL_FRONT_LEFT_R, LOW); } void strafe_r(){ digitalWrite(WHEEL_REAR_RIGHT_F, LOW); digitalWrite(WHEEL_REAR_LEFT_R, LOW); digitalWrite(WHEEL_FRONT_RIGHT_R, LOW); digitalWrite(WHEEL_FRONT_LEFT_F, LOW); } void diag_l_f(){ digitalWrite(WHEEL_REAR_LEFT_F, LOW); digitalWrite(WHEEL_FRONT_RIGHT_F, LOW); } void diag_r_r(){ digitalWrite(WHEEL_REAR_LEFT_R, LOW); digitalWrite(WHEEL_FRONT_RIGHT_R, LOW); } void diag_r_f(){ digitalWrite(WHEEL_REAR_RIGHT_F, LOW); digitalWrite(WHEEL_FRONT_LEFT_F, LOW); } void diag_l_r(){ digitalWrite(WHEEL_REAR_RIGHT_R, LOW); digitalWrite(WHEEL_FRONT_LEFT_R, LOW); } void turn_l(){ digitalWrite(WHEEL_REAR_RIGHT_R, LOW); digitalWrite(WHEEL_REAR_LEFT_F, LOW); digitalWrite(WHEEL_FRONT_RIGHT_R, LOW); digitalWrite(WHEEL_FRONT_LEFT_F, LOW); } void turn_r(){ digitalWrite(WHEEL_REAR_RIGHT_F, LOW); digitalWrite(WHEEL_REAR_LEFT_R, LOW); digitalWrite(WHEEL_FRONT_RIGHT_F, LOW); digitalWrite(WHEEL_FRONT_LEFT_R, LOW); } unsigned long getIRremote(){ static unsigned long lastValue = 0; decode_results irResults; if(irrecv.decode(&irResults) == 0){ return 0; } if(!(irResults.decode_type == NEC && irResults.value == REPEAT)){ lastValue = irResults.value; } irrecv.resume(); return lastValue; } void loop() { unsigned long remote = getIRremote(); static unsigned long modus; if(remote){ Serial.println(remote); modus = remote; } if(modus == 4060792887){ forward(); }else if(modus == 4060801047){ stop(); }else if(modus == 4060752087){ backward(); }else if(modus == 4060768407){ strafe_l(); }else if(modus == 4060784727){ strafe_r(); }else if(modus == 4060750047){ turn_l(); }else if(modus == 4060790847){ turn_r(); }else if(modus == 4060786767){ diag_l_f(); }else if(modus == 4060778607){ diag_r_r(); }else if(modus == 4060782687){ diag_r_f(); }else if(modus == 4060766367){ diag_l_r(); } /* stop(); forward(); delay(1000); stop(); backward(); delay(1000); stop(); strafe_l(); delay(1000); stop(); strafe_r(); delay(1000); stop(); diag_l_f(); delay(1000); stop(); diag_l_r(); delay(1000); stop(); diag_r_f(); delay(1000); stop(); diag_r_r(); delay(1000); stop(); turn_l(); delay(1000); stop(); turn_r(); delay(1000); stop(); */ }