import time
import machine
from machine import SoftI2C, Pin, PWM,ADC
from i2c_lcd import I2cLcd
import utime
i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=400000)
pwm=PWM(Pin(32),freq=50)
devices = i2c.scan()
adc = ADC(Pin(ldr_sensor_pin))
adc.width(ADC.WIDTH_10BIT)
adc.atten(ADC.ATTN_11DB)
pir_sensor = Pin(16, Pin.IN)
led_verte= Pin(14,Pin.OUT)
led_rouge=Pin(25,Pin.OUT)
for device in devices:
print("I2C addr: "+hex(device))
lcd = I2cLcd(i2c, device, 2, 16)
# map entre bouttons et caractères
matrix_keys = [['1', '2', '3', 'A'],
['4', '5', '6', 'B'],
['7', '8', '9', 'C'],
['*', '0', '#', 'D']]
keypad_rows = [19,18,5,17]
keypad_columns = [16,4,0,2]
col_pins = []
row_pins = []
# input de l'utilisateur
guess = []
secret_pin = ['5','2','A','D','1','6']
led = Pin(15, Pin.OUT, Pin.PULL_UP)
for x in range(0,4):
row_pins.append(Pin(keypad_rows[x], Pin.OUT))
row_pins[x].value(1)
col_pins.append(Pin(keypad_columns[x], Pin.IN, Pin.PULL_DOWN))
col_pins[x].value(0)
def scankeys():
lcd.move_to(0, 1)
lcd.putstr("code : " + "".join(guess))
for row in range(4):
for col in range(4):
row_pins[row].on()
key_press = None
if col_pins[col].value() == 1:
print("code:", matrix_keys[row][col])
key_press = matrix_keys[row][col]
while col_pins[col].value() == 1:
utime.sleep(0.01)
utime.sleep(0.1)
guess.append(key_press)
if len(guess) == 6:
checkPin(guess)
for _ in range(6):
guess.pop()
row_pins[row].off()
#check le code
def checkPin(guess):
if guess == secret_pin:
lcd.clear()
lcd.move_to(0,0)
lcd.putstr("code correct")
led_verte.on()
utime.sleep(2)
lcd.clear()
lcd.move_to(0,0)
lcd.putstr("ouverture de la")
lcd.move_to(0,1)
lcd.putstr("porte")
pwm.duty(120)
utime.sleep(3)
led_verte.off()
lcd.clear()
lcd.putstr("fermeture...")
utime.sleep(3)
pwm.duty(75)
utime.sleep(3)
lcd.clear()
else:
lcd.clear()
lcd.putstr("code incorrect")
led_rouge.on()
utime.sleep(3)
led_rouge.off()
lcd.clear()
while True:
scankeys()