print("This is the program for Car Reverse Sensor System")
print("PROJET IoT - ESILV A4 - LEROY MELAINE FABRE LEBOEUF")
import ssd1306 #oled library
import hcsr04 #ultrasonic library
from machine import Pin, I2C, PWM
from time import sleep
#OLED SCREEN
oled_width = 128
oled_height = 64
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
#BUZZERS
trigg = Pin(19, Pin.IN)
echoo = Pin(18, Pin.OUT)
buzz_Pin_front = Pin(15, Pin.OUT)
trigg_rear = Pin(26, Pin.IN)
echoo_rear = Pin(27, Pin.OUT)
buzz_Pin_rear = Pin(5, Pin.OUT)
#ULTRASONIC SENSORS
ultrasonic_sensor_front=hcsr04.HCSR04(trigger_pin=trigg, echo_pin=echoo)
ultrasonic_sensor_rear=hcsr04.HCSR04(trigger_pin=trigg_rear, echo_pin=echoo_rear)
#LEDs
led3_avant=Pin(16, Pin.OUT)
led2_avant=Pin(0, Pin.OUT)
led1_avant=Pin(2, Pin.OUT)
led3_rear=Pin(14, Pin.OUT)
led2_rear=Pin(12, Pin.OUT)
led1_rear=Pin(13, Pin.OUT)
while True:
distance_cm=ultrasonic_sensor_front.distance_cm()
distance_cm_rear=ultrasonic_sensor_rear.distance_cm()
print('\nCar ahead at :',distance_cm,' cm')
print('Car behind at :',distance_cm_rear,' cm\n')
# FRONT SENSOR
oled.fill(0)
oled.text("The distance", 15 , 10)
oled.text("with car ahead", 5 , 25)
cm = ultrasonic_sensor_front.distance_cm()
cm_string = str("{:.2f}".format(cm))
oled.text (cm_string + "cm", 30 , 40)
sleep (0.1)
oled.show()
sleep(0.5)
# REAR SENSOR
oled.fill(0)
oled.text("The distance", 15 , 10)
oled.text("with car behind", 2 , 25)
cm_rear = ultrasonic_sensor_rear.distance_cm()
cm_string_rear = str("{:.2f}".format(cm_rear))
oled.text (cm_string_rear + "cm", 30 , 40)
sleep (0.1)
oled.show()
sleep(0.5)
# FRONT LEDs
if cm >= 250:
buzzer_front = PWM(buzz_Pin_front,freq = 532, duty = 20)
sleep(0.1)
buzzer_front = PWM(buzz_Pin_front,freq = 532, duty = 0)
led1_avant.on()
sleep(0.1)
led1_avant.off()
sleep(0.1)
elif 50<cm<250:
buzzer_front = PWM(buzz_Pin_front,freq = 532, duty = 20)
sleep(0.01)
buzzer_front = PWM(buzz_Pin_front,freq = 532, duty = 0)
led2_avant.on()
sleep(0.01)
led2_avant.off()
sleep(0.01)
elif cm<50:
buzzer_front = PWM(buzz_Pin_front,freq = 532, duty = 20)
sleep(0.1)
buzzer_front = PWM(buzz_Pin_front,freq = 532, duty = 80)
led3_avant.on()
sleep(0.001)
led3_avant.off()
sleep(0.001)
# REAR LEDs
if cm_rear >= 250:
buzzer_rear = PWM(buzz_Pin_rear,freq = 532, duty = 20)
sleep(0.1)
buzzer_rear = PWM(buzz_Pin_rear,freq = 532, duty = 0)
led1_rear.on()
sleep(0.1)
led1_rear.off()
sleep(0.1)
elif 50<cm_rear<250:
buzzer_rear = PWM(buzz_Pin_rear,freq = 532, duty = 20)
sleep(0.01)
buzzer_rear = PWM(buzz_Pin_rear,freq = 532, duty = 0)
led2_rear.on()
sleep(0.01)
led2_rear.off()
sleep(0.01)
elif cm_rear<50:
buzzer_rear = PWM(buzz_Pin_rear,freq = 532, duty = 20)
sleep(0.1)
buzzer_rear = PWM(buzz_Pin_rear,freq = 532, duty = 80)
led3_rear.on()
sleep(0.001)
led3_rear.off()
sleep(0.001)