import machine
from machine import Pin
import time
from utime import sleep
import utime

s0 = machine.Pin(27, machine.Pin.OUT)
s1 = machine.Pin(28, machine.Pin.OUT)
mux_in = machine.Pin(26, machine.Pin.IN, machine.Pin.PULL_DOWN)

b0 = machine.Pin(16, machine.Pin.IN , machine.Pin.PULL_DOWN)
b1 = machine.Pin(17, machine.Pin.IN , machine.Pin.PULL_DOWN)
b2 = machine.Pin(18, machine.Pin.IN , machine.Pin.PULL_DOWN)

led0 = Pin(15, Pin.OUT)
led1 = Pin(14, Pin.OUT)
led2 = Pin(13, Pin.OUT)
led3 = Pin(12, Pin.OUT)
led4 = Pin(11, Pin.OUT)
led5 = Pin(10, Pin.OUT)
led6 = Pin(9, Pin.OUT)
led7 = Pin(8, Pin.OUT)
led8 = Pin(7, Pin.OUT)

led_list = [led0,led1,led2,led3,led4,led5,led6,led7,led8]
password = [b0,b2,b1]
entered_pass = []
last_dev = -1


button_presses0 = 0
last_time0 = 0

button_presses1 = 0
last_time1 = 0

button_presses2 = 0
last_time2 = 0

def button_pressed_handler0(pin):
    global button_presses0, last_time0
    new_time0 = utime.ticks_ms()
    if (new_time0 - last_time0) > 1000: 
        button_presses0 += 1
        last_time0 = new_time0

def button_pressed_handler1(pin):
    global button_presses1, last_time1
    new_time1 = utime.ticks_ms()
    if (new_time1 - last_time1) > 1000: 
        button_presses1 += 1
        last_time1 = new_time1

def button_pressed_handler2(pin):
    global button_presses2, last_time2
    new_time2 = utime.ticks_ms()
    if (new_time2 - last_time2) > 1000: 
        button_presses2 += 1
        last_time2 = new_time2


b0.irq(trigger=machine.Pin.IRQ_FALLING, handler = button_pressed_handler0)
b1.irq(trigger=machine.Pin.IRQ_FALLING, handler = button_pressed_handler1)
b2.irq(trigger=machine.Pin.IRQ_FALLING, handler = button_pressed_handler2)

old_presses0 = 0
old_presses1 = 0
old_presses2 = 0

while True:

    binary_code0 = 0
    for selector_val0 in range(4):
        s0.value(selector_val0 % 2)
        s1.value(selector_val0 // 2)
        sleep(0.020)
        binary_code0 += (pow(2, selector_val0) * mux_in.value())
    if last_dev != binary_code0:
        last_dev = binary_code0 
        print(f'selected output: {last_dev}')
    
    if button_presses0 != old_presses0:
        print(0)
        entered_pass.append(b0)
        old_presses0 = button_presses0

    if button_presses1 != old_presses1:
        print(1)
        entered_pass.append(b1)
        old_presses1 = button_presses1

    if button_presses2 != old_presses2:
        print(2)
        entered_pass.append(b2)
        old_presses2 = button_presses2



    if len(entered_pass) == len(password):
        if entered_pass == password:

            print(f'toggling: {last_dev}')

            if last_dev < 9:


                led_list[last_dev].toggle()
                entered_pass.clear()
            
            else:
                print("valid range: 0-8")
                entered_pass.clear()



            
        else:
            print("wrong password")
            entered_pass.clear()
            




    


$abcdeabcde151015202530354045505560fghijfghij
$abcdeabcde151015202530fghijfghij
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT