I'm working on a RC car. Everything works fine except one thing : I can't control the speed of the motors.
No matter what value I send to the ENA pin, motors are spinning the same.
This is my code :
//motor A
int dir1PinA = 7;
int dir2PinA = 6;
int speedPinA = 2;
//motor B
int dir1PinB = 5;
int dir2PinB = 4;
int speedPinB = 3;
void setup(){
Serial.begin(9600);
//I'm not setting the pin modes because if I do the motors wont spin at all.
//pinMode(dir1PinA,OUTPUT);
//pinMode(dir2PinA,OUTPUT);
//pinMode(speedPinA,OUTPUT);
//pinMode(dir1PinB,OUTPUT);
//pinMode(dir2PinB,OUTPUT);
//pinMode(speedPinB,OUTPUT);
}
void loop(){
motor_a(1,30);
motor_b(1,30);
delay(1000);
//motor_a(1,10);
delay(1000);
motor_a(2,80);
motor_b(2,30);
//motor_a(2,10);
delay(1000);
}
void motor_a(int dir, int speed_proccent){
int speed_val = map(speed_proccent, 0,100,0,255);
Serial.println(speed_val);
if(dir == 1){
digitalWrite(dir1PinA,HIGH);
digitalWrite(dir2PinA,LOW);
digitalWrite(speedPinA,speed_val);
}else if(dir == 2){
digitalWrite(dir1PinA,LOW);
digitalWrite(dir2PinA,HIGH);
digitalWrite(speedPinA,speed_val);
}else if(dir == 0){
digitalWrite(speedPinA,0);
}else if(dir == 3){
digitalWrite(dir1PinA,LOW);
digitalWrite(dir2PinA,LOW);
digitalWrite(speedPinA,speed_val);
}
}
void motor_b(int dir, int speed_proccent){
int speed_val = map(speed_proccent, 0,100,0,255);
if(dir == 1){
digitalWrite(dir1PinB,HIGH);
digitalWrite(dir2PinB,LOW);
digitalWrite(speedPinB,speed_val);
}else if(dir == 2){
digitalWrite(dir1PinB,LOW);
digitalWrite(dir2PinB,HIGH);
digitalWrite(speedPinB,speed_val);
}else if(dir == 0){
digitalWrite(speedPinB,0);
}else if(dir == 3){
digitalWrite(dir1PinB,LOW);
digitalWrite(dir2PinB,LOW);
digitalWrite(speedPinB,speed_val);
}
}