I'm using an Arduino Uno to make a motor car. And I successfully made it move forward / backward / left / right.
void forward(void) {
analogWrite(EA, 254); //speed 0 - 255
analogWrite(EB, 255); //speed 0 - 255
digitalWrite(EN2, LOW);
digitalWrite(EN3, HIGH);
digitalWrite(EN4, LOW);
digitalWrite(EN5, HIGH);
}
void backward(void) {
analogWrite(EA, 255); //speed 0 - 255
analogWrite(EB, 255); //speed 0 - 255
digitalWrite(EN2, HIGH);
digitalWrite(EN3, LOW);
digitalWrite(EN4, HIGH);
digitalWrite(EN5, LOW);
}
void left(void) {
analogWrite(EA, 180); //speed 0 - 255
analogWrite(EB, 180); //speed 0 - 255
digitalWrite(EN2, LOW);
digitalWrite(EN3, HIGH);
digitalWrite(EN4, HIGH);
digitalWrite(EN5, LOW);
}
void right(void) {
analogWrite(EA, 180); //speed 0 - 255
analogWrite(EB, 180); //speed 0 - 255
digitalWrite(EN2, HIGH);
digitalWrite(EN3, LOW);
digitalWrite(EN4, LOW);
digitalWrite(EN5, HIGH);
}
The problem is, I found it is quite strange if I need to first press left/ right and press forward to turn around. I would like to make 4 extra buttons for left-forward / left-backward/ right-forward/ right-backward. Any ideas to create 4 extra functions for that?
Thanks for helping.
Update: Connection
int EN2 = 14;
int EN3 = 15;
int EN4 = 16;
int EN5 = 17;
int EA = 3;
int EB = 5;
Update: Attempted code and hardware connection
void left_top(void) {
analogWrite(EA, 128); //speed 0 - 255
analogWrite(EB, 255); //speed 0 - 255
digitalWrite(EN2, LOW);
digitalWrite(EN3, HIGH);
digitalWrite(EN4, LOW);
digitalWrite(EN5, HIGH);
}
void right_top(void) {
analogWrite(EA, 255); //speed 0 - 255
analogWrite(EB, 128); //speed 0 - 255
digitalWrite(EN2, LOW);
digitalWrite(EN3, HIGH);
digitalWrite(EN4, LOW);
digitalWrite(EN5, HIGH);
}
void left_down(void) {
analogWrite(EA, 128); //speed 0 - 255
analogWrite(EB, 255); //speed 0 - 255
digitalWrite(EN2, HIGH);
digitalWrite(EN3, LOW);
digitalWrite(EN4, HIGH);
digitalWrite(EN5, LOW);
}
void right_down(void) {
analogWrite(EA, 255); //speed 0 - 255
analogWrite(EB, 128); //speed 0 - 255
digitalWrite(EN2, HIGH);
digitalWrite(EN3, LOW);
digitalWrite(EN4, HIGH);
digitalWrite(EN5, LOW);
}
Left top / right top seem not to move at all, and right top / down is just similar to right / left.
And for hardware, I am using
Arduino AR 293d
For the motor connection, it's like this: