i have 3 ultrasonic sensor that interfacing with 2 motor.
The serial monitor is able to respond but the motor does not react base on that distance.
#include <Ultrasonic.h>
Ultrasonic ultrafront(12,11); // (Trig PIN,Echo PIN)
Ultrasonic ultraleft(10,9); // (Trig PIN,Echo PIN)
Ultrasonic ultraright(7,6); // (Trig PIN,Echo PIN)
//motor one
const int DIR1 = 4;
const int EN1 = 5;
//motor two
const int DIR2 = 7;
const int EN2 = 6;
void setup() {
Serial.begin(9600);
pinMode (DIR2,OUTPUT);
pinMode (DIR1,OUTPUT);
pinMode (EN1,OUTPUT);
pinMode (EN2,OUTPUT);
}
void loop(){
Serial.print("Front: ");
Serial.print(ultrafront.Ranging(CM)); // CM or INC
Serial.print(" cm " );
delay(100);
Serial.print("Left: ");
Serial.print(ultraleft.Ranging(CM)); // CM or INC
Serial.print(" cm " );
delay(100);
Serial.print("Right: ");
Serial.print(ultraright.Ranging(CM)); // CM or INC
Serial.print(" cm " );
delay(100);
int cm_L = ultraleft.Ranging(CM);
int cm_F = ultrafront.Ranging(CM);
int cm_R = ultraright.Ranging(CM);
//middle sensor (turning right)
if(cm_L >=45,cm_F >=45,cm_R >=45) {
digitalWrite(DIR2, LOW);
analogWrite(EN2, 100);
digitalWrite(DIR1, LOW);
analogWrite(EN1, 100);
}
else if (cm_L <45,cm_F >=45,cm_R >=45){
digitalWrite(DIR2, HIGH);
analogWrite(EN2, 100);
digitalWrite(DIR1, LOW);
analogWrite(EN1, 0);
}
else if (cm_L <45,cm_F <45,cm_R >=45){
digitalWrite(DIR2, HIGH);
analogWrite(EN2, 100);
digitalWrite(DIR1, LOW);
analogWrite(EN1, 100);
}
else if (cm_L>=45,cm_F >=45,cm_R <45){
digitalWrite(DIR2, HIGH);
analogWrite(EN2, 0);
digitalWrite(DIR1, LOW);
analogWrite(EN1, 100);
}
else if (cm_L >=45,cm_F<45,cm_R <45){
digitalWrite(DIR2, LOW);
analogWrite(EN2, 100);
digitalWrite(DIR1, HIGH);
analogWrite(EN1, 100);
}
else if (cm_L >=45,cm_F<45,cm_R <45){
digitalWrite(DIR2, LOW);
analogWrite(EN2, 100);
digitalWrite(DIR1, HIGH);
analogWrite(EN1, 100);
}
else if(cm_L <45,cm_F <45,cm_R <45){
digitalWrite(DIR2, LOW);
analogWrite(EN2, 0);
digitalWrite(DIR1, LOW);
analogWrite(EN1, 0);
}
else if (cm_L>=45,cm_F <45,cm_R >=45){
digitalWrite(DIR2, HIGH);
analogWrite(EN2, 0);
digitalWrite(DIR1, LOW);
analogWrite(EN1, 100);
}
delay(100);
}