Outils pour utilisateurs

Outils du site


informatique:projets:python-lcm1602

Python LCM1602

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.

Documentation

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.

ClearDisplay

Efface l'écran et retourne à la position 0,0 (ligne 1, colonne 1).

Exemple
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]

DisplayText

Affiche un message à l'emplacement souhaité ligne/colonne (par défaut ligne 1, colonne 1).

Paramètres :

  • text :
    Le message à afficher

  • row :
    Ligne du début du message (par défaut 1)

  • col :
    Colonne du début du message (par défaut 1)
Exemple
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]

SetBacklight

Gère l'état du rétro-éclairage.

Paramètres :

  • status :
    Booléen (True ⇒ on / False ⇒ off)
Exemple
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]

SetDisplayFlags

Permet de régler les paramètres d'affichage du contrôleur LCD (tels que le curseur, etc…).

Paramètres :

  • flags:
    Masque de 'flags' pour paramétrer l'affichage
Liste des 'flags' supportés
DISPLAY_BLINK Curseur fixe ou clignotent
DISPLAY_CURSOR Curseur visible ou non
DISPLAY_ON Affichage visible ou non
Exemple
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]

SetEntryMode

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 :

  • mode :
    Masque de 'flags' pour paramétrer le comportement
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)
Exemple
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]

Téléchargement

Cette classe est pour le moment distribuée sous forme d'un paquet Debian.

informatique/projets/python-lcm1602.txt · Dernière modification : 2022/11/27 17:24 de lestat

Outils de la page