'''
Consignes :
La porte s'ouvre quand je passe devant le cpateur Pir ET que je passe à moins de 10 cm du capteur à ultrason.
Quand la porte s'ouvre pendant 3 secondes et la led verte s'allume et un message de bienvenu s'affiche sur mon écran
Si je ne rempli pas les conditions la led rouge s'allume et un message de refus s'affi
'''
from machine import Pin, I2C, time_pulse_us
import time
from time import sleep
from Servo import Servo
from ssd import SSD1306_I2C
i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000)
oled = SSD1306_I2C(128, 64, i2c)
led_r = Pin(4, Pin.OUT)
led_o = Pin(3,Pin.OUT)
led_v = Pin(2, Pin.OUT)
PIR = Pin(28,Pin.OUT)
servo = Servo(18)
trig = Pin(13,Pin.OUT)
echo = Pin(12,Pin.IN)
push = Pin(5,Pin.IN)
compteur = 0
def Neuille():
servo.move(180)
oled.text("Bienvenue", 0, 0)
oled.show()
oled.fill(0)
led_v.value(1)
led_r.value(0)
time.sleep(3)
def b():
led_o.value(1)
led_r.value(0)
led_v.value(0)
sleep(0.2)
led_o.value(0)
led_r.value(0)
led_v.value(0)
sleep(0.2)
while True:
trig.value(0)
time.sleep_us(5)
trig.value(1)
time.sleep_us(10)
trig.value(0)
ultrason = time_pulse_us(echo,1,30000)
distance_cm = 340*ultrason /20000
while compteur == 0:
if push.value() == 1:
compteur = compteur + 1
else:
if PIR.value() == 1 and distance_cm < 10:
Neuille()
else:
oled.text("Systeme actif", 0, 0)
oled.show()
oled.fill(0)
servo.move(0)
led_v.value(0)
led_r.value(1)
while compteur == 1:
b()
oled.text("maintenance", 0, 0)
oled.show()
oled.fill(0)