// Constants
const int enableBridge1 = 11;
const int MotorForward1 = 12;
const int MotorReverse1 = 13;
const int enableBridge2 = 5;
const int MotorForward2 = 6;
const int MotorReverse2 = 7;
const int TrigPin = 2;
const int EchoPin = 3;
float distance;
#include <servo.h>
Servo myservo;
int angle = 0;
void setup(){
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.println("Ultrasonic sensor:");
pinMode(MotorForward1,OUTPUT);
pinMode(MotorReverse1,OUTPUT);
pinMode(enableBridge1,OUTPUT);
pinMode(MotorForward2,OUTPUT);
pinMode(MotorReverse2,OUTPUT);
pinMode(enableBridge2,OUTPUT);
myservo.attach(9);
Serial.begin(2000);
}
void loop(){
digitalWrite(enableBridge1,HIGH); // Active pont en H
digitalWrite(enableBridge2,HIGH);
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
distance = pulseIn(EchoPin, HIGH) / 58.00;
Serial.print(distance);
Serial.print("cm");
Serial.println();
for (angle = 0; angle <= 180; angle += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(angle); // tell servo to go to position in variable 'pos'
delay(15);
if (distance<=50) {
// Tourne dans le sens indirect pendant 3 secondes
digitalWrite(MotorForward1,HIGH);
digitalWrite(MotorReverse1,0);
digitalWrite(MotorForward2,0);
digitalWrite(MotorReverse2,HIGH);
}
else {
digitalWrite(MotorForward1,HIGH);
digitalWrite(MotorReverse1,0);
digitalWrite(MotorForward2,HIGH);
digitalWrite(MotorReverse2,0);
}
}
for (angle = 180; angle >= 0; angle -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(angle); // tell servo to go to position in variable 'pos'
delay(15);
if (distance<=50) {
// Tourne dans le sens indirect pendant 3 secondes
digitalWrite(MotorForward1,0);
digitalWrite(MotorReverse1,HIGH);
digitalWrite(MotorForward2,HIGH);
digitalWrite(MotorReverse2,0);
}
else {
digitalWrite(MotorForward1,HIGH);
digitalWrite(MotorReverse1,0);
digitalWrite(MotorForward2,HIGH);
digitalWrite(MotorReverse2,0);
}
}
}</servo.h>

First design on fusion360 (25cm x 12cm)

(inside and support)
Upgrade :

First prototypes of the circuit
Final Circuit V1
// Constants
const int enableBridge1 = 11;
const int MotorForward1 = 12;
const int MotorReverse1 = 13;
const int enableBridge2 = 5;
const int MotorForward2 = 6;
const int MotorReverse2 = 7;
const int TrigPin = 2;
const int EchoPin = 3;
float distance;
#include <Servo.h>
Servo myservo;
int angle = 0;
void setup(){
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.println("Ultrasonic sensor:");
pinMode(MotorForward1,OUTPUT);
pinMode(MotorReverse1,OUTPUT);
pinMode(enableBridge1,OUTPUT);
pinMode(MotorForward2,OUTPUT);
pinMode(MotorReverse2,OUTPUT);
pinMode(enableBridge2,OUTPUT);
myservo.attach(9);
Serial.begin(2000);
}
void loop(){
digitalWrite(enableBridge1,HIGH); // Active pont en H
digitalWrite(enableBridge2,HIGH);
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
distance = pulseIn(EchoPin, HIGH) / 58.00;
Serial.print(distance);
Serial.print("cm");
Serial.println();
if (distance<=50) {
// Si un obstacle est détecté
// Vérifie s'il y a un obstacle à droite
myservo.write(90);
delay(10000);
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
if (pulseIn(EchoPin, HIGH) / 58.00 > 50) {
// S'il n'y a pas d'obstacle à droite, tourne à droite
digitalWrite(MotorForward1, 0);
digitalWrite(MotorReverse1, HIGH);
digitalWrite(MotorForward2, HIGH);
digitalWrite(MotorReverse2, 0);
delay(3000);
} else {
// Sinon, vérifie s'il y a un obstacle à gauche
myservo.write(180);
delay(10000);
digitalWrite(TrigPin,...
Read more »