Fonction AUTO GO
- Détails
- Catégorie : Kit robot arduino
- Publication : jeudi 24 septembre 2020 13:03
- Écrit par Bensky
- Affichages : 46664
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.