Code:
///重复码的部分没处理好,我按着不放,它就动一下就不动了
#include <IRremote.h>
#define E1 6//左电机引脚
#define E2 5
#define M1 8//右电机引脚
#define M2 7
//红外遥控逻辑代码 自己通过串口监视器可以找出
#define UP 0xC26BF044 //我的遥控器UP键
#define DOWN 0xC4FFB646 //我的遥控器DOWN键
#define LEFT 0x758C9D82 //我的遥控器LEFT键
#define RIGHT 0x53801EE8 //我的遥控器RIGHT键
#define STOP 0x8AF13528 //我的遥控器STOP键
int RECV_PIN = 11; //红外接收信号引脚
IRrecv irrecv(RECV_PIN);//初始化
decode_results results;//定义结构体类型
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 开始接收
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
switch(results.value)
{
case UP://2键前进
advance(255);
break;
case LEFT://4键左转
left_handed(255);
break;
case DOWN://8键后退
retreat(255);
break;
case RIGHT://6键右转
right_handed(255);
break;
case STOP://5键前进
stop_m();
break;
default:
delay(100);
}
irrecv.resume(); // Receive the next value
}
}
void foreward_mechine_a()//左电机正转
{
analogWrite(E1,255);
digitalWrite(M1,LOW);
}
void inversion_mechine_a()//左电机反转
{
analogWrite(E1,255);
digitalWrite(M1,HIGH);
}
void stop_a(void)//左电机停止
{
digitalWrite(E1,LOW);
}
void stop_b(void)//右电机停止
{
digitalWrite(E2,LOW);
}
void foreward_mechine_b()//右电机正转
{
analogWrite(E2,255);
digitalWrite(M2,LOW);
}
void inversion_mechine_b()//右电机反转
{
analogWrite(E2,255);
digitalWrite(M2,HIGH);
}
void advance(int time)//小车前进
{
foreward_mechine_a();
foreward_mechine_b();
delay(time);
}
void retreat(int time)//小车后退
{
inversion_mechine_a();
inversion_mechine_b();
delay(time);
}
void left_handed(int time)//小车左转
{
inversion_mechine_a();
foreward_mechine_b();
delay(time);
}
void right_handed(int time)//小车右转
{
foreward_mechine_a();
inversion_mechine_b();
delay(time);
}
void stop_m(void)//小车停止
{
stop_a();
stop_b();
}
#include <IRremote.h>
#define E1 6//左电机引脚
#define E2 5
#define M1 8//右电机引脚
#define M2 7
//红外遥控逻辑代码 自己通过串口监视器可以找出
#define UP 0xC26BF044 //我的遥控器UP键
#define DOWN 0xC4FFB646 //我的遥控器DOWN键
#define LEFT 0x758C9D82 //我的遥控器LEFT键
#define RIGHT 0x53801EE8 //我的遥控器RIGHT键
#define STOP 0x8AF13528 //我的遥控器STOP键
int RECV_PIN = 11; //红外接收信号引脚
IRrecv irrecv(RECV_PIN);//初始化
decode_results results;//定义结构体类型
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 开始接收
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
switch(results.value)
{
case UP://2键前进
advance(255);
break;
case LEFT://4键左转
left_handed(255);
break;
case DOWN://8键后退
retreat(255);
break;
case RIGHT://6键右转
right_handed(255);
break;
case STOP://5键前进
stop_m();
break;
default:
delay(100);
}
irrecv.resume(); // Receive the next value
}
}
void foreward_mechine_a()//左电机正转
{
analogWrite(E1,255);
digitalWrite(M1,LOW);
}
void inversion_mechine_a()//左电机反转
{
analogWrite(E1,255);
digitalWrite(M1,HIGH);
}
void stop_a(void)//左电机停止
{
digitalWrite(E1,LOW);
}
void stop_b(void)//右电机停止
{
digitalWrite(E2,LOW);
}
void foreward_mechine_b()//右电机正转
{
analogWrite(E2,255);
digitalWrite(M2,LOW);
}
void inversion_mechine_b()//右电机反转
{
analogWrite(E2,255);
digitalWrite(M2,HIGH);
}
void advance(int time)//小车前进
{
foreward_mechine_a();
foreward_mechine_b();
delay(time);
}
void retreat(int time)//小车后退
{
inversion_mechine_a();
inversion_mechine_b();
delay(time);
}
void left_handed(int time)//小车左转
{
inversion_mechine_a();
foreward_mechine_b();
delay(time);
}
void right_handed(int time)//小车右转
{
foreward_mechine_a();
inversion_mechine_b();
delay(time);
}
void stop_m(void)//小车停止
{
stop_a();
stop_b();
}
