Zumo32U4 linefollower
Configuration initiale
1. À partir du bureau de Windows ou du gestionnaire d'application, démarrez Arduino IDE :
2. Dans la barre à gauche, cliquer sur « Library Manager » recherchez « Zumo32U4 » et assurez-vous que la librairie soit installée. Appuyer sur « Install » si ce n’est pas le cas.
3. Allez dans « File => Preferences ». À droite de « Additional boards manger URLs », aussurez-vous d’avoir :
https://files.pololu.com/arduino/package_pololu_index.json
Copier et coller au besoin.
Appuyez sur « OK ».
4. Dans la barre à gauche, cliquer sur « Board Manager » recherchez « Pololu A-Star Boards » et assurez-vous d’y retrouver que la plaquette soit installée. Appuyer sur « Install » si ce n’est pas le cas.
5. Allez dans « File => Example => Zumo32U4 » et cliquez sur « LineFollower ».
6. Modifiez les ligne 27 et 28 pour qu’elles soient ainsi :
Zumo32U4LCD display; // Zumo32U4OLED display;
Cette modification permet de sélectionner le bon type d’écran qui est installé sur le robot. Le « // » fait ignorer la ligne au compilateur. Ainsi, le OLED est désactiver et le LCD est activé en tant qu’écran.
7. Brancher le robot Zumo à l’ordinateur à l’aide d’une câble USB et appuyer sur le bouton « Upload » :
Le robot devrait émettre une tonalité. Ignorez le message « Device code : 0x44 ».
8. Débranchez le robot du câble USB, assurez vous que le bouton des moteurs soit à « ON » et que la lumière bleue soit allumée et déposer le robot centrer une un ligne d’une parcours quelconque. Voyez comment le robot se comporte avant d’aller à la suite.
Modification du programme
9. Trouvez la ligne
const uint16_t maxSpeed = 400;
Ajoutez les lignes suivante en dessous.
const uint16_t maxSpeed = 400; // Paramètres PID const float kp = 1; // Action proportionnelle qui travaille avec l'erreur actuelle const float ti = 1; // Action intégrale (en seconde) qui travaille avec le passé de l'erreur const float td = 0.05; // Action dérivé (en seconde) qui travaille avec le futur de l'érreur
10. Trouvez la ligne
int16_t lastError = 0;
et changez la pour
float lastError = 0;
11. Trouvez les lignes
int16_t speedDifference = error / 4 + 6 * (error - lastError); lastError = error;
et changez les pour
float kperreur = kp*error; float accumulateur = accumulateur + kperreur; accumulateur = constrain(accumulateur, 0, 5*maxSpeed); float speedDifference = kperreur + 1/(1000*ti)*kperreur + (td/1000)*(kperreur-lastError); lastError = kperreur;