- Informatique
- Arduino
- Projets
- Mécanique
python-lcm1602 est une classe d'abstraction permettant de communiquer avec un LCM1602 via le bus i2c. Ce circuit se base en fait sur un PCF8574 (qui est un driver d'entrées/sorties 8 ports) pré-câblé pour être utilisé avec des afficheurs LCD gérés par des contrôleurs de type HD44780
Ce circuit (et la classe) permet de gérer des afficheurs 16×2 et 20×4 lignes.
Le PCF8574 étant un driver 8bit, il est câblé pour utiliser l'afficheur LCD en mode 4 bit. Car 4 bit sont nécessaires à la gestion du contrôleur LCD (Read/Write, Enable, Register-Select + Rétro éclairage) et il reste donc 4 bit pour les données (D0…D4).
La classe python se charge de 'switcher' le HD44780 en mode 4 bit lors de son initialisation.
L'ensemble du code est commenté de manière suffisamment explicite, nous reprendrons juste ici les principales méthodes ainsi que le résultat fourni.
NOTA : Le code est compatible PyDOC, un simple 'help(lcm1602.lcm1602)' devrait permettre d'avoir un minimum d'informations sur la syntaxe.
Efface l'écran et retourne à la position 0,0 (ligne 1, colonne 1).
import lcm1602 lcd = lcm1602.lcm1602(address=0x27, bus=1, backlight=True, debug=True) lcd.ClearDisplay() >> [DEBUG] Accessing LCM1602 at address 0x27 on bus 1 with 2 rows >> [DEBUG] Switching to 4bit mode >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x28] >> >> [DEBUG] Clearing display >> [DEBUG] > Writing 1 bytes to register 0x0 [0x0C] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x08] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x2C] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x28] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x0C] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x08] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x1C] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x18]
Affiche un message à l'emplacement souhaité ligne/colonne (par défaut ligne 1, colonne 1).
Paramètres :
import lcm1602 lcd = lcm1602.lcm1602(address=0x27, bus=1, backlight=True, debug=True) lcd.DisplayText("Hello", row=1, col=4) >> [DEBUG] Accessing LCM1602 at address 0x27 on bus 1 with 2 rows >> [DEBUG] Switching to 4bit mode >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x28] >> >> [DEBUG] Displaying 'Hello' at row=1 col=4 >> [DEBUG] > Writing 1 bytes to register 0x0 [0x8C] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x88] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x3C] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x4D] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x49] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x8D] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x89] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x6D] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x69] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x5D] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x59] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x6D] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x69] >> [DEBUG] > Writing 1 bytes to register 0x0 [0xCD] >> [DEBUG] > Writing 1 bytes to register 0x0 [0xC9] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x6D] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x69] >> [DEBUG] > Writing 1 bytes to register 0x0 [0xCD] >> [DEBUG] > Writing 1 bytes to register 0x0 [0xC9] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x6D] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x69] >> [DEBUG] > Writing 1 bytes to register 0x0 [0xFD] >> [DEBUG] > Writing 1 bytes to register 0x0 [0xF9]
Gère l'état du rétro-éclairage.
Paramètres :
import lcm1602 lcd = lcm1602.lcm1602(address=0x27, bus=1, backlight=True, debug=True) lcd.SetBacklight(False) >> [DEBUG] Accessing LCM1602 at address 0x27 on bus 1 with 2 rows >> [DEBUG] Switching to 4bit mode >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x28] >> >> [DEBUG] Setting backlight to off >> [DEBUG] > Writing 1 bytes to register 0x0 [0x00]
Permet de régler les paramètres d'affichage du contrôleur LCD (tels que le curseur, etc…).
Paramètres :
Liste des 'flags' supportés | |
---|---|
DISPLAY_BLINK | Curseur fixe ou clignotent |
DISPLAY_CURSOR | Curseur visible ou non |
DISPLAY_ON | Affichage visible ou non |
import lcm1602 lcd = lcm1602.lcm1602(address=0x27, bus=1, backlight=True, debug=True) # Active l'affichage et masque le curseur lcd.SetDisplayFlags(lcd.DISPLAY_ON & ~ lcd.DISPLAY_CURSOR) >> [DEBUG] Accessing LCM1602 at address 0x27 on bus 1 with 2 rows >> [DEBUG] Switching to 4bit mode >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x28] >> >> [DEBUG] Setting display flags >> [DEBUG] > Writing 1 bytes to register 0x0 [0x0C] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x08] >> [DEBUG] > Writing 1 bytes to register 0x0 [0xCC] >> [DEBUG] > Writing 1 bytes to register 0x0 [0xC8]
Permet de gérer le comportement de l'afficheur lorsqu'il reçoit des caractères. On peut par exemple le paramétrer pour que l'affichage se fasse de droite à gauche, ou que l'ensemble de l'affichage soit décalé lors d'ajout de caractères…
Paramètres :
Liste des 'flags' supportés | |
---|---|
ENTRY_MOVE_RIGHT | Ecriture de gauche à droite |
ENTRY_MOVE_LEFT | Ecriture de droite à gauche |
ENTRY_SHIFT_DISPLAY | Décalage de tout l'affichage dans le sens pré-réglé (droite ou gauche) |
import lcm1602 lcd = lcm1602.lcm1602(address=0x27, bus=1, backlight=True, debug=True) # Paramètre l'écriture de droite à gauche lcd.SetEntryMode(lcd.ENTRY_MOVE_LEFT) >> [DEBUG] Accessing LCM1602 at address 0x27 on bus 1 with 2 rows >> [DEBUG] Switching to 4bit mode >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x38] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x28] >> >> [DEBUG] Setting entry mode >> [DEBUG] > Writing 1 bytes to register 0x0 [0x0C] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x08] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x4C] >> [DEBUG] > Writing 1 bytes to register 0x0 [0x48]
Cette classe est pour le moment distribuée sous forme d'un paquet Debian.