红外遥控车
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
|
关于这个项目
我在 Instructables 上找到了原始设计并构建了它的一个版本。最初是一辆履带式车辆,而这辆是 4WD。对原始设计的调整来自于 IR 的设置。当电机运行时,原始设计会受到反馈干扰,从而干扰 IR 接收器。电机在接地线相遇的地方充当发电机。我更改了 IR 的引脚和分配
如果使用 SAINSMART 流动站套件,请按照提供的说明组装汽车底座。在这里找到
红外接收器:
intreceiver_pin =4; //将控制器上的输出引脚 4 连接到 IR 接收器 Y
int vcc =5; //将控制器上的输出引脚 5 连接到 IR 接收器 V
国际地=6; //将控制器上的输出引脚 4 连接到 IR 接收器 G
L298N电机驱动模块:
// 电机 A
int enA =8;
int in1 =12;
int in2 =11;
// 电机 B
int enB =7;
int in3 =10;
int in4 =9;
L298N电机驱动模块GND到控制器GND
L298N 电机驱动模块到电机:
//电机组A右侧
连接 电机的“+”(红色)侧到 Out 4
将电机的“-”(黑色)侧连接到 Out 3
// 电机组 B 左侧
连接 电机的“+”(红色)侧到 Out 2
将电机的“-”(黑色)侧连接到 Out 1
将电池连接到 L298N 驱动模块“+”(红色)到 VCC 和“-”(黑色)到 GND
完整的图表
代码
- 红外遥控车
红外遥控车C#
#includechar command;int receiver_pin =4; //在引脚4int vcc =5处连接IR接收器的输出引脚; //VCC IR sensorint gnd =6; //IR sensorint statusled =13;IRrecvirrecv(receiver_pin);decode_results results;//将电机控制器引脚连接到Arduino数字引脚//电机Aint enA =8;int in1 =12;int in2 =11;//电机Bint enB =7;int in3 =10;int in4 =9;void setup(){Serial.begin(9600);irrecv.enableIRIn();pinMode(statusled,OUTPUT);digitalWrite(statusled,LOW);//设置所有电机控制引脚输出 pinMode(enA, OUTPUT); pinMode(enB,输出); pinMode(in1, 输出); pinMode(in2, 输出); pinMode(in3, 输出); pinMode(in4, 输出); pinMode(vcc,输出);引脚模式(接地,输出); // 初始化 vcc pin high digitalWrite(vcc, HIGH);}void loop() {if (irrecv.decode(&results)) {digitalWrite(statusled,LOW);irrecv.resume();if (results.value ==0xFF18E7 ){ // 键入按钮 2 向前机器人控制 // 此函数将以固定速度在两个方向上运行电机 Serial.println("Button 2"); // 打开电机 A digitalWrite(in1, HIGH);数字写入(in2,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enA, 100); // 打开电机 B digitalWrite(in3, HIGH);数字写入(in4,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enB, 100);}else if(results.value ==0xFF10EF){ // 键入按钮 4 向左转机器人控制 // 此函数将运行电机 A前进方向电机 B 停止 Serial.println("Button 4"); // 打开电机 A digitalWrite(in1, HIGH);数字写入(in2,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enA, 100); // 打开电机 B digitalWrite(in3, LOW);数字写入(in4,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enB, 100); }else if(results.value ==0xFF30CF){ // 输入按钮 1 向左旋转机器人控制 // 此函数将使电机 A 正向运行电机 B 反向运行 Serial.println("Button Turn Right"); // 打开电机 A digitalWrite(in1, HIGH);数字写入(in2,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enA, 100); // 打开电机 B digitalWrite(in3, LOW);数字写入(in4,高); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enB, 100); }else if(results.value ==0xFF5AA5){ // 输入按钮 6 向右转机器人控制 // 此函数将停止电机 A 向前运行电机 B Serial.println("Button Turn Left"); // 打开电机 A digitalWrite(in1, LOW);数字写入(in2,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enA, 100); // 打开电机 B digitalWrite(in3, HIGH);数字写入(in4,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enB, 100);}else if(results.value ==0xFF7A85){ // 键入按钮 3 向右旋转机器人控制 // 此函数将运行电机 A反向电机 B 正向 // 打开电机 A digitalWrite(in1, LOW);数字写入(in2,高); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enA, 100); // 打开电机 B digitalWrite(in3, HIGH);数字写入(in4,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enB, 100);} else if(results.value ==0xFF4AB5){ // 键入按钮 8 后退机器人控制 // 此函数将运行电机 A 和电机B 向后 // 打开电机 A digitalWrite(in1, LOW);数字写入(in2,高); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enA, 100); // 打开电机 B digitalWrite(in3, LOW);数字写入(in4,高); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enB, 100);}else if(results.value ==0xFF38C7){ // 键入按钮 5 停止机器人控制 // 此函数将同时停止电机 A 和电机 B // 打开电机 A digitalWrite(in1, LOW);数字写入(in2,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enA, 100); // 打开电机 B digitalWrite(in3, LOW);数字写入(in4,低); // 将速度设置为 200,超出可能的范围 0~255 analogWrite(enB, 100); }}}
示意图
制造工艺