Étape 3: Code pour la Rover
int E1 = 6 ; M1 Régulateur de vitesse
int E2 = 5 ; M2 Contrôle de la vitesse
int M1 = 8 ; M1 Contrôle de Direction
int M2 = 7 ; M2 Contrôle de Direction
int LED = 13 ;
Sub setup(void)
{
int i ;
pour (i = 5; i < = 8; i ++)
pinMode (i, sortie) ;
pinMode (13, sortie) ;
Serial.Begin(9600) ;
}
Sub loop(void)
{
tandis que (Serial.available() < 0) {} / / attendre jusqu'à la réception d’un caractère
val As Char = Serial.read() ;
int leftspeed = 255 ; 255 est la vitesse maximale
int rightspeed = 255 ;
Switch(Val) / / effectuer une action selon la commande
{
case « w »: / / aller de l’avant
vers l’avant (leftspeed, rightspeed) ;
rupture ;
de cas ': / / déplacer vers l’arrière
Reverse (leftspeed, rightspeed) ;
rupture ;
cas « a »: / / tourner à gauche
gauche (leftspeed, rightspeed) ;
rupture ;
affaire aurait ": / / à droite
droite (leftspeed, rightspeed) ;
rupture ;
case « l »: / / LED
blink_LED() ;
rupture ;
case « f »: / / Stop
Stop() ;
rupture ;
par défaut :
rupture ;
}
}
void stop (void) //Stop
{
digitalWrite(E1,LOW) ;
digitalWrite(E2,LOW) ;
}
avant Sub (char a, char b).
{
analogWrite (E1, un) ;
digitalWrite(M1,LOW) ;
analogWrite (E2, b) ;
digitalWrite(M2,LOW) ;
}
Sub inverse (char a, char b).
{
analogWrite (E1, un) ;
digitalWrite(M1,HIGH) ;
analogWrite (E2, b) ;
digitalWrite(M2,HIGH) ;
}
void gauche (char a, char b).
{
analogWrite (E1, un) ;
digitalWrite(M1,HIGH) ;
analogWrite (E2, b) ;
digitalWrite(M2,LOW) ;
}
void droit (char a, char b).
{
analogWrite (E1, un) ;
digitalWrite(M1,LOW) ;
analogWrite (E2, b) ;
digitalWrite(M2,HIGH) ;
}
Sub blink_LED ()
{
digitalWrite (LED, haute) ;
Delay(200) ;
digitalWrite (LED, faible) ;
Delay(100) ;
digitalWrite (LED, haute) ;
Delay(200) ;
digitalWrite (LED, faible) ;
}