这两天准备做个红外遥控uno小车,但是在使用L293D电机驱动板时无论进行前进后退左转右转M1与M2电机接口始终无响应。但是在后续逐步测试时电机,四个电机接口,单独接外接电源,外接电源与电脑同时供电都测试没问题😨
以下是我的代码部分,麻烦各位帮忙解答😊谢谢!
#include <AFMotor.h>
#include <IRremote.h>
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);
int RECV_PIN = A4;
IRrecv irrecv(RECV_PIN);
decode_results results;
// 用于存储上一个按键的值
//unsigned long lastCode = 0;
void setup() {
Serial.begin(9600);
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // Start the receiver
Serial.println("Enabled IRin");
}
void loop() {
if (irrecv.decode(&results)) { // 检查是否接收到红外遥控信号
Serial.println(results.value, HEX); // 输出指令信息
// 检查是否为重复码,如果是则忽略
if (results.value == 0xFFFFFFFF) {
irrecv.resume();
return;
}
// 使用 switch 语句来判断接收到的红外值
switch (results.value) {
case 0xFF18E7: // 前进
Serial.println("Moving Forward");
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
break;
case 0x3D9AE3F7: // 前进
Serial.println("Moving Forward");
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
break;
case 0xFF4AB5: // 后退
Serial.println("Moving Backward");
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
break;
case 0x1BC0157B: // 后退
Serial.println("Moving Backward");
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
break;
case 0xFF10EF: // 右转
Serial.println("Turning Right");
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
motor1.run(FORWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);
break;
case 0x449E79F: // 右转
Serial.println("Turning Right");
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
motor1.run(FORWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);
break;
case 0xFF5AA5: // 左转
Serial.println("Turning Left");
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
motor1.run(BACKWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(BACKWARD);
break;
case 0x8C22657B: // 左转
Serial.println("Turning Left");
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
motor1.run(BACKWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(BACKWARD);
break;
case 0x488F3CBB:// 停止
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
break;
case 0xFF38C7:
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
break;
default:
Serial.println("Unknown Command");
break;
}
// 更新上一个指令值
//lastCode = results.value;
irrecv.resume(); // 接收下一指令
}
delay(100);
}