from machine import Pin,PWM
import utime, time
green=Pin(1, Pin.OUT)
red=Pin(13, Pin.OUT)
green.value(0)
red.value(0)
motor = PWM(Pin(27))
motor.freq(50)
keys = [[1, 2, 3, 'A'],
[4, 5, 6, 'B'],
[7, 8, 9, 'C'],
['*', 0, '#', 'D']]
rows = [26, 22,21,20]
columns = [19,18,17,16]
col_pins = []
row_pins = []
for x in range(0,4):
row_pins.append(Pin(rows[x], Pin.OUT))
col_pins.append(Pin(columns[x], Pin.IN, Pin.PULL_DOWN))
my_password = '159ABC'
password=''
close_pos = 500000
open_pos = 1450000
motor.duty_ns(close_pos)
status = 'idle'
door='closed'
motor.duty_ns(close_pos)
while True:
for row in range(4):
row_pins[row].value(1)
for col in range(4):
key = col_pins[col].value()
if key:
pressed_key = keys[row][col]
if pressed_key == '*' and door == 'closed':
print('\npasswrod 입력 해 주세요!')
status = 'ready'
password = ''
elif door == 'open' and pressed_key =='#':
motor.duty_ns(close_pos)
print('\n금고문이 닫혔습니다')
green.value(0)
door = 'closed'
elif status == 'ready':
password = password + str(pressed_key)
print('*', end='')
while col_pins[col].value(): # 계속 눌려져 있을 때 오류 방지
pass
if len(password) == len(my_password):
if password == my_password:
time.sleep(1)
print('\n금고문이 열립니다')
green.value(1)
door = 'open'
motor.duty_ns(open_pos)
else:
print('\n비밀번호가 틀립니다.')
for i in range(5):
red.value(1)
time.sleep(0.5)
red.value(0)
time.sleep(0.5)
status='idle'
password = ''
# utime.sleep(0.01)
row_pins[row].value(0)
time.sleep(0.1)