基于Arduino的红外遥控智能小车实现方法

一、简介

使用红外遥控器实现智能小车前进、后退、左转、右转、停止运动五种动作。

二、控制方法

使用红外遥控器遥控智能小车运行之前,需要使用红外线接收电路来读取红外线遥控器的按键代码,将获取的按键代码定义为控制智能小车前进、后退、左转、右转、停止运动的功能按键,根据该功能按键来控制小车的运行。

遥控器按键重定义后的控制策略如下表所示:

原来按键 控制策略 按键代码
2 前进 FF18E7
8 后退 FF4AB5
4 左转 FF10EF
5 停止 FF38C7
6 右转 FF5AA5

三、红外收发硬件

在这里插入图片描述

上图为红外收发的硬件组成:

  • 信号发送:使用红外线遥控器。
  • 信号接收:使用鼻梁铁壳款CHQ1838。
    在这里插入图片描述
上图为红外接收的各引脚含义,其中VCC为5V,OUT连接到Arduino UNO核心控制板的输入端口。

四、源代码

#include<IRremote.h>
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
long FORWARD=0xFF18E7;//前进代码
long BACK=0xFF4AB5;//后退代码
long RIGHT=0xFF5AA5;//右转代码
long LEFT=0xFF10EF;//左转代码
long PAUSE=0xFF38C7;//停止代码

void setup() {
    
    
  // put your setup code here, to run once:
  Serial.begin(9600);
  irrecv.enableIRIn();
  irrecv.blink13(true);
  pinMode(RECV_PIN, INPUT);
}

void loop() {
    
    
  // put your main code here, to run repeatedly:
   //Serial.println("test");
  if(irrecv.decode(&results))
  {
    
    
    irrecv.resume();//准备接收下一个信号
    long resultValue = results.value;
    //Serial.print(results.decode_type);
    if(resultValue ==  FORWARD)
    {
    
    
      Serial.print("forward: ");
      Serial.println(results.value,HEX);
    }
    else if(resultValue == BACK)
    {
    
    
      Serial.print("back: ");
      Serial.println(results.value,HEX);
    } 
    else if(resultValue == RIGHT)
    {
    
    
      Serial.print("right: ");
      Serial.println(results.value,HEX);
    } 
    else if(resultValue == LEFT)
    {
    
    
      Serial.print("left: ");
      Serial.println(results.value,HEX);
    } 
    else if(resultValue == PAUSE)
    {
    
    
      Serial.print("pause: ");
      Serial.println(results.value,HEX);
    }
  }
}

五、运行效果

在这里插入图片描述

分别按下前进、左转、右转、后退、暂停五个按键,将分别显示相应的运行控制代码。后续将在五种不同的方向控制下添加相应的小车运行代码。