1
0

Added big hello lcd example

This commit is contained in:
BlueFox 2024-03-09 18:58:27 +00:00
parent b9996c02cd
commit 46cc4be1fa

68
examples/lcd_big_hello.py Normal file
View File

@ -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)