Fonction AUTO GO
- Détails
- Catégorie : Kit robot arduino
- Publication : jeudi 24 septembre 2020 13:03
- Écrit par Bensky
- Affichages : 77881
Fonction AUTO GO
Cette fonction permet au véhicule d'avancer tout seul.
Cette fonction est basée sur la réaction du véhicule en fonction des ultras sons.
Capteur ultra son
On utilise les capteurs ultra son pour détecter les obstacles.
 
   
Moteur du capteur ultra son
On utilise un moteur pour faire tourner les capteurs ultra son, ainsi ceci nous permet de détecter à 360°.

Pour commander les moteurs, on utilise des moteurs pas à pas avec un driver de moteur. Ces drivers permettent d'amplifier le courant pour pouvoir commander le moteur correctement.
C'est la partie de contrôle arduino qui enverra les informations de contrôle moteur.

Logiciel pour réaliser la fonction AUTO GO.
Pour réaliser la fonction AUTO GO, on utilise le logiciel Arduino et on exécute les commandes suivantes.
On réalise un soft qui permet que quand la voiture détecte un obstacle, elle fait 1/4 de tour et ensuite redémarre. cette fonction est une fonction simple mais qui permet de réaliser le début pour un véhicule autonome.
//www.elegoo.com
// The direction of the car's movement
// ENA ENB IN1 IN2 IN3 IN4 Description 
// HIGH HIGH HIGH LOW LOW HIGH Car is runing forward
// HIGH HIGH LOW HIGH HIGH LOW Car is runing back
// HIGH HIGH LOW HIGH LOW HIGH Car is turning left
// HIGH HIGH HIGH LOW HIGH LOW Car is turning right
// HIGH HIGH LOW LOW LOW LOW Car is stoped
// HIGH HIGH HIGH HIGH HIGH HIGH Car is stoped
// LOW LOW N/A N/A N/A N/A Car is stoped
//define L298n module IO Pin
#define ENA 5
#define ENB 6
#define IN1 7
#define IN2 8
#define IN3 9
#define IN4 11
void forward(){ 
 digitalWrite(ENA,HIGH); //enable L298n A channel
 digitalWrite(ENB,HIGH); //enable L298n B channel
 digitalWrite(IN1,HIGH); //set IN1 hight level
 digitalWrite(IN2,LOW); //set IN2 low level
 digitalWrite(IN3,LOW); //set IN3 low level
 digitalWrite(IN4,HIGH); //set IN4 hight level
 Serial.println("Forward");//send message to serial monitor
}
void back(){
 digitalWrite(ENA,HIGH);
 digitalWrite(ENB,HIGH);
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);
 Serial.println("Back");
}
void left(){
 digitalWrite(ENA,HIGH);
 digitalWrite(ENB,HIGH);
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH); 
 Serial.println("Left");
}
void right(){
 digitalWrite(ENA,HIGH);
 digitalWrite(ENB,HIGH);
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,LOW);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);
 Serial.println("Right");
}
void stop(){
 digitalWrite(ENA,HIGH);
 digitalWrite(ENB,HIGH);
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,HIGH);
 Serial.println("Stop");
}
//before execute loop() function, 
//setup() function will execute first and only execute once
void setup() {
 Serial.begin(9600);//open serial and set the baudrate
 pinMode(IN1,OUTPUT);//before useing io pin, pin mode must be set first 
 pinMode(IN2,OUTPUT);
 pinMode(IN3,OUTPUT);
 pinMode(IN4,OUTPUT);
 pinMode(ENA,OUTPUT);
 pinMode(ENB,OUTPUT);
}
//Repeat execution
void loop() {
 forward(); //go forward
 delay(5700);//delay 1000 ms
 right(); //go back
 delay(500);
 forward(); //turning left
 delay(6600);
 right(); //turning right
 delay(500);
 forward(); //turning left
 delay(6500);
 right ();
 delay(1000);
 stop(); //turning left
 delay(8000);
 forward();
 delay (6000);
 left ();
 delay(500);
 forward();
 delay (6000);
 left ();
 delay(500);
 forward ();
 delay (6000);
 left ();
 delay(1000);
 stop ();
 delay (10000);
 
}
Voici un programme simple qui permet de faire un fonctionnement de véhicule autonome qui évite les obstacles.
 
																		 
	