本项目使用Arduino UNO开发板和L293D马达驱动器,制作了一个可由任何IR控制器进行控制的遥控车。
小车通电后,L293D马达端罩和IR接收模块通过Arduino UNO板子激活,IR接收器开始接收红外线。当IR接收器的接收值与程序匹配时,啮合马达就按照对应的数值正传或反转。
需要牢记的是,虽然使用了L293D马达驱动器支架,马达端子是1、2不用的,因为这两个端子对IR遥控不起作用。因此,我们只能用3、4端子。
项目BOM表如下:
Arduino UNO开发板 x 1
IR接收模块 x 1
L293D马达驱动器 x 1
啮合马达 x 4
Robot轮子 x 4
锂离子电池 x 2
锂离子电池支架 x 1
硬纸板
跳线
首先,制作车架。先把纸板切成车架的轮廓,剪出四个轮子的位置。再将马达与轮子啮合后,用胶水将马达粘在车架上。
接着,按照电路图,将马达驱动器连接到Arduino开发板,再用胶水固定在车架的中心位置。
第三步,将IR接收模块胶粘在车架上,并按照电路图连接于马达驱动器。
第四步,将锂离子电池支架胶粘到车架上,再与马达驱动器连接。
硬件连接正确后,剩下的就是上传软件了。
第一,从IR遥控器获得IR数值,IR遥控器类型不限。这需要先下载IR库、AFmotor库两个库文件。
/*IR remote control car with Arduino.
* Home Page - SriTu Hobby
*/
#include
#include
AF_DCMotor motor1(3);
AF_DCMotor motor2(4);
IRrecv IR(A0);
decode_results result;
int Speed = 150;
#define up 0
#define down 0
#define left 0
#define right 0
#define Stop 0
void setup() {
Serial.begin(9600);
motor1.setSpeed(Speed);
motor2.setSpeed(Speed);
IR.enableIRIn();
}
void loop() {
if (IR.decode(&result)) {
Serial.println(result.value);
IR.resume();
}
delay(100);
if (result.value == up ) {
motor1.run(FORWARD);
motor2.run(FORWARD);
} else if (result.value == down ) {
motor1.run(BACKWARD);
motor2.run(BACKWARD);
} else if (result.value == Stop) {
motor1.run(RELEASE);
motor2.run(RELEASE);
} else if (result.value == left) {
motor1.run(FORWARD);
motor2.run(BACKWARD);
} else if (result.value == right) {
motor1.run(BACKWARD);
motor2.run(FORWARD);
}
}
将上述代码上传到对应端口后,运行serial monitor获得IR数值,将这些数值拷下来再粘贴到程序中。
最后,上传更新后的程序。这样,操作遥控,小车就按指挥运行了。
北山独狼 2022-6-25 18:26