import board
import digitalio
import time
import busio
import lcd
import i2c_pcf8574_interface
i2c_bus = busio.I2C(scl=board.GP5, sda=board.GP4)
i2c = i2c_pcf8574_interface.I2CPCF8574Interface(i2c_bus, 0x27)
display = lcd.LCD(i2c, num_rows=2, num_cols=16)
display.set_backlight(True)
display.set_display_enabled(True)
sw1 = digitalio.DigitalInOut(board.GP14)
sw1.direction = digitalio.Direction.INPUT
sw1.pull = digitalio.Pull.UP
text = "Shifting Right"
lcd_width = 16
pos = 0
prev_sw1 = True
started = False
def display_partial(row, text, position):
display.set_cursor_pos(row, 0)
display.print(" " * lcd_width)
for i in range(len(text)):
col = position + i
if 0 <= col < lcd_width:
display.set_cursor_pos(row, col)
display.print(text[i])
display.clear()
display.set_cursor_pos(0, 0)
display.print("Press SW1 to")
display.set_cursor_pos(1, 0)
display.print("start shifting")
while True:
current_sw1 = sw1.value
if prev_sw1 and not current_sw1:
if started == False:
started = True
display.clear()
display_partial(0, text, pos)
display.set_cursor_pos(1, 0)
display.print(" " * lcd_width)
else:
pos += 1
if pos > lcd_width:
pos = -len(text)
display_partial(0, text, pos)
time.sleep(0.2)