from machine import Pin, Timer
led_pins = [19, 18, 5, 17]
pins = [Pin(i, Pin.OUT) for i in led_pins]
register = [1, 0, 0, 0]
register1 = [0, 0, 0, 1]
direction = 1 # +1 = right, -1 = left
def shift_right(reg, new_bit): # 1000 -> 0100
for i in range(len(reg) - 1, 0, -1):
reg[i] = reg[i - 1]
reg[0] = new_bit
return reg
def shift_left(reg, new_bit): # 0100 -> 1000
for i in range(0, len(reg) - 1):
reg[i] = reg[i + 1]
reg[len(reg) - 1] = new_bit
return reg
def register_to_led():
for i, led in enumerate(pins):
led.value(register[i])
def clk_signal(t):
global register, direction
register_to_led()
if direction == 1:
shift_right(register, 0)
if register == register1:
direction = -1
elif direction == -1:
shift_left(register, 0)
if register == [1, 0, 0, 0]:
direction = 1
Timer(0).init(period=100, mode=Timer.PERIODIC, callback=clk_signal)