Button controlled DC MOTORS

Hi, i am working on a button controlled car. It has 4 push buttons for direciton and 1 button for start. I want the user to create a route using 4(forward, backward, right, left) buttons and then press the start button to move the car on the specified route. I am using an arduio uno, L293B motor driver and 2 dc motors. Here is my code.
`//MOTOR PINS
int ena = 6; //alt motor
int in1 = 7;
int in2 = 5;
int in3 = 2; //üst motor
int in4 = 4;
int enb = 3;

int ileri = 8;
int geri = 9;
int sag = 10;
int sol = 11;
int basla = 12;

//#define ileri_pin false
//#define geri_pin false
//#define sag_pin false
//#define sol_pin false
//#define basla_pin false

int i = 0;
int hareketler[30] = {};
int uzunluk = 30;
bool basladimi = false;

void motorileri() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(ena, 255);
analogWrite(enb, 255);
delay(1000);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(ena, 0);
analogWrite(enb, 0);
delay(1000);
}

void motorgeri() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(ena, 255);
analogWrite(enb, 255);
delay(1000);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(ena, 0);
analogWrite(enb, 0);
delay(1000);
}

void motorsag() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(ena, 255);
analogWrite(enb, 255);
delay(1000);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(ena, 0);
analogWrite(enb, 0);
delay(1000);
}
void motorsol() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(ena, 255);
analogWrite(enb, 255);
delay(1000);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(ena, 0);
analogWrite(enb, 0);
delay(1000);
}

void setup() {
Serial.begin(9600);
pinMode(ena, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enb, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);

pinMode(ileri, INPUT);
pinMode(sag, INPUT);
pinMode(sol, INPUT);
pinMode(basla, INPUT);
pinMode(geri, INPUT);
}

void loop() {
bool ileri_;
bool sag_;
bool sol_;
bool geri_;
bool basla_;

Serial.begin(9600);

ileri_ = digitalRead(ileri);
sag_ = digitalRead(sag);
sol_ = digitalRead(sol);
geri_ = digitalRead(geri);
basla_ = digitalRead(basla);

if (basladimi) { //starta basıldığında
while (hareketler[i] < 5) {
int i = 0;
if (hareketler[i] == 0) { //ileri
motorileri();
i++;

  } else if (hareketler[i] == 1) {  //geri
    motorgeri();
    i++;

  } else if (hareketler[i] == 2) {  //sağ
    motorsag();
    i++;

  } else if (hareketler[i] == 3) {  //sol
    motorsol();
    i++;

  } else 
    basladimi = false;
  
}

} else {
//basılmadığında
if (ileri_ == true) {
hareketler[i] = 0; // 0, ileri hareketini temsil eder
i++;
}

if (geri_ == true) {
  hareketler[i] = 1;
  i++;
}
if (sag_ == true) {
  hareketler[i] = 2;
  i++;
}

if (sol_ == true) {
  hareketler[i] = 3;
  i++;
}

}

if (basla_ == true) {
basladimi = true;
}
delay(150);

}`
I am new to programming but i don' think there is problem with my code because i checked the value of the variables in the code depending on the state of the buttons
The problem is that the motors are not working. I know there could be many reasons for this. Do you have any idea how can i solve it?

Hello

Test the L293B motor driver without an Arduino simply.

1 Like

You didn't tell about the power source. Without proper battery it won't move.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.