Ligne 1 : |
Ligne 1 : |
− | {{traduction}} | + | == Introduction == |
| + | Utiliser un {{pl|1414|MOD-LCD1x9}} d'Olimex avec ESP8266 sous MicroPython |
| | | |
− | == Introduction ==
| + | [[Fichier:MICROPYTHON-MOD-LCD1x9.jpg|480px]] |
| + | |
| + | MOD-LCD1x9 est un afficheur LCD Alphanumérique 9 positions d'Olimex utilisant le '''bus I2C''' du port UEXT. |
| + | |
| + | [[Fichier:MICROPYTHON-MOD-LCD1x9-01.jpg|360px]] |
| + | |
| + | Cette carte expose: |
| + | * Utilise le '''bus I2C''' |
| + | * Propose un point décimal pour chaque caractère |
| + | * Propose une barre de sélection (UnderBar) en dessous de chaque caractère (pratique pour indiquer la sélection d'une option). |
| + | * Un connecteur UEXT pour faciliter le raccordement |
| + | |
| + | La bibliothèque MicroPython {{fname|modlcd19.py}} permet de manipuler les points et les barre de sélections de l'afficheur, ce que ne permet pas la bibliothèque Arduino originale :-) |
| | | |
| == Matériel utilisé == | | == Matériel utilisé == |
| + | Pour réaliser ce test, nous avons utilisé: |
| + | |
| + | {{parts-begin}} |
| + | |
| + | {{parts-item |
| + | |name=ESP8266-EVB |
| + | |descr=ESP8266 Evaluation Board d'Olimex |
| + | |img=ESP8266-EVB.png |
| + | |link=http://shop.mchobby.be/product.php?id_product=668 |
| + | |qty=1 |
| + | }} |
| + | |
| + | {{parts-item |
| + | |name=MOD-LCD1x9 |
| + | |descr=Carte MOD-LCD1x9 d'Olimex. Afficheur LCD 9 caractères alphanumériques sur bus I2C. |
| + | |img=MOD-LCD1x9.png |
| + | |link=http://shop.mchobby.be/product.php?id_product=1413 |
| + | |qty=1 |
| + | }} |
| + | |
| + | {{parts-item |
| + | |name=UEXT-SPLITTER |
| + | |descr=Multiplicateur de port UEXT. Permettra de brancher la carte + Interface USB-Serie |
| + | |img=UEXT-SPLITTER.png |
| + | |link=http://shop.mchobby.be/product.php?id_product=1412 |
| + | |qty=1 |
| + | }} |
| + | |
| + | {{parts-item |
| + | |name=USB-SERIE-TTL |
| + | |descr=Un cable console pour pouvoir communiquer avec l'ESP8266 |
| + | |img=USB-SERIE-TTL.png |
| + | |link=http://shop.mchobby.be/product.php?id_product=144 |
| + | |qty=1 |
| + | }} |
| + | |
| + | {{parts-end}} |
| | | |
| == Raccordements == | | == Raccordements == |
| + | Pour commencer, j'utilise un {{pl|1412|UEXT Splitter}} pour dupliquer le port UEXT. J'ai en effet besoin de raccorder à la fois le câble console pour communiquer avec l'ESP8266 en REPL et raccorder le module MOD-LCD1x9 |
| + | |
| + | [[Fichier:MICROPYTHON-MOD-LCD1x9-20.jpg|512px]] |
| + | |
| + | == Flasher MicroPython == |
| + | Pour flasher MicroPython sur l'ESP8266-DEV (module ESP8266) qui équipe la carte d'évaluation d'Olimex (ESP8266-EVB), nous vous proposons les lectures suivantes: |
| + | |
| + | {{ESP8266-MICROPYTHON-SUBTUTO}} |
| | | |
| == Bibliothèque modlcd19 == | | == Bibliothèque modlcd19 == |
| + | Avant d'utiliser le script d'exemple, il est nécessaire de transférer la '''bibliothèque modlcd19''' sur votre carte MicroPython. |
| + | |
| + | La [https://github.com/mchobby/esp8266-upy/tree/master/modlcd1x9 bibliothèque '''modlcd1x9''' et sa documentation] sont disponibles dans le [https://github.com/mchobby/esp8266-upy GitHub esp8266-uPy]. |
| + | |
| + | {{download-box|Télécharger la bibliothèque ESP8266-uPy|https://github.com/mchobby/esp8266-upy/archive/master.zip}} |
| + | |
| + | Puis: |
| + | * Copier le fichier {{fname|modlcd19.py}} sur la carte micropython. |
| + | |
| + | Vous pouvez également transférer le script de test {{fname|test.py}} et {{fname|testflt.py}} sur la carte MicroPython. |
| | | |
| == Code == | | == Code == |
Ligne 19 : |
Ligne 87 : |
| | | |
| En adaptant le code (et les raccordements du bus I2C), vous pourriez tout aussi facilement faire fonctionner des cartes ESP8266 comme {{pl|67|Feather ESP8266 Huzza}} ou {{cl|121|Wemos D1}} ou même {{pl|570|MicroPython Pyboard}}. | | En adaptant le code (et les raccordements du bus I2C), vous pourriez tout aussi facilement faire fonctionner des cartes ESP8266 comme {{pl|67|Feather ESP8266 Huzza}} ou {{cl|121|Wemos D1}} ou même {{pl|570|MicroPython Pyboard}}. |
| + | |
| + | === Les méthodes importantes === |
| + | Les méthodes {{fname|point()}} et {{fname|selection}} permettent respectivement d'activer le point et la barre de sélection (tout en bas) dans la matrice. |
| + | |
| + | La méthode {{fname|write()}} permet d'afficher du texte, éventuellement le faire défiler s'il est trop long. Cette méthode accepte également un entier ou un float (justifié à droite). Le meilleur restant pour la fin, il est également possible d'appliquer une chaîne de formatage, ce qui permet de limiter les décimales sur un float ou d'afficher des unités. |
| + | |
| + | Exemple d'utilisation de {{fname|write()}} pour des valeurs numériques |
| + | lcd.write( 12.4693, format='%.3f v' ) => afficher avec 3 décimales, justifié à droite => 12.469 v |
| + | lcd.write( 12.13 , format='%5d' ) => afficher un Float comme un entier, justifié à droite => " 12" |
| | | |
| === Exemple Simple === | | === Exemple Simple === |
| + | Cette exemple démontre l'usage de la bibliothèque. |
| + | |
| + | <syntaxhighlight lang="python"># Utilisation du MOD-LCD1x9 d'Olimex avec un ESP8266 sous MicroPython |
| + | # |
| + | # Shop: [UEXT LCD1x9 board (MOD-RGB)](http://shop.mchobby.be/product.php?id_product=1414) |
| + | # Wiki: https://wiki.mchobby.be/index.php?title=MICROPYTHON-MOD-LCD1x9 |
| + | |
| + | from machine import I2C, Pin |
| + | from time import sleep |
| + | from modlcd19 import MODLCD1x9 |
| + | |
| + | i2c = I2C( sda=Pin(2), scl=Pin(4) ) |
| + | lcd = MODLCD1x9( i2c ) # Activer tous les segments |
| + | |
| + | # Afficher avec 9 caractères Max |
| + | lcd.write( '123456789' ) |
| + | sleep( 2 ) |
| + | lcd.write( '<mchobby>' ) |
| + | sleep( 2 ) |
| + | |
| + | # Afficher une longue chaîne de caractère |
| + | lcd.write( 'Hey, this is a message from Belgium' ) |
| + | |
| + | # Activer un point |
| + | lcd.write( 'ABCDEFGHI') |
| + | for i in range( 9 ): |
| + | lcd.point( i+1, True, force_update=True ) |
| + | sleep( 1 ) |
| + | lcd.point( i+1, False, force_update=True ) |
| + | |
| + | sleep( 1 ) |
| + | |
| + | # Activer la barre sélection |
| + | for i in range( 9 ): |
| + | lcd.selection( i+1, True, force_update=True ) |
| + | sleep( 1 ) |
| + | lcd.selection( i+1, False, force_update=True ) |
| + | |
| + | |
| + | lcd.write( 'The end.') |
| + | print( "That's the end folks")</syntaxhighlight> |
| | | |
| === Exemple Float === | | === Exemple Float === |
| + | Cet exemple, provenant du fichier {{fname|testflt.py}}, affiche une valeur avec une précision à 3 décimales et l'unité Volts (ex: 12.357 v). |
| + | |
| + | <syntaxhighlight lang="python"># Test the Olimex MOD-LCD1x9 board. |
| + | # |
| + | # Display float value (justified on the right) |
| + | from machine import I2C, Pin |
| + | from time import sleep |
| + | from modlcd19 import MODLCD1x9 |
| + | |
| + | i2c = I2C( sda=Pin(2), scl=Pin(4) ) |
| + | lcd = MODLCD1x9( i2c ) # Active tous les segments |
| + | |
| + | # Afficher une valeur décimale |
| + | volt = 15.125 |
| + | while True: |
| + | # Incrémente la valeur pour démonstration |
| + | volt = volt + 0.033 |
| + | # Afficher un float avec 3 décimales. |
| + | # Affiche également une unité: "v" pour volts |
| + | # voir: https://docs.python.org/3/library/string.html#format-examples |
| + | lcd.write( volt, format='%.3f v' ) |
| + | |
| + | # Donner du temps au LCD pour se rafraîchir |
| + | sleep( 0.100 ) |
| + | |
| + | print( "That's the end folks")</syntaxhighlight> |
| | | |
| == Où acheter == | | == Où acheter == |
| * Le {{pl|668|ESP8266-EVB}} utilisé dans ce tutoriel pour faciliter le raccordement. Pourrait fonctionner avec un {{pl|846|Feather ESP8266}} avec le raccordement adéquat. | | * Le {{pl|668|ESP8266-EVB}} utilisé dans ce tutoriel pour faciliter le raccordement. Pourrait fonctionner avec un {{pl|846|Feather ESP8266}} avec le raccordement adéquat. |
| * Le {{pl|667|ESP8266-DEV}} module équipant la carte ESP8266-EVB. | | * Le {{pl|667|ESP8266-DEV}} module équipant la carte ESP8266-EVB. |
− | * Le {{pl||module xxxxxxxxxxxxx}} | + | * Le {{pl|1414|module MOD-LCD1x9}} afficheur à cristaux liquide, bus I2C. |
| * Le {{pl|1412|module UEXT Splitter}} | | * Le {{pl|1412|module UEXT Splitter}} |
| * La {{cl|67|La gamme IoT/ESP8266}} disponible chez MC Hobby | | * La {{cl|67|La gamme IoT/ESP8266}} disponible chez MC Hobby |