import machine
class LiquidCrystal595:
def __init__(self, data_pin, latch_pin, clock_pin):
self.data_pin = data_pin
self.latch_pin = latch_pin
self.clock_pin = clock_pin
# Configuramos los pines como salidas
machine.pin(self.data_pin, machine.Pin.OUT)
machine.pin(self.latch_pin, machine.Pin.OUT)
machine.pin(self.clock_pin, machine.Pin.OUT)
def init(self):
# Inicializamos el 74HC595
self.shiftOut(0x00)
def setLED2Pin(self, value):
# Configuramos el pin del LED de la pantalla LCD
machine.digitalWrite(self.data_pin, value)
def begin(self, cols, rows):
# Enviamos los comandos de inicio a la pantalla LCD
self.shiftOut(0x38) # Función de cursor en 2 líneas, 5x7 píxeles
self.shiftOut(0x0C) # Encendido de la pantalla y cursor oculto
self.shiftOut(cols - 1) # Número de columnas de la pantalla
self.shiftOut(rows - 1) # Número de filas de la pantalla
def clear(self):
# Limpiamos la pantalla LCD
self.shiftOut(0x01)
def setCursor(self, col, row):
# Establecemos el cursor en una posición determinada de la pantalla LCD
self.shiftOut(0x80 | (col & 0x0F))
self.shiftOut(0x40 | (row & 0x07))
def print(self, message):
# Imprimimos un mensaje en la pantalla LCD
for c in message:
self.shiftOut(ord(c))
def shiftOut(self, value):
# Enviamos un byte de datos al 74HC595
for i in range(8):
machine.digitalWrite(self.latch_pin, 0)
machine.shiftOut(self.data_pin, self.clock_pin, MSBFIRST, value & (1 << (7 - i)))
machine.digitalWrite(self.latch_pin, 1)