diff --git a/examples/lcd_big_hello.py b/examples/lcd_big_hello.py new file mode 100644 index 0000000..eef6d9c --- /dev/null +++ b/examples/lcd_big_hello.py @@ -0,0 +1,68 @@ +""" +@ Copyright: 2023, Benjamin Burkhardt +@ Feature: Fades "HELLO" over two lines in and out +""" + +import machine +from machine import I2C, Pin +from PCF8574 import I2C_LCD +import time + +I2C_ADDR = 0x27 +I2C_NUM_ROWS = 2 +I2C_NUM_COLS = 16 + +i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000) +lcd = I2C_LCD(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS) + +lcd.custom_char(0, bytearray([0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03])) # right +lcd.custom_char(1, bytearray([0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18])) # left +lcd.custom_char(2, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F])) # 2-down +lcd.custom_char(3, bytearray([0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00])) # 2-up +lcd.custom_char(4, bytearray([0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x1F])) # e-up +lcd.custom_char(5, bytearray([0x1F,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F])) # e-down +lcd.custom_char(6, bytearray([0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0x1F])) # l-down +lcd.custom_char(7, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18])) # l-right + +line1 = str(chr(0) + chr(2) + chr(1) + chr(0) + chr(4) + " " + chr(1) + " " + chr(1) + " " + chr(0) + chr(3) + chr(1)) +line2 = str(chr(0) + chr(3) + chr(1) + chr(0) + chr(5) + " " + chr(6) + chr(7) + chr(6) + chr(7) + chr(0) + chr(2) + chr(1)) + + +def right2left(line1, line2, speed=0.3): + padding = " " # 16 spaces + line2 = padding + line2 + padding + line1 = padding + line1 + padding + for i in range(32): + line2 = line2[1:] + line1 = line1[1:] + lcd.putstr(line1[0:16] + line2[0:16]) + time.sleep(speed) + + +def top2bottom(line1, line2, speed=0.2): + lcd.clear() + time.sleep(speed) + lcd.putstr(line2) + time.sleep(speed) + lcd.clear() + lcd.putstr(line1) + lcd.move_to(0,1) + lcd.putstr(line2) + time.sleep(speed) + lcd.clear() + lcd.move_to(0,1) + lcd.putstr(line1) + time.sleep(speed) + lcd.clear() + time.sleep(speed) + +def run(): # for the ProgramChooser as callback + right2left(line1, line2, 0.1) + top2bottom(line1, line2) + + +if __name__ == "__main__": + while True: + right2left(line1, line2, 0.1) + top2bottom(line1, line2) +