Étape 3: Code
[code]Version 3.0 par Owen Sobel
Ce programme est utilisé pour contrôler un robot à l’aide d’une application qui communique avec Arduino via un module bluetooth.
Erreur Code graphique : Code 01 ; Turnradius est supérieure à la vitesse ; Code 02 ; La vitesse est supérieure à 255 ;
#define in1 //L298n 5 broches de moteur.
#define in2 6
#define in3 10
#define in4 11
#define LED 13
commande int ; Int pour stocker l’état de commande app.
int vitesse = 204 ; 0 - 255.
int Speedsec ;
buttonState int = 0 ;
int lastButtonState = 0 ;
int Turnradius = 0 ; Définir le rayon d’un virage, 0 - 255 Note : le robot va mal fonctionner si c’est supérieur à int vitesse.
int brakeTime = 45 ;
int brkonoff = 1 ; 1 pour le système de freinage électronique, 0 pour la normale.
void setup() {}
pinMode (in1, sortie) ;
pinMode (in2, sortie) ;
pinMode (in3, sortie) ;
pinMode (in4, sortie) ;
pinMode (LED, sortie) ; Définir l’axe de la LED.
Serial.Begin(9600) ; Régler le débit en bauds à votre module Bluetooth.
}
void loop() {}
Si (Serial.available() > 0) {}
commande = Serial.read() ;
Stop() ; Initialiser avec moteurs effondrés.
interrupteur (commande) {}
case « F » :
mémoire ;
rupture ;
case « B » :
Back() ;
rupture ;
case « L » :
Left() ;
rupture ;
case « R » :
Right() ;
rupture ;
case « G » :
forwardleft() ;
rupture ;
affaire « I » :
forwardright() ;
rupture ;
case « H » :
backLeft() ;
rupture ;
Case « J » :
backright() ;
rupture ;
affaire « 0 » :
Vitesse = 100 ;
rupture ;
affaire « 1 » :
Vitesse = 140 ;
rupture ;
affaire « 2 » :
Vitesse = 153 ;
rupture ;
affaire « 3 » :
Vitesse = 165 ;
rupture ;
affaire « 4 » :
Vitesse = 178 ;
rupture ;
affaire « 5 » :
Vitesse = 191 ;
rupture ;
affaire « 6 » :
Vitesse = 204 ;
rupture ;
affaire « 7 » :
Vitesse = 216 ;
rupture ;
affaire « 8 » :
Vitesse = 229 ;
rupture ;
cas « 9 » :
Vitesse = 242 ;
rupture ;
case « q » :
Vitesse = 255 ;
rupture ;
}
Speedsec = Turnradius ;
Si (brkonoff == 1) {}
brakeOn() ;
} else {}
brakeOff() ;
}
}
}
mémoire Sub {}
analogWrite (in1, vitesse) ;
analogWrite (in3, vitesse) ;
}
back() Sub {}
analogWrite (in2, vitesse) ;
analogWrite (in4, vitesse) ;
}
left() Sub {}
analogWrite (in3, vitesse) ;
analogWrite (in2, vitesse) ;
}
right() Sub {}
analogWrite (in4, vitesse) ;
analogWrite (in1, vitesse) ;
}
void forwardleft() {}
analogWrite (in1, Speedsec) ;
analogWrite (in3, vitesse) ;
}
void forwardright() {}
analogWrite (in1, vitesse) ;
analogWrite (in3, Speedsec) ;
}
void backright() {}
analogWrite (in2, vitesse) ;
analogWrite (in4, Speedsec) ;
}
void backleft() {}
analogWrite (in2, Speedsec) ;
analogWrite (in4, vitesse) ;
}
Sub Stop() {}
analogWrite (in1, 0) ;
analogWrite (in2, 0) ;
analogWrite (in3, 0) ;
analogWrite (in4, 0) ;
}
void brakeOn() {}
Voici l’utilisation future : un système de freinage électronique !
lire la broche d’entrée bouton poussoir :
buttonState = command ;
comparer le buttonState à son état antérieur
Si (buttonState! = lastButtonState) {}
Si l’État a changé, incrémenter le compteur
Si (lastButtonState == « F ») {}
Si (buttonState == les de ') {}
Back() ;
Delay(brakeTime) ;
Stop() ;
}
}
Si (lastButtonState == « B ») {}
Si (buttonState == les de ') {}
mémoire ;
Delay(brakeTime) ;
Stop() ;
}
}
Si (lastButtonState == « L ») {}
Si (buttonState == les de ') {}
Right() ;
Delay(brakeTime) ;
Stop() ;
}
}
Si (lastButtonState == « R ») {}
Si (buttonState == les de ') {}
Left() ;
Delay(brakeTime) ;
Stop() ;
}
}
}
enregistrer l’état actuel comme le dernier État,
pour la prochaine fois dans la boucle
lastButtonState = buttonState ;
}
void brakeOff() {}
}
[/ code]