Convertisseur binaire vers décimal [2/2] — Arduino
Il y a 15 jours, je vous proposais de confectionner un afficheur digital 3×7-segments, afin de lui attribuer un simple compteur. Aujourd’hui, nous allons voir comment brancher 8 commutateurs (ou boutons poussoirs pour cet exemple) sur notre carte Arduino afin de lui envoyer des valeurs binaires.
Pour cela c’est assez simple, il suffit d’ajouter les 8 switchs (boutons poussoirs) à la suite sur notre plaque d’essai. On les connecte au 5v d’un coté et aux broches analogiques A0 à A5 et numériques 12 et 13 comme suit:
Voyons maintenant quelles lignes de code nous allons modifier et ajouter à notre programme précédant (voir Convertisseur binaire vers décimale [1/2] — Arduino).
Pour commencer nous allons indiquer au programme les différentes broches connectées, avec la fonction #define. Par défaut les broches A0 à A5 sont des entrées analogiques, mais il est possible de les transformer en entrées numériques en indiquant simplement au programme qu’il s’agit des broches numériques 14 à 19. Selon notre câblage, les boutons poussoirs (switch) 1 et 2 (de droite à gauche) sont associés respectivement aux broches numériques 12 et 13. Les suivants sont quant à eux branchés aux broches analogiques A0 à A5 (14 à 19), le troisième bouton poussoir correspond (toujours selon notre branchement) à la broche A5 (19) et ainsi de suite.
Nous créons ensuite huit variables, qui auront la valeur 0 comme cela:
Dans notre setup(), nous déclarons que les switchs 1 à 8 sont utilisés comme sorties (OUTPUT).
Dans le loop() cette fois-ci, nous créons d’autres variables puis nous leurs indiquons de lire la valeur haute ou basse des connecteurs (switch1 à switch8).
Ensuite nous allons ajouter des conditions à l’aide de if(), si la valeur des boutons poussoirs est égale à 1, alors on attribue les variables (v1 à v8) de la valeur correspondant à celle de leurs rangs selon la règle des puissances de 2 (pour le binaire), mais si ce n’est pas le cas (else()) leurs valeurs restent à 0.
Voilà, maintenant nous déclarons que toutes les valeurs (v1 à v8) doivent être additionnées pour permettre à notre afficheur d’indiquer la bonne valeur suivant l’état appuyé (1) ou relâché (0) des différents boutons poussoirs.
Vous pouvez supprimer les lignes que nous avions écris pour le compteur, cependant nous allons en garder une partie.
Et nous créons la déclaration afficheur(), que nous avions invoqué précédemment. Dans cette déclaration, j’indique au programme les valeurs maximales contenues dans le rang des centaines, puis des dizaines et des unités, à l’aide du modulo (%). Merci à Loïc Horellou pour cette partie du code sans qui j’y aurais passé du temps.
C’est terminé, vous pouvez téléverser ce nouveau programme dans votre carte Arduino. Vous venez de créer un convertisseur binaire vers décimale, appréciez-le en appuyant sur un ou plusieurs boutons poussoirs et observez le résultat de la conversion.
Par exemple si vous pressez (de droite à gauche) le premier et le troisième bouton, vous verrez afficher 005, car 101 (en binaire) équivaut à 5 (en décimal). Pour aller plus loin, le premier bouton correspond au rang 1 (1×2^0) donc 1 et le troisième bouton correspond au rang 3 (1×2^2) ce qui donne 4; premier rang (1) plus troisième rang (4) égale 5. Vous ne pourrez qu’afficher la valeur maximale contenue dans 8 informations (nos 8 boutons poussoirs), c’est à dire 1 octet (8-bits) 255.
Rubrique: Section 17 | Commenter
Laissez un commentaire