Étape 9: Le Code final
À cette étape, le Robot peut suivre une boucle constante et va le faire sans arrêt.
Le programme boucle serait :
void loop ()
{
readLFSsensors() ; lire les capteurs, les valeurs de stockage à capteurs et calculer « error »
calculatePID() ;
motorPIDcontrol() ;
}
Mais pour une opération plus complete et réelle, il est important d’ajouter au moins un couple de bases « commandes » faits "avec la ligne". Par exemple, nous allons introduire une nouvelle variable: « mode ». Nous allons définir les 3 États pour cette variable :
mode :
- #define arrêté 0
- #define FOLLOWING_LINE 1
- #define NO_LINE 2
Si tous les capteurs trouver une ligne noire, la sortie de capteurs serait: 1 1 1 1 1. Dans ces conditions, nous pouvons définir la mode comme « Arrêté » et le Robot doit effectuer un « arrêt complet ».
si ((LFSensor [0] == 1) & & (LFSensor [1] == 1) & & (LFSensor [2] == 1) & & (LFSensor [3] == 1) & & (LFSensor [4] == 1)) {mode = STOPPED ; }
- Autre situation commune avec des Robots ligne suiveur est où il ne fonde « line » ou la sortie des capteurs est: 0 0 0 0 0. Dans ce cas nous pouvons programmer pour rebrousser chemin 180o ou tourner en petits angles jusqu'à ce qu’une ligne est de trouver et la condition de suivre ligne normale reprend.
combinaison else if ((LFSensor [0] == 0) & & (LFSensor [1] == 0) & & (LFSensor [2] == 0) & & (LFSensor [3] == 0) & & (LFSensor [4] == 0)) {mode = NO_LINE;)
La boucle complète () serait :
void loop()
{
readLFSsensors() ;
interrupteur (mode)
{
cas arrêté :
motorStop() ;
rupture ;
affaire NO_LINE :
motorStop() ;
motorTurn (gauche, 180) ;
rupture ;
affaire FOLLOWING_LINE :
calculatePID() ;
motorPIDcontrol() ;
rupture ;
}
}
Le code réel final sera intégré une logique supplémentaire et également une variable doit être initialisée, etc. Au cours de l’explication des étapes, j’ai laissés pour plus de simplicité, mais tout doit être clair en regardant code final.
Ci-dessous le Code final de Arduino :
motorFuntions.ino robotDefines.h sensorFuntions.ino smart_MJRoBot_Line_Follower_V2.INO generalFunctions.ino