HX1838红外遥控小车

准备工作:
材料:
- Arduino Nano 主控板 ×1
- MX1508 直流电机驱动模块 ×1
- TT 减速直流电机 ×4
- HX1838 红外接收模块 ×1
- 红外遥控器 ×1
- 红色 LED 发光二极管 ×1
- 220Ω 限流电阻 ×1
- 小车底盘、车轮、电机固定支架一套
- 杜邦线若干(公对公、公对母)
- 供电电池组(适配电机电压,如 18650 电池盒)
- 电池开关 ×1
工具:
- 电脑(安装 Arduino IDE 软件)
- USB 数据下载线(适配 Arduino Nano)
- 剥线钳
- 电工胶带 / 扎带(线束整理)
- 十字螺丝刀(固定底盘、电机)
- 万用表(可选,测通断、电压调试)
- 热熔胶枪 / 双面胶(固定模块)
制作思路

- 添加HX1838红外接收模块,遥控实现前进、后退、左转、右转
- 添加LED灯,控制亮、灭
编程-测试按键值






- 本步骤为测试遥控器的按键值
- 下载本附件程序,上传程序后-,打开串口监视器,按键,会在串口监视器显示对应的键值,最后再程序中使用时,前面加上“0X”即可
编程-完整程序






本步骤为完整的程序
- 引脚定义请参考截图
- 下载附件程序即可使用
- 完整程序:
#include <IRremote.h>
// 硬件引脚
#define INA1 2
#define INA2 3
#define INB1 4
#define INB2 5
#define IR_PIN 7
#define LED_PIN 12
#define SPEED 255//全局调速
IRrecv irrecv(IR_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
// 电机引脚输出
pinMode(INA1, OUTPUT);
pinMode(INA2, OUTPUT);
pinMode(INB1, OUTPUT);
pinMode(INB2, OUTPUT);
// LED引脚输出,默认熄灭
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
// 红外初始化
IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK);
// 上电停车
stopCar();
Serial.println("=== 遥控小车就绪 ===");
Serial.println("0x44 前进 | 0x40 倒车");
Serial.println("0x45 LED亮 | 0x46 LED灭");
Serial.println("其他按键:小车停止");
}
// 小车前进
void forward() {
digitalWrite(INA1, HIGH);
digitalWrite(INA2, LOW);
digitalWrite(INB1, HIGH);
digitalWrite(INB2, LOW);
analogWrite(INA1, SPEED);
analogWrite(INB1, SPEED);
Serial.println("小车:前进");
}
// 小车后退
void backward() {
digitalWrite(INA1, LOW);
digitalWrite(INA2, HIGH);
digitalWrite(INB1, LOW);
digitalWrite(INB2, HIGH);
analogWrite(INA2, SPEED);
analogWrite(INB2, SPEED);
Serial.println("小车:倒车");
}
// 小车右转
void RIGHT() {
digitalWrite(INB1, LOW);//左侧轮
digitalWrite(INB2, HIGH);//左侧轮
digitalWrite(INA1, LOW);//右侧
digitalWrite(INA2, LOW);//右侧
analogWrite(INA1, SPEED);
analogWrite(INB1, SPEED);
Serial.println("小车:前进");
}
// 小车左转
void LEFT() {
digitalWrite(INB1, LOW);
digitalWrite(INB2, LOW);
digitalWrite(INA1, LOW);//右侧电机前进
digitalWrite(INA2, HIGH);//右侧电机前进
analogWrite(INA1, SPEED);
analogWrite(INB1, SPEED);
Serial.println("小车:前进");
}
// 全车停止
void stopCar() {
digitalWrite(INA1, LOW);
digitalWrite(INA2, LOW);
digitalWrite(INB1, LOW);
digitalWrite(INB2, LOW);
}
void loop() {
if (IrReceiver.decode()) {
uint16_t key = IrReceiver.decodedIRData.command;
Serial.print("收到按键码:0x");
Serial.println(key, HEX);
// 小车控制逻辑
if (key == 0x44) {
forward();
} else if (key == 0x40) {
backward();
}
else if (key == 0x7) {
LEFT();
}
else if (key == 0x15) {
RIGHT();
}
else {
stopCar();
}
// D12 LED灯光
if (key == 0x45) {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED 点亮");
} else if (key == 0x46) {
digitalWrite(LED_PIN, LOW);
Serial.println("LED 熄灭");
}
IrReceiver.resume();
}
}
安装注意





- hx1838接收模块的正极必须接5V
- 信号引脚接D7
- 电池使用12V直接供电Arduino开发板
测试视频



按键功能:
CH-:开灯
CH+:关灯
左:前进
右:后退
-:左转
+:右转
0
0
0
qq空间
微博
复制链接
分享
0