Étape 4: Partie du Code
#include
#define utrigger 13 / / Arduino pin13 lié à l’ergot sur le capteur à ultrasons.
#define uecho 12 / / Arduino pin12 lié à la broche d’écho sur le capteur à ultrasons.
#define umaxdistance 250 / / distance maximale que nous voulons faire un ping pour (en centimètres). Distance maximum sensor est évalué à 400-500cm.
#define rightmotorinput1 //defining 3 le 11 broches à moteur logic1 en pont en H
#define rightmotorinput2 4 //defining les 10 broches à moteur logic2 en pont en H
#define leftmotorinput1 5 //defining le 9 broches à moteur logic3 en pont en H
#define leftmotorinput2 6 //defining 8 pin à moteur logique4 en pont en H
#define updownmotorinput1 7 //defining 8 pin à moteur logique4 en pont en H
#define updownmotorinput2 6
NewPing sonar (utrigger, uecho, umaxdistance) ;
int inByte ; variable pour stocker la valeur lue
enb int = 2 ;
void setup()
{/ / start port série à 9600 bits/s :
Serial.Begin(9200) ;
while (!. Serial)
{; / / attente pour port série pour se connecter. Nécessaire uniquement pour Leonardo
}
pinMode(rightmotorinput1,OUTPUT) ;
pinMode(rightmotorinput2,OUTPUT) ;
pinMode(leftmotorinput1,OUTPUT) ;
pinMode(leftmotorinput2,OUTPUT) ;
pinMode(updownmotorinput1,OUTPUT) ;
pinMode(updownmotorinput2,OUTPUT) ;
pinMode(enb,INPUT) ;
}
void loop()
{
Delay(500) ;
digitalWrite(enb,HIGH) ;
unsigned int nous = sonar.ping() ; Envoyer des ping, ping temps en microsecondes (nous).
Serial.Print ("Ping:") ; imprime les données entre les deux ""
Serial.Print(US / US_ROUNDTRIP_CM) ; Convertir les temps de ping à distance en cm et résultat d’impression (0 = distance définie hors plage)
Serial.println("cm") ;
Si (Serial.available() > 0)
{
inByte = Serial.read() ;
Switch (inByte)
{
case « r »: / / si le bot de série r impression se déplace à droite.
digitalWrite(rightmotorinput1,LOW) ;
digitalWrite(rightmotorinput2,HIGH) ;
digitalWrite(leftmotorinput1,HIGH) ;
digitalWrite(leftmotorinput2,LOW) ;
rupture ;
case « l »: / / si le bot de série l impression se déplace à gauche.
digitalWrite(rightmotorinput1,HIGH) ;
digitalWrite(rightmotorinput2,LOW) ;
digitalWrite(leftmotorinput1,LOW) ;
digitalWrite(leftmotorinput2,HIGH) ;
rupture ;
case « f »: / / si le bot de série f impression se déplace vers l’avant.
digitalWrite(rightmotorinput1,HIGH) ;
digitalWrite(rightmotorinput2,LOW) ;
digitalWrite(leftmotorinput1,HIGH) ;
digitalWrite(leftmotorinput2,LOW) ;
rupture ;
affaire « b »: / / si le bot de série b impression déplace à revers.
digitalWrite(rightmotorinput1,LOW) ;
digitalWrite(rightmotorinput2,HIGH) ;
digitalWrite(leftmotorinput1,LOW) ;
digitalWrite(leftmotorinput2,HIGH) ;
rupture ;
affaire aurait ": / / si le bot de série b impression déplace à revers.
digitalWrite(updownmotorinput1,HIGH) ;
digitalWrite(updownmotorinput2,LOW) ;
Delay(1000) ;
digitalWrite(updownmotorinput1,LOW) ;
digitalWrite(updownmotorinput2,LOW) ;
inByte = « 0 » ;
rupture ;
cas « u »: / / si le bot de série b impression déplace à revers.
digitalWrite(updownmotorinput1,LOW) ;
digitalWrite(updownmotorinput2,HIGH) ;
Delay(1000) ;
digitalWrite(updownmotorinput1,LOW) ;
digitalWrite(updownmotorinput2,LOW) ;
inByte = « 0 » ;
rupture ;
affaire ' t » :
digitalWrite(rightmotorinput1,HIGH) ;
digitalWrite(rightmotorinput2,LOW) ;
digitalWrite(leftmotorinput1,HIGH) ;
digitalWrite(leftmotorinput2,LOW) ;
rupture ;
de cas ': / / si le bot de série b impression déplace à revers. Al :
digitalWrite(rightmotorinput1,LOW) ;
digitalWrite(rightmotorinput2,LOW) ;
digitalWrite(leftmotorinput1,LOW) ;
digitalWrite(leftmotorinput2,LOW) ;
rupture ;
affaire « 2 »: / / si le bot de série b impression déplace à revers.
Si (nous/US_ROUNDTRIP_CM < 20 & & nous/US_ROUNDTRIP_CM! = 0) / / vérifier à distance si distance inférieure à 5cm et pas égal à zéro
{
Serial.println("IOF") ;
digitalWrite(rightmotorinput1,LOW) ;
digitalWrite(leftmotorinput2,LOW) ;
digitalWrite(rightmotorinput2,LOW) ;
digitalWrite(leftmotorinput1,LOW) ;
Si (Serial.available()==1)
{
inByte = Serial.read() ;
if(inByte=='s')
{
Goto al ;
}
}
Delay(1000) ;
digitalWrite(rightmotorinput2,HIGH) ;
digitalWrite(rightmotorinput1,LOW) ;
digitalWrite(leftmotorinput2,HIGH) ;
digitalWrite(leftmotorinput1,LOW) ;
Si (Serial.available()==1)
{
inByte = Serial.read() ;
if(inByte=='s')
{
Goto al ;
}
}
Delay(2000) ;
digitalWrite(leftmotorinput1,HIGH) ;
digitalWrite(leftmotorinput2,LOW) ;
Si (Serial.available()==1)
{
inByte = Serial.read() ;
if(inByte=='s')
{
Goto al ;
}
}
Delay(2000) ;
digitalWrite(rightmotorinput1,LOW) ;
digitalWrite(rightmotorinput2,HIGH) ;
Si (Serial.available()==1)
{
inByte = Serial.read() ;
if(inByte=='s')
{
Goto al ;
}
}
Delay(1000) ;
}
d’autre
{
Serial.println("Else") ;
digitalWrite(rightmotorinput1,HIGH) ;
digitalWrite(rightmotorinput2,LOW) ;
digitalWrite(leftmotorinput1,HIGH) ;
digitalWrite(leftmotorinput2,LOW) ;
}
rupture ;
}
} /*
Delay(1000) ;
digitalWrite(rightmotorinput1,LOW) ;
digitalWrite(rightmotorinput2,LOW) ;
digitalWrite(leftmotorinput1,LOW) ;
digitalWrite(leftmotorinput2,LOW) ;
digitalWrite(rightmotorinput1,LOW) ;
digitalWrite(rightmotorinput2,LOW) ;
*/
}