Afficheur LCD 16×2

Module Grove : Afficheur 4 digits / 7 segments

Présentation

L'afficher LCD 16×2 permet d'afficher deux lignes de 16 caractères chacune.

Branchement

L'afficher LCD 16×2 se branche sur la borne I2C de la carte interface.

Programmation

Code d'une classe pour utiliser le module

from microbit import *

class mb_afficheur_lcd():
    def __init__(self):
        self.set_register(0x00, 0)
        self.set_register(0x01, 0)
        self.set_register(0x08, 0xAA)
        self.disp_func = 0x04 | 0x08
        sleep(50)
        self.cmd(0x20 | self.disp_func)
        sleep(5)
        self.cmd(0x20 | self.disp_func)
        sleep(1)
        self.cmd(0x20 | self.disp_func)
        self.cmd(0x20 | self.disp_func)
        self.disp_ctrl = 0x04 | 0x00 | 0x00
        self.display1(True)
        self.clear()
        self.disp_mode = 0x02 | 0x00
        self.cmd(0x04 | self.disp_mode)

    def set_register(self, reg, val):
        val = bytes((reg, val))
        i2c.write(62, val)

    def cmd(self, command):
        assert command >= 0 and command < 256
        val = bytes((0x80, command))
        i2c.write(62, val)

    def write_char(self, c):
        assert c >= 0 and c < 256
        val = bytes((0x40, c))
        i2c.write(62, val)

    def write(self, text):
        '''
        Affiche un texte à la position du curseur
        Param text : (str) la chaine de caractères à afficher
        '''
        text = str(text)
        for char in text:
            self.write_char(ord(char))

    def setCursor(self, col, row):
        '''
        Positionne le curseur
        Param col : (int) numéro de la colonne (compris entre 0 et 15)
        Param row : (int) numéro de la ligne (0 ou 1)
        '''
        col = (col | 0x80) if row == 0 else (col | 0xc0)
        self.cmd(col)

    def display1(self, state):
        if state:
            self.disp_ctrl |= 0x04
            self.cmd(0x08  | self.disp_ctrl)
        else:
            self.disp_ctrl &= ~0x04
            self.cmd(0x08  | self.disp_ctrl)

    def clear(self):
        '''
        Efface le contenu de l'écran
        '''
        self.cmd(0x01)
        sleep(2)

Exemple d'utilisation

# copier ici le code précédant

ecran = mb_afficheur_lcd()
while True:
    ecran.clear()
    t = temperature()
    l = display.read_light_level()
    ecran.set_cursor(0,0)
    ecran.write("Temp : " + str(t) + " C")
    ecran.set_cursor(0,1)
    ecran.write("Lum : " + str(l))
    sleep(500)