Page 103 - arduino_Neat
P. 103
23. DÉBUGGER
La réalisation de projets avec Arduino comporte une grande part d'essais et d'erreurs. Que ce
soit pour la partie électronique ou pour la programmation, il est fréquent pour les débutants,
mais aussi pour les plus avancés, de faire des erreurs. Or, alors que celles-ci sont parfois très
faciles à détecter, elles sont plus souvent « cachées » et demandent à être découvertes. Voilà
pourquoi une bonne pratique de la programmation et de la conception de circuits est de mise
(voir chapitres « Précautions d'utilisation » et « Bien structurer son code »).
En programmation
Lorsqu'un problème survient ou que les choses ne se déroulent pas comme attendu, il est
important d'identifier le problème en utilisant une approche méthodique et logique. Pour les
problèmes de programmation, une pratique courante est de valider les différentes parties de
code séparément, pour identifier la ou les parties du code qui occasionnent une anomalie. Pour
ce faire, il est facile de mettre sous commentaire des sections complètes d'instructions en
utilisant /* et */. Ensuite, il est important de prendre connaissance de l'état de nos variables,
capteurs et autres. Utiliser la fonction Serial.println () pour faire afficher dans le moniteur sériel
nos valeurs est très utile, et peut-être combiné avec des caractères nous indiquant où le
Arduino se trouve dans le code. Par exemple le code suivant :
int valeurCapteur = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
// afficher qu'on lit le capteur
Serial.print("lire capteur : ");
// lire capteur et afficher
valeurCapteur = analogRead(3);
Serial.println(valeurCapteur);
// vérifier si capteur est égal à 5
if (valeurCapteur=5) {
Serial.println("test réussi!");
}
delay(1000);
}
Ce programme devrait imprimer « test réussi » si la valeur du capteur est à 5.
L'utilisation d'un Serial.print() avec du texte (« lire capteur : ») nous permet de précéder
l'affichage de la valeur du capteur par un élément indiquant au niveau de la console à quoi
correspond le chiffre qui sera affiché. Remarquez le fait que nous utilisons Serial.print() pour
afficher le texte et rester sur la même ligne d'affichage, puis le Serial.println() pour afficher la
valeur et ensuite changer de ligne.
Notre programme comporte également un délai d'une seconde. Ceci nous donne le temps de
voir les informations affichées au moniteur. Autrement, les chiffres défileraient trop
rapidement. Attention ! En ajoutant des délais, il est aussi possible de perdre la bonne
exécution du programme dans son temps. Par exemple, des capteurs qui fournissent une
réponse rapide (l'impact avec un piézo, par exemple) fournissent une information qui se
déroule dans un très cours laps de temps. Ainsi, pendant que le programme attend avec
delay(), il est possible que l'événement que nous cherchons à observer se soit déjà déroulé !
103