Page 104 - arduino_Neat
P. 104

Lorsque nous copions ce programme, le compilons et l'exécutons, il ne fonctionne pas comme
            prévu ! Il contient délibérément un erreur. Même si le moniteur affiche une valeur différente de
            5 pour le capteur, il affiche « test réussi ». Pourquoi ? Analysons le problème. Nous pouvons
            être suffisamment certains que la valeur du capteur est bien lue, et qu'elle module en fonction
            des manipulations physiques que nous ferions sur celui-ci. Si ce n'était pas le cas, le problème
            résiderait alors dans le capteur lui-même ou la connexion entre la carte Arduino et le capteur,
            mais comme dans le cadre de cette simulation, la valeur du capteur est représentative du
            phénomène physique, notre problème se situe ailleurs.

            Quelles instructions suivent celui de l'affichage de la valeur du capteur ? L'énoncé conditionnel if
            (valeurCapteur=5). Nous pouvons être suffisamment certains que la valeur du capteur n'est pas
            5 en observant le moniteur sériel, mais, tout de même, la condition semble réalisée puisqu'il
            affiche « test réussi ». Comme aucune autre instruction ne modifie valeurCapteur, il doit
            forcément y avoir quelque chose qui cloche avec la fonction if(). Si vous êtes incapable de
            trouver quoi, une bonne pratique est de se référer à l'aide offerte par le programme (Help >
            Reference) (ou Ctrl+Maj+F en surlignant le mot clef recherché) afin de valider la bonne utilisation
            de la fonction, la syntaxe, etc. En observant la condition valeurCapteur=5, nous observons ainsi
            que nous nous sommes trompé d'opérateur ! Un « = » attribue la valeur à la variable qui se
            trouve à sa gauche. L'opérateur que nous aurions dû utiliser devrait plutôt être « == », qui
            retourne un vrai si les deux valeurs comparées sont équivalentes et un faux si elles ne le sont
            pas. Comme notre condition était une assignation, elle ne retournait pas faux et entraînait
            l'exécution des instructions comprises dans le if().
            Que doit-on retenir de cet exemple ?

            Lorsqu'on débugge un programme, il faut toujours avoir une approche modulaire, c'est-à-dire
            aborder chaque élément du code ou du circuit indépendamment des autres et s'assurer de son
            bon fonctionnement. Cette vérification doit également être faite de manière séquentielle, ou
            en ordre. On part soit de l'élément physique, pour remonter vers le circuit, puis vers l'Arduino,
            puis vers le programme. Ou l'inverse. Un autre exemple :
            Un capteur contrôle l'activation d'un moteur. Rien ne marche ! Docteur, que faire ?

                Vérifier que le capteur ne soit pas physiquement endommagé.
                Vérifier que le capteur soit bien connecté à son circuit.
                Vérifier que tous les composants du circuit soit bien connectés.
                Vérifier que la connexion au Arduino est bonne.
                Vérifier que la donnée est bien lue et l'afficher dans le moniteur.
                Vérifier les manipulations qui sont faites sur les variables ou la valeur du capteur.
                Vérifier que ces valeurs sont envoyées correctement au moteur.
                Vérifier que le moteur est bien connecté et non endommagé.
            À travers toutes ces étapes, il est possible de tester hors du contexte du programme les
            éléments. Par exemple, pour tester que le moteur répond bien, il est possible de créer un
            nouveau petit programme temporaire pour ne tester que le moteur. Souvent, utiliser des
            exemples fournis dans le menu File ou le menu Help est utile, puisque ces exemples ne
            contiennent pas d'erreur en théorie.

            En électronique

            Le même principe s'applique en électronique et avec l'électricité. Analyser chaque circuit, ou
            chaque partie de circuit, ou chaque composant, de manière modulaire nous permettra
            d’identifier un composant grillé, un circuit mal configuré, etc. tout en prenant soin d'avoir
            d'abord vérifié que notre source d'alimentation est d'abord sous tension ! L'outil par excellence
            pour débugger est bien évidemment le multimètre (voir chapitre « Les bases de
            l'électronique »).










            104
   99   100   101   102   103   104   105   106   107   108   109