arduinoUNO L892N红外遥控小车,实现按键前进后退左转右转
时间: 2024-01-06 14:04:04 浏览: 48
为了实现您想要的功能,您需要先准备好以下材料:
- Arduino UNO 开发板
- L298N 电机驱动模块
- 2个直流电机
- HC-SR04 超声波传感器
- 红外遥控器模块
- 面包板
- 杜邦线
- 电池盒和电池
接下来,您可以按照以下步骤来实现按键前进后退左转右转的功能:
1. 将 L298N 电机驱动模块连接到 Arduino UNO 开发板上。将 IN1、IN2、IN3 和 IN4 分别连接到 Arduino 的数字引脚 5、6、9 和 10 上,将 ENA 和 ENB 分别连接到数字引脚 3 和 11 上。
2. 将两个直流电机分别连接到 L298N 电机驱动模块上的 OUT1 和 OUT2 引脚和 OUT3 和 OUT4 引脚。
3. 接下来,将 HC-SR04 超声波传感器连接到 Arduino 上。将 Trig 引脚连接到数字引脚 12 上,将 Echo 引脚连接到数字引脚 13 上。
4. 将红外遥控器模块连接到 Arduino 上。将模块的 VCC 引脚连接到 Arduino 的 5V 引脚上,将 GND 引脚连接到 GND 引脚上,将接收器的 OUT 引脚连接到数字引脚 2 上。
5. 在 Arduino IDE 中编写程序。您可以使用如下代码作为参考:
```c
#include <IRremote.h>
//定义红外遥控器的按键值
#define KEY_UP 0xFF18E7
#define KEY_DOWN 0xFF4AB5
#define KEY_LEFT 0xFF10EF
#define KEY_RIGHT 0xFF5AA5
#define KEY_STOP 0xFF38C7
//定义电机驱动模块的引脚
#define ENA 3
#define IN1 5
#define IN2 6
#define IN3 9
#define IN4 10
#define ENB 11
//定义超声波传感器的引脚
#define Trig 12
#define Echo 13
IRrecv irrecv(2);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
}
void loop()
{
if (irrecv.decode(&results))
{
switch (results.value)
{
case KEY_UP:
forward();
break;
case KEY_DOWN:
backward();
break;
case KEY_LEFT:
left();
break;
case KEY_RIGHT:
right();
break;
case KEY_STOP:
stop();
break;
default:
break;
}
irrecv.resume();
}
}
void forward()
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 200);
analogWrite(ENB, 200);
}
void backward()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENA, 200);
analogWrite(ENB, 200);
}
void left()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 200);
analogWrite(ENB, 200);
}
void right()
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENA, 200);
analogWrite(ENB, 200);
}
void stop()
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
```
6. 上传程序到 Arduino 开发板上,并测试。当您按下红外遥控器上的不同按键时,小车会前进、后退、左转或右转。
希望这个回答能够帮助您实现您的想法。