IR Car Remote
IR Car Remote Code
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv myIrrecv(RECV_PIN);
decode_results results;
//Init Motors
const int PWM_M1 = 5;
const int IN1_M1 = 2;
const int IN2_M1 = 3;
const int PWM_M2 = 6;
const int IN1_M2 = 8;
const int IN2_M2 = 9;
int speed = 100;
void setup(){
Serial.begin(9600);
myIrrecv.enableIRIn();
pinMode(PWM_M1,OUTPUT);
pinMode(PWM_M2,OUTPUT);
pinMode(IN1_M1,OUTPUT);
pinMode(IN2_M1,OUTPUT);
pinMode(IN1_M2,OUTPUT);
pinMode(IN2_M2,OUTPUT);
}
void loop(){
if (myIrrecv.decode(&results)){
switch(results.value){
case 0xFD00FF: //power
break;
case 0xFD807F://vol+
forward();
break;
case 0xFD40BF://func/stop
break;
case 0xFD20DF://|<<
turnLeft();
break;
case 0xFDA05F://>||
stop();
break ;
case 0xFD609F://>>|
turnRight();
break ;
case 0xFD10EF://down arrow
speedDown();
break ;
case 0xFD906F://vol-
backward();
break ;
case 0xFD50AF://up arrow
speedUp();
break ;
}
myIrrecv.resume();
}
}
void forward(){
Serial.println("forward");
analogWrite(PWM_M1, speed);
analogWrite(PWM_M2, speed);
digitalWrite(IN1_M1, HIGH);
digitalWrite(IN2_M1, LOW);
digitalWrite(IN1_M2, HIGH);
digitalWrite(IN2_M2, LOW);
}
void backward(){
Serial.println("backward");
analogWrite(PWM_M1, speed);
analogWrite(PWM_M2, speed);
digitalWrite(IN1_M1, LOW);
digitalWrite(IN2_M1, HIGH);
digitalWrite(IN1_M2, LOW);
digitalWrite(IN2_M2, HIGH);
}
void turnLeft(){
Serial.println("turnLeft");
analogWrite(PWM_M1, 0);
analogWrite(PWM_M2, speed);
digitalWrite(IN1_M1, HIGH);
digitalWrite(IN2_M1, LOW);
digitalWrite(IN1_M2, HIGH);
digitalWrite(IN2_M2, LOW);
}
void turnRight(){
Serial.println("turnRight");
analogWrite(PWM_M1, speed);
analogWrite(PWM_M2, 0);
digitalWrite(IN1_M1, HIGH);
digitalWrite(IN2_M1, LOW);
digitalWrite(IN1_M2, HIGH);
digitalWrite(IN2_M2, LOW);
}
void stop(){
Serial.println("stop");
digitalWrite(IN1_M1, LOW);
digitalWrite(IN2_M1, LOW);
digitalWrite(IN1_M2, LOW);
digitalWrite(IN2_M2, LOW);
}
void speedUp(){
Serial.println("speedUp");
speed+=10;
if(speed>255) speed =255;
analogWrite(PWM_M1, speed);
analogWrite(PWM_M2, speed);
}
void speedDown(){
Serial.println("speedDown");
speed-=10;
if(speed<0) speed =0;
analogWrite(PWM_M1, speed);
analogWrite(PWM_M2, speed);
}
Comments
Post a Comment