Arduino 使用L293D控制器,电机仅旋转一个方向

Arduino 使用L293D控制器,电机仅旋转一个方向,arduino,arduino-uno,pwm,motordriver,Arduino,Arduino Uno,Pwm,Motordriver,你好,我有一辆RC车,它有两个3v电机(一个用于左/右,另一个用于前/后)。左右电机工作正常,但当我尝试旋转另一个电机时,它只会向后旋转。我已经分别试过电机,它在没有控制器的情况下双向工作 我的代码如下: int enablePinMotorAF = 3; int in1PinMotorAF = 5; int in2PinMotorAF = 6; int enablePinMotorLR = 11; int in1PinMotorLR = 10; int in2PinMotorLR = 9; b

你好,我有一辆RC车,它有两个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);
}
接线也在这里:

绿色和橙色导线用于蓝牙模块

你知道我怎样才能解决这个问题并使它发挥作用吗


谢谢。

要反转电机,需要四个针脚,每个电机两个。在现成的L293模块上,它们通常标记为IN1、IN2、IN3和IN4

要使一个电机前进,您可以将其设置为1至5伏,2至0伏。要反转它,只需将输入切换为1到0伏,2到5伏。在这种情况下,5V是一个
数字写入(引脚,高)

另一个电机的其他两个销类似。我从这个开始回答,因为什么输出引脚到什么输入引脚的布线是至关重要的

启用引脚似乎是您出错的地方。Enable2和Enable1应该连接到您正在进行
analogWrite()
操作的引脚,但是
enablePinMotorAF=3
例如,应该连接到电机信号输入,而不是像可能应该的那样连接到Enable2。从解决这个问题开始。。。您的两个针脚3和11应连接到Enable1和Enable2您只需要启用引脚上的PWM。其他引脚只需使用
digitalWrite()
激活即可


一旦将Enable n引脚连接到PWM,您将获得良好的PWM启用信号。只需将芯片同一侧的其他管脚连接起来(IN1和IN2用于Enable1,IN3和IN4用于Enable2),然后用“digitalWrite(管脚,高)”打开和关闭它们,就可以了。

问题是,我不得不将管脚6与管脚3互换,因为它们被宣布为错误。现在方向是正常的,但经过一些测试,它只是旋转非常缓慢,左/右电机只是在晃动。我试着换了一块新电池,结果也一样。那么您的意思是@JLH,我应该将4英寸引脚连接到非PWM端口?这可能是问题所在吗?不。简单地说:两个管脚,不管它们是什么,进行模拟写入,它们需要连接到L293上的启用管脚。其他引脚与Arduino上的连接无关,只要您可以使用digitalWrites()来关闭和打开它们(前进和后退)。现在我有这样的情况:两个启用引脚连接到6,11(PWM端口),我进行模拟写入以改变速度,其他引脚(IN1、IN2、IN3、IN4)连接到其他PWM端口,我进行数字写入以改变方向。但它们的移动速度仍然很慢。这是为什么?它们正确地向左、向右、向前和倒车吗?不。现在左/右只是在晃动,向前/向后旋转非常慢。对不起,我误解了你的问题,所以是的,他们走的方向很好,但速度不够。