from machine import Pin, ADC, I2C,PWM
from time import sleep
from pico_i2c_lcd import I2cLcd
i2c = I2C(0, sda=Pin(0), scl=Pin(1))
i2c_add = i2c.scan()
lcd = I2cLcd(i2c, i2c_add[0], 2, 16)
lcd.backlight_on()
lcd.clear()
ldr = ADC(26)
str_lit = PWM(Pin(2))
str_lit2 = PWM(Pin(3))
dark_lit = Pin(4,Pin.OUT)
str_lit.freq(1000)
str_lit2.freq(1000)
ir_pin = Pin(19, Pin.IN)
def day_time():
str_lit.duty_u16(0)
str_lit2.duty_u16(0)
dark_lit.value(0)
def night_time():
dark_lit.value(1)
def no_vehicle():
str_lit.duty_u16(10000)
str_lit2.duty_u16(10000)
def light_status(status):
lcd.move_to(0,0)
lcd.putstr(status)
def vehicle_sts_func(vc_sts):
lcd.move_to(0,1)
lcd.putstr(vc_sts)
def str_light_function():
str_lit.duty_u16(65000)
str_lit2.duty_u16(0)
sleep(0.5)
str_lit.duty_u16(30000)
str_lit2.duty_u16(65000)
sleep(0.5)
str_lit.duty_u16(0)
str_lit2.duty_u16(30000)
sleep(0.5)
str_lit2.duty_u16(0)
while True:
ldr_value = ldr.read_u16()
voltage = (ldr_value / 65535) * 3.3
print("Light Value:", ldr_value)
print("Voltage:", voltage)
vehicle_status = "No Vehicle"
lcd.clear()
if ldr_value > 50000:
status = "Bright Light"
day_time()
elif 20000 < ldr_value < 50000:
status = "Dim Light"
day_time()
elif 0 < ldr_value < 20000:
status = "Night Time"
night_time()
if ir_pin.value() == 1:
vehicle_status = "Vehicle Det."
str_light_function()
else:
vehicle_status = "No Vehicle"
no_vehicle()
else:
status = "Unknown"
day_time()
dark_lit.value(0)
light_status(status)
vehicle_sts_func(vehicle_status)
sleep(1)