Ejemplo n.º 1
0
class Wh1602:
    def __init__(self):
        self.reserve_gpios()
        self.rw.set_value(0)
        sleep(0.05)

    def __del__(self):
        pass

    def reserve_gpios(self):
        self.rs = Gpio(2, "out")
        self.rw = Gpio(3, "out")
        self.e = Gpio(4, "out")
        self.d = [Gpio(17, "out"), Gpio(27, "out"),
                  Gpio(22, "out"), Gpio(23, "out")]

    def lcd_write_nibble(self, val):
        for i, p in enumerate(self.d):
            p.set_value(0 if (val & 1 << i) == 0 else 1)

        self.e.set_value(1)
        sleep(0.02)
        self.e.set_value(0)

    def lcd_write_data(self, data):
        self.lcd_write_nibble(data >> 4)
        self.lcd_write_nibble(data & 0xF)

    def init_lcd(self):
        self.rs.set_value(0)
        sleep(0.2)

        self.lcd_write_nibble(0x03)
        sleep(0.05)

        self.lcd_write_nibble(0x03)
        sleep(0.05)

        self.lcd_write_nibble(0x02)
        sleep(0.02)

        self.lcd_write_data(0x08)
        sleep(0.02)

        self.lcd_write_data(0x01)
        sleep(0.02)

        self.lcd_write_data(0x06)
        sleep(0.02)

        self.lcd_write_data(0x0D)
        sleep(0.02)

        self.rs.set_value(1)

    def lcd_write_string(self, str):
        for s in str:
            self.lcd_write_data(s)