MicroPython-4x7
Introduction
Que pourrait-il y avoir de mieux qu'une seul LED? Plein de LEDs! Elle permettent de réaliser des petits affichages en utilisant des afficheurs 4 chiffres à 7 segments. De telles matrices utilisent le 'multiplexage'. Pour contrôler 7 segments de leds, il faut donc 14 broches. Cela représente donc beaucoup de broches, il existe bien des circuits de contrôle comme le MAX7219 pour gérer des matrices mais cela nécessite beaucoup de raccordements qui utilisent une tonne de place.
AdaFruit à bien entendu trouvé une solution à cette pesante situation et a mis au point un breakout permettant de contrôler des tonnes de LEDs en segment sans devoir passer la moitié de la journée à faire des raccordements :-) Ce breakout permet de contrôler des sections de 4 chiffres à 7 segments (en bleu, vert, jaune). Ajouter des afficheurs LED a vos projets devient totalement trivial.
Crédit: AdaFruit Industries www.adafruit.com
Souder l'afficheur
Toutes les images ci-dessous: crédit AdaFruit Industries
Voila, nous sommes maintenant prêt à brancher l'afficheur sur notre PyBoard.
Brancher sur la PyBoard
Voici les raccordements opérés:
PyBoard | Breakout | Description |
X9 | C | SCL - I2C Clock, le signal d'horloge I2C |
X10 | D | SDA - I2C Data, la ligne de donnée |
GND | - | Masse |
VIN | + | Le breakout s'alimente en 5V. Nous allons donc utiliser VIn (il ne faudra pas dépasser 5V sur l'alimentation de la PyBoard si vous utilisez un bloc pile!!) |
La bibliothèque
Frederic Boulanger (voir section ressources) à réaliser une excellent classe bibliothèque pour prendre le contrôle de cet afficheur.
Télécharger
Vous pourrez trouver le code de son module led4x7.py dans le lien suivant:
Note: L'archive contient également un code de test.
Mettre sur la PyBoard
Branchez votre Pyboard sur votre ordinateur, ce doit apparaître comme un lecteur Flash.
Nous allons copier le module led4x7.py et le fichier de test sur notre PyBoard.
Tester l'afficheur
Ouvrez une ligne de commande sur votre Pyboard (voyez notre tutoriel "L'invite REPL").
Nous allons commencer par vérifier que les fichiers soient bien là en les listant:
import os os.listdir()
Nous devons clairement voir apparaître le fichier "led4x7.py" et le fichier de test dans la liste (comme sur l'image ci-dessous).
Maintenant que nous avons localiser le fichier, nous allons pouvoir l'importer
from led4x7 import *
Selon le montage réalisé, nous nous trouvons sur le bus I2C(1) et l'adresse du breakout est 0x70 (adresse par défaut).
Nous allons néanmoins scanner le bus I2C et identifier l'adresse de notre breakout. Dans ce cas de figure, notre breakout est un esclave et notre PyBoard le maitre (master) du bus.
from pub import I2C i2c = I2C( 1, I2C.MASTER ) i2c.scan()
cela retourne la liste suivante.
Nous pouvons constater que l'adresse 112 (décimale) est bien utilisée (112 décimal correspond à 70 en hexadécimal dont la notation est 0x70). Pour connaître la représentation d'une valeur décimale, vous pouvez utiliser l'instruction print( '%x' % 112 )
Créons maintenant notre objet led4x7 puisque nous connaissons tous les paramètres nécessaires.
led4x7 = LED4x7( addr=0x70, i2c=i2c ) led4x7.on() led4x7.displayNumber( 4567 ) led4x7.displayString( 'MCH' ) # le "M" ne peut pas être affiché -> rien a cette position led4x7.clear() led4x7.displayDigit( 2, 4 ) # Affiche un 4 en 3ieme position (position de 0 à 3) led4x7.setDots(True) # affiche les doubles points.
Il y a d'autres exemples de méthodes utilisables comme blink pour le clignotement et set_brightness pour la luminosité.
Brancher plusieurs périphériques I2C
Pour raccorder un autre périphérique I2C (ou un autre afficheur 4x7 Segment) sur votre projet, il suffit de les brancher en parallèle (comme sur le diagramme ci-dessous).
Ressources
- Manip avec un afficheur LED sur bus I2C (CentraleSupélec.fr)
Un excellent article sur le développement du module led4x7.py
Une excellente référence d'apprentissage