Im using a potentiometer to control the speed of two generic 6-8V DC motors. The potentiometer input is scaled from 0-1023 to 0-255, I then use the analogWrite() function to write this value to the enable pins on my L293D motor controller.

Im sure this should control the speed but it doesn't, I have the code printing the value it sends to the enable pins and this is correct, but no speed increase, the motors either move at one speed or don't move at all. My enable pins are 12 and 13 on my Arduino Uno, previously 5 and 6 but I moved them to see if that was the problem.

Is there a problem with the PWM frequency maybe? I don't understand why it won't go faster and slower after days of troubleshooting.. The inputs are all set correctly, allowing both motors to move in the forward direction..

int Speed = analogRead(speedChange);
int SpeedMap = map(Speed,0,1023,0,255);
analogWrite(enable1, SpeedMap);
analogWrite(enable2, SpeedMap);

enter image description here

Its a long shot but does anyone know enough about PWM control on DC motors to think of any things I may be missing while trying to do this? Ill provide any info ASAP, thanks

  • 1
    Pins 12 and 13 on the Uno aren't PWM capable.
    – Majenko
    Commented Aug 30, 2015 at 13:14
  • Thanks! You put me on the right track.. I plugged them back into 6 and 7 and I had a new set of problems.. Then I switched enable 2 into pin 5 instead of 7 and it works! Not sure why pin 7 is a bit dodgy unless that dose have pwm either Commented Aug 30, 2015 at 13:38
  • 1
    The pins that have PWM available are marked with a ~ symbol. On the Uno that is pins 3, 5, 6, 9, 10 and 11.
    – Majenko
    Commented Aug 30, 2015 at 13:50
  • @Majenko, you should put that as an answer Commented Aug 31, 2015 at 3:03

2 Answers 2


Although I am still figuring things out, but i hope the following things help:


The problem, as far as I think is that the enable pins are the ones which are supposed to help you control the speed. Please connect them to the PWM ports on your Arduino/any other device you may be using for your project.

Or, you can simply write a code which keeps on disabling and enabling the enable pins to get the desired speed (that's what PWM is supposed to do but you can try it this way, at least).


I guess you're not using the designated PWM pins provided on the Arduino Board, anyhow I suggest you read this instructible: http://www.instructables.com/id/Arduino-DC-motor-speed-and-direction-L293D/step2/L293D-Pin-Layout/ ,Perhaps this can help you in making proper connections and also help you with the code :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.