一、源码
#include <IRremote.h> //装入红外遥控数据库
int D = A2; //设置红外信号引脚
//初始化电机引脚
int MotorRight1=12;
int MotorRight2=11;
int MotorLeft1=9;
int MotorLeft2=10;
IRrecv J(D); //设置红外接收器
decode_results results; //解码结果
void setup()
{
Serial.begin(9600);
J.enableIRIn(); //启动红外接收器
/***********初始化电机*************/
pinMode(MotorRight1, OUTPUT);
pinMode(MotorRight2, OUTPUT);
pinMode(MotorLeft1, OUTPUT);
pinMode(MotorLeft2, OUTPUT);
}
void back() //后退
{
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,HIGH);
digitalWrite(MotorLeft2,LOW);;
// delay(g * 10);
}
void advance() // 前进
{
digitalWrite(MotorRight2,HIGH);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,HIGH);
digitalWrite(MotorRight1,LOW);
// delay(a * 10);
}
void right() //右转
{
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,HIGH);
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
// delay(b * 10);
}
void left() //左转
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,HIGH);
digitalWrite(MotorLeft1,HIGH);
digitalWrite(MotorLeft2,LOW);
// delay(c * 10);
}
void stopp() //停止
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
// delay(f * 10);
}
void loop()
{
if(J.decode(&results)) //J.解码结果,如果读到J的解码结果
{
Serial.println(results.value,HEX); //HEX将读取(结果)值转换为16进制
if(results.value == 0xFF18E7)
{
advance();
while(results.value == 0xFFFFFF);
// {advance();}
}
else if(results.value == 0xFF4AB5)
{
back();
while(results.value == 0xFFFFFF);
// { back();}
}
else if (results.value == 0xFF38C7)
{
stopp();
while(results.value == 0xFFFFFF);
// {
// stopp();
// }
}
else if (results.value == 0xFF10EF)
{
left();
while(results.value == 0xFFFFFF);
// {
// left();
// }
}
else if (results.value == 0xFF5AA5)
{
right();
while(results.value == 0xFFFFFF);
// {
// right();
// }
}
// else stopp();
J.resume(); //接收下一个值
}
delay(100);
}
二、效果图
红外遥控小车_哔哩哔哩_bilibili
三、原理图就不画了(哈哈哈)
四、还有个乱码的BUG没处理