# import necessary libraries/modules
from machine import Pin, SoftI2C, ADC, PWM
from time import sleep
from buzzer import Buzzer
from hcsr04 import HCSR04
from oled import I2C
# setup
led1 = Pin(2, Pin.OUT)
led2 = Pin(4, Pin.OUT)
buzzer = Buzzer(14)
sensor1 = HCSR04(trigger_pin=13, echo_pin=12)
sensor2 = HCSR04(trigger_pin=15, echo_pin=16)
ldr = ADC(Pin(32))
i2c = SoftI2C(scl=Pin(22), sda=Pin(21))
oled = I2C(128, 64, i2c)
# # pwm setup for LEDs
# led1_pwm = PWM(led1)
# led2_pwm = PWM(led2)
# led1_pwm.freq(1000)
# led2_pwm.freq(1000)
# # function to set LED brightness
# def set_led_brightness(led_pwm, brightness):
# led_pwm.duty(brightness) # set the PWM duty cycle to control brightness
# main loop
while True:
distance1 = sensor1.distance_cm()
print("Distance 1:", distance1, "cm")
sleep(1)
if distance1 < 100:
oled.fill(0)
oled.text("TOO CLOSE", 0, 0)
oled.show()
for _ in range(4):
buzzer.beep_once()
sleep(0.1)
else:
oled.fill(0)
oled.text("SAFE", 0, 0)
oled.show()
distance2 = sensor2.distance_cm()
print("Distance 2:", distance2, "cm")
sleep(1)
if distance2 > 150:
# spot is available
led1.on()
led2.off()
else:
# spot is occupied
led2.on()
led1.off()
# ldr_value = ldr.read()
# # daytime
# if ldr_value > 512:
# oled.fill(0)
# oled.text("Day Mode", 0, 0)
# oled.show()
# # full brightness for day mode
# set_led_brightness(led1_pwm, 1023)
# set_led_brightness(led2_pwm, 1023)
# # nighttime
# else:
# oled.fill(0)
# oled.text("Night Mode", 0, 0)
# oled.show()
# # dim brightness for night mode
# set_led_brightness(led1_pwm, 255)
# set_led_brightness(led2_pwm, 255)
ambient light
for day/night
detects how close the car
is to the sidewalk to avoid hitting it
led1 (green): indicates a spot is available
led2 (red): indicates a spot is occupied
shows messages
like "too close" or "safe"
makes a sound if the car is too close
to the sidewalk (to warn the driver)
measures parking
spot availability