Hello...
I want to run a DC motor for a specific time then stops, using this code either by switches or sensors:
void setup ()
{
pinMode (IN1, OUTPUT);
pinMode(IN2, OUTPUT) ;
pinMode (IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode (SW1, INPUT);
pinMode (SW2, INPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
Serial.begin(9600);
}
void loop()
{
// DIRECTION CONTROL
boolean sw1Val = digitalRead(SW1);
boolean sw2Val = digitalRead(SW2);
if (!sw1Val && !sw2Val) // 0 0 - right
{
Serial.println("XXXX");
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 255);
delay(5000);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
else if (!sw1Val && sw2Val) // 0 1 - left
{
Serial.println("XXXX");
digitalWrite (IN1, HIGH); //RUN IN REVERSE DIRCECTION
digitalWrite(IN2,LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 255);
delay(5000);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
else if (sw1Val && !sw2Val) // 1 0 - up
{
Serial.println("XXXX");
digitalWrite (IN1, LOW); //RUN IN REVERSE DIRCECTION
digitalWrite(IN2,LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENA, 255);
analogWrite(ENB, 0);
delay(5000);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
else if (sw1Val && sw2Val) // 1 1 - Down
{
Serial.println("XXXX");
digitalWrite (IN1, LOW); //RUN IN REVERSE DIRCECTION
digitalWrite(IN2,LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, 255);
analogWrite(ENB, 0);
delay(5000);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
}
}