import machine
import time
from utime import sleep
## Pin interrupt handler
#
# A function to handle pin interrupts
# Expects a machine.Pin type parameter
button_toggled = False
def interrupt_callback(pin):
global button_toggled
stamp = 0.5
pressed_time = time.ticks_ms() - stamp
if pressed_time >= 199.5:
button_toggled = True
stamp = pressed_time
def main():
# a tiny sleep to allow the first print to be displayed
sleep(0.01)
global button_toggled
global stamp
global pressed_time
button0 = machine.Pin(16, machine.Pin.IN, machine.Pin.PULL_DOWN)
button0.irq(trigger=machine.Pin.IRQ_RISING, handler=interrupt_callback)
button1 = machine.Pin(17, machine.Pin.IN, machine.Pin.PULL_DOWN)
button1.irq(trigger=machine.Pin.IRQ_RISING, handler=interrupt_callback)
button2 = machine.Pin(18, machine.Pin.IN, machine.Pin.PULL_DOWN)
button2.irq(trigger=machine.Pin.IRQ_RISING, handler=interrupt_callback)
mux1_select = machine.Pin(27, machine.Pin.OUT)
mux2_select = machine.Pin(28, machine.Pin.OUT)
result = machine.Pin(26, machine.Pin.IN, machine.Pin.PULL_DOWN)
led0 = machine.Pin(7, machine.Pin.OUT)
led1 = machine.Pin(8, machine.Pin.OUT)
led2 = machine.Pin(9, machine.Pin.OUT)
led3 = machine.Pin(10, machine.Pin.OUT)
led4 = machine.Pin(11, machine.Pin.OUT)
led5 = machine.Pin(12, machine.Pin.OUT)
led6 = machine.Pin(13, machine.Pin.OUT)
led7 = machine.Pin(14, machine.Pin.OUT)
led8 = machine.Pin(15, machine.Pin.OUT)
correct_passcode = [0, 2, 1]
input_passcode = []
x = 0
y = 1
z = 2
# VARS
print('Program starting')
prev_code = -1
while True:
code = 0
if button_toggled == True:
if button0.value():
print(f"Chosen Key: {x}")
sleep(1)
input_passcode.append(x)
button0.value(0)
elif button1.value():
print(f"Chosen Key: {y}")
sleep(1)
input_passcode.append(y)
button1.value(0)
elif button2.value():
print(f"Chosen Key: {z}")
sleep(1)
input_passcode.append(z)
button2.value(0)
for val in range(4):
mux1_select.value(val % 2)
mux2_select.value(val // 2)
code += pow(2, val) * result.value()
if code != prev_code:
print(f"Chosen Output: {code}")
prev_code = code
sleep(0.1)
if len(input_passcode) == len(correct_passcode):
if input_passcode == correct_passcode:
print("You entered the correct passcode")
sleep(1)
input_passcode = []
if code == 0:
led0.toggle()
print("LED 0 is toggled")
print("")
elif code == 1:
led1.toggle()
print("LED 1 is toggled")
print("")
elif code == 2:
led2.toggle()
print("LED 2 is toggled")
print("")
elif code == 3:
led3.toggle()
print("LED 3 is toggled")
print("")
elif code == 4:
led4.toggle()
print("LED 4 is toggled")
print("")
elif code == 5:
led5.toggle()
print("LED 5 is toggled")
print("")
elif code == 6:
led6.toggle()
print("LED 6 is toggled")
print("")
elif code == 7:
led7.toggle()
print("LED 7 is toggled")
print("")
elif code == 8:
led8.toggle()
print("LED 8 is toggled")
print("")
elif code > 8:
print(f"Output {code} is out of range 0-8")
print("")
else:
print("You entered the wrong passcode")
sleep(0.5)
print("To gain acess enter the passcode correctly")
sleep(1)
input_passcode = []
elif len(input_passcode) > len(correct_passcode):
if len(input_passcode) == 4:
subset = input_passcode[:3]
subset2 = input_passcode[4]
if subset != correct_passcode:
print("You entered the wrong passcode")
sleep(0.5)
print("However make sure to write 2 more digits")
input_passcode = []
input_passcode.append(subset2)
elif len(input_passcode) == 5:
subset = input_passcode[:3]
subset2 = input_passcode[4]
subset3 = input_passcode[5]
if subset != correct_passcode:
print("You entered the wrong passcode")
sleep(0.5)
print("However make sure to write 1 more digit")
input_passcode = []
input_passcode.append(subset2)
input_passcode.append(subset3)
if len(input_passcode) == len(correct_passcode):
if input_passcode == correct_passcode:
print("You entered the correct passcode")
sleep(1)
input_passcode = []
if code == 0:
led0.toggle()
print("LED 0 is toggled")
print("")
elif code == 1:
led1.toggle()
print("LED 1 is toggled")
print("")
elif code == 2:
led2.toggle()
print("LED 2 is toggled")
print("")
elif code == 3:
led3.toggle()
print("LED 3 is toggled")
print("")
elif code == 4:
led4.toggle()
print("LED 4 is toggled")
print("")
elif code == 5:
led5.toggle()
print("LED 5 is toggled")
print("")
elif code == 6:
led6.toggle()
print("LED 6 is toggled")
print("")
elif code == 7:
led7.toggle()
print("LED 7 is toggled")
print("")
elif code == 8:
led8.toggle()
print("LED 8 is toggled")
print("")
elif code > 8:
print(f"Output {code} is out of range 0-8")
print("")
if __name__ == "__main__":
main()