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