Le compteur binaire
Quatre LED qui comptent de 0 à 15 en binaire. Tu vois enfin, de tes yeux, comment un ordinateur stocke un nombre.
Tout ce que fait ton téléphone - photos, musique, messages - est stocké exactement comme ça : des suites de 0 et de 1.
SunuMake Découverte
Tes premiers pas avec Arduino - 8 composants inclus.
Ce qu'il faut sortir du kit
Prépare tout avant de commencer : c'est plus agréable que de fouiller la boîte au milieu du câblage.
- 1Carte Arduino UNO
- 1Plaque d'essai (breadboard)
- 4LED— même couleur de préférence, pour bien lire le nombre
- 4Résistances 220 Ω
- 5Fils de connexion
Le schéma des branchements
Débranche toujours l'USB avant de modifier un câblage, et vérifie ce tableau ligne par ligne avant de rebrancher.
| On relie | à | en passant par |
|---|---|---|
| LED n°1 (poids 1) — patte longue | Broche 2 | Résistance 220 Ω |
| LED n°2 (poids 2) — patte longue | Broche 3 | Résistance 220 Ω |
| LED n°3 (poids 4) — patte longue | Broche 4 | Résistance 220 Ω |
| LED n°4 (poids 8) — patte longue | Broche 5 | Résistance 220 Ω |
| Toutes les pattes courtes | GND | Rail bleu (−) |
Les étapes
- 1
Matériel
4 LED, 4 résistances 220 Ω, 5 fils. Aligne les LED côte à côte sur la breadboard : ce sera plus lisible.
- 2
Câble les quatre LED
De droite à gauche : broche 2, broche 3, broche 4, broche 5. Chaque patte longue passe par sa résistance, chaque patte courte va au rail bleu (−), relié à GND. L'ordre compte : la LED de droite représente le chiffre le plus petit.
- 3
Téléverse et compte
Copie le code et téléverse. Les LED affichent 0, puis 1, puis 2... jusqu'à 15, puis reviennent à 0. Regarde bien la LED de droite : elle change à chaque étape. Celle de gauche ne change qu'une fois sur huit.
- 4
Décode toi-même
Chaque LED vaut un nombre : la première 1, la deuxième 2, la troisième 4, la quatrième 8. Une LED allumée = on ajoute sa valeur. Allumées : 8 et 2 ? Le nombre affiché est 10. Essaie de lire quelques valeurs avant qu'elles ne changent.
- 5
Ralentis pour mieux voir
Passe le `delay(600)` à `1500`. Tu as le temps de décoder chaque nombre. C'est un excellent exercice pour ancrer le binaire.
Le programme à téléverser
Copie ce code dans l'IDE Arduino, branche ta carte en USB et clique sur le bouton « Téléverser » (la flèche en haut à gauche).
// Le compteur binaire - SunuMake// 4 LED = 4 bits = 16 valeurs possibles (de 0 à 15).const int LEDS[] = {2, 3, 4, 5}; // LEDS[0] = poids 1, LEDS[3] = poids 8void setup() { for (int i = 0; i < 4; i++) { pinMode(LEDS[i], OUTPUT); }}void loop() { for (int nombre = 0; nombre < 16; nombre++) { afficher(nombre); delay(600); }}// Allume les LED correspondant à l'écriture binaire du nombre.void afficher(int nombre) { for (int i = 0; i < 4; i++) { // bitRead(nombre, i) vaut 1 si le bit numéro i est à 1, sinon 0. digitalWrite(LEDS[i], bitRead(nombre, i)); }}Comment ça marche ?
Nous comptons en base 10 parce que nous avons dix doigts. Un ordinateur n'a que deux états possibles (courant / pas de courant), alors il compte en base 2.
En base 10, les colonnes valent 1, 10, 100, 1000... En base 2, elles valent 1, 2, 4, 8, 16... - des puissances de deux. Le nombre 10 s'écrit donc 1010 en binaire : une fois 8, zéro fois 4, une fois 2, zéro fois 1.
Chacune de ces colonnes s'appelle un bit. Avec 4 bits on écrit 16 valeurs (2⁴), avec 8 bits 256 valeurs (2⁸) - d'où le 255 maximum qu'on a croisé dans analogWrite() du projet « La LED qui respire ». Tout est lié.
bitRead(nombre, i) demande simplement : « le bit numéro i de ce nombre vaut-il 1 ? ». Comme digitalWrite() attend justement un 1 ou un 0, on peut brancher directement l'un dans l'autre. Élégant.