你好我有一辆遥控车有两个3v电机(一个用于左/右,另一个用于前/后)。左右电机工作正常但是当我尝试旋转另一个电机时它只能向后旋转。我已经单独试过电机,它在没有控制器的情况下可以双向工作。
我的代码如下:
int enablePinMotorAF = 3;
int in1PinMotorAF = 5;
int in2PinMotorAF = 6;
int enablePinMotorLR = 11;
int in1PinMotorLR = 10;
int in2PinMotorLR = 9;
boolean reverse = true;
void setup() {
pinMode(enablePinMotorAF, OUTPUT);
pinMode(in1PinMotorAF, OUTPUT);
pinMode(in2PinMotorAF, OUTPUT);
pinMode(enablePinMotorLR, OUTPUT);
pinMode(in1PinMotorLR, OUTPUT);
pinMode(in2PinMotorLR, OUTPUT);
}
void loop() {
//go forward ->not working
analogWrite(enablePinMotorAF, 230); //max speed
digitalWrite(in1PinMotorAF, reverse);
digitalWrite(in2PinMotorAF, !reverse);
delay(3000);
//go back -> working
analogWrite(enablePinMotorAF, 230); //max speed
digitalWrite(in1PinMotorAF, !reverse);
digitalWrite(in2PinMotorAF, reverse);
delay(3000);
//go right -> working
analogWrite(enablePinMotorLR, 230); //max speed
digitalWrite(in1PinMotorLR, !reverse);
digitalWrite(in2PinMotorLR, reverse);
delay(3000);
//go left -> working
analogWrite(enablePinMotorLR, 230); //max speed
digitalWrite(in1PinMotorLR, reverse);
digitalWrite(in2PinMotorLR, !reverse);
delay(3000);
}
这也是布线:
绿色和橙色线用于蓝牙模块。
您是否知道如何解决此问题并使其有效?
谢谢。
答案 0 :(得分:0)
要反转电机,需要四个引脚,每个电机两个引脚。在易于使用的L293模块上,它们通常标记为IN1,IN2,IN3和IN4。
要使一个电机前进,可以将IN1设置为5V,将IN2设置为0V。要将其反转,只需将输入IN1切换为0V,将IN2切换为5V。在这种情况下,5V是digitalWrite(pin, HIGH)
。
类似于另一个电机的其他两个引脚。我开始回答这个问题,因为输出引脚到输入引脚的接线是非常重要的。
启用引脚是您出错的地方。 Enable2和Enable1应该连接到您正在执行analogWrite()
的引脚,但是enablePinMotorAF = 3
例如连接到电机信号输入,而不是连接到它可能应该的Enable2。首先修复......你的两个引脚3和11应连接到Enable1和Enable2。 启用引脚只需要PWM。其他只需使用digitalWrite()
激活。
一旦连接到PWM的Enable n 引脚,您就会有一个良好的PWM使能信号。只需连接芯片同一侧的其他引脚(用于Enable1和IN3的IN1和IN2以及用于Enable2的IN4),然后用`digitalWrite(引脚,HIGH)将它们打开和关闭,你就可以了