Convertisseur Binaire

L’objectif de cette activité est de réaliser un convertisseur Binaire → Décimal et Décimal Binaire, puis de réaliser un montage capable de convertir un nombre donné en binaire en son opposé.

 

Binaire Décimal : avec des boutons

Afin d’acquérir le code binaire d’un nombre, on utilise 4 boutons poussoirs.

Matériel nécessaire :

  • 4 boutons poussoirs, et 4 résistances de rappel 1kΩ (Marron – Noir – Rouge)

Calculer combien de nombres différents on peut coder avec 4 bits.

 

Lire l’article : Le bouton poussoir

Câbler les 4 boutons, en utilisant le grand breadboard, sur les ports numériques 2, 3, 4 et 5 de l’Arduino.

Attention à bien respecter les consignes de câblage données dans l’article sur les boutons poussoirs !

 

Tester un simple programme qui affiche périodiquement (toutes les 0,5 s) l’état des boutons dans le moniteur série, de sorte que chaque ligne soit une représentation binaire du nombre.
On utilisera les fonctions print() et println()  (voir bibliothèque Serial)
Exemple d’affichage :
0000
0000
0000
0001
0001
0101
0101
0001
0011
en cas de problème ...
Si le moniteur série n’affiche rien (ou rien de lisible) :

  • vérifier que le port a bien été initialisé (fonction Serial.begin())
  • vérifier que la vitesse de transfert du moniteur série est bien identique à celle utilisée pour l’initialisation

Si rien ne se passe :

  • vérifier que le micrologiciel a bien été téléversé (et que le téléversement s’est bien déroulé)

 

Il faut maintenant convertir ce nombre au format décimal.

On va pour cela multiplier chaque bit (de rang \(i\)) par son poids (de valeur \(2^i\)).

Écrire une fonction bin2dec() permettant d’obtenir un entier positif à partir de 4 booléens.
int bin2dec(bool a, bool b, bool c, bool d) {
   // à compléter ...
}

Il peut être nécessaire de consulter à nouveau l’article sur les fonctions, et celui sur les systèmes de numération.

 

 

 

 

Modifier la fonction loop() de sorte d’afficher, en plus du code binaire formé par l’appui sur les boutons, la valeur hexadécimale du nombre.
Pour l’affichage au format hexadécimal, consulter la documentation de la fonction Serial.print().
Exemple d’affichage :
0000 = 0
0000 = 0
0000 = 0
0001 = 1
0001 = 1
0101 = 5
0101 = 5
1101 = D
1101 = D

 

Pour coder des nombres relatifs, il faut adopter le code complément à 2.

Écrire une fonction bin2dec_rel() permettant d’obtenir un entier relatif à partir de 4 booléens.
int bin2dec_rel(bool a, bool b, bool c, bool d) {
   // à compléter ...
}

Il peut être nécessaire de consulter à nouveau l’article sur le codage des entiers relatifs.

 

 

 

 

 


Binaire Décimal : avec des LEDs

Afin d’afficher le code binaire d’un nombre, on utilise 4 LEDs.

Matériel nécessaire :

  • 4 LEDs, et 4 résistances 220Ω (Rouge – Rouge – Marron)

Câbler les 4 LEDs, en utilisant le grand breadboard, sur les ports numériques 8, 9, 10 et 11 de l’Arduino (ne pas décâbler les boutons, ils servirons pour la suite !).

Attention à bien respecter les consignes de câblage données dans l’article sur les LEDs !

 

Lire l’article :

Écrire un programme permettant d’acquérir puis d’afficher, via le moniteur série, un nombre au format hexadécimal, compris entre 0 et F.
aide ...
  • Configurer le moniteur série afin qu’il n’envoie pas de caractères de fin de ligne :
  • Pour lire les informations, utiliser la fonction Serial.read(), puis convertir l’octet obtenu en un caractère hexadécimal grâce à l’argument base de la fonction Serial.print().
Écrire une fonction dec2bin() permettant de convertir un nombre décimal en code binaire.
aide ...
  • la fonction pourra être une procédure (qui ne renvoie pas de valeur), définie de la manière suivante :
int b[4]; // array de int pour stocker les 4 bits (variable globale)
void dec2bin(int d, int *b) { 
   // à compléter ...
}
  • il est conseillé d’utiliser la méthode de la division euclidienne (voir le cours sur le codage binaire naturel) (La fonction print() permet un affichage des nombres en base 2, mais ne permettra pas d’utiliser des LEDs pour afficher le nombre !) :
    pour cela, on peut adopter l’algorithme suivant :
entier : n // nombre à coder en binaire
tableau de 4 octets : b // bits du nombre codé en binaire
pour i allant de 0 à 3 faire
   b[i] = d%2  // reste de la division euclidienne
   n = n/2
fin pour
Exemple d’affichage :
5 : 0101
1 : 0001
2 : 0010
6 : 0110
0 : 0000
F : 1111

Terminer le programme en alimentant les 4 LEDs, via leurs ports numériques, pour afficher les 4 bits du nombre envoyé via le moniteur série.

Nombre opposé : des boutons et des LEDs

Utiliser les fonctions et câblages réalisés précédemment pour réaliser un montage permettant de convertir un nombre en son opposé : à l’aide des boutons l’utilisateur compose le code binaire d’un entier relatif, et l’Arduino affiche l’opposé de ce nombre avec les LEDs.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *