import machine
from machine import Pin, SoftI2C
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
import time
# Pin definitions
pirPin1 = 19
ledPin = 13
# LCD configurations
I2C_ADDR = 0x27
totalRows = 2
totalColumns = 16
# Initialize I2C and LCD
i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=10000)
lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns)
# Sensor and trigger definitions
pir_sensor1 = Pin(pirPin1, Pin.IN)
led = Pin(ledPin, Pin.OUT)
Trigger1 = Pin(2, Pin.OUT)
Echo1 = Pin(4, Pin.IN)
lcd.move_to(0, 0)
lcd.putstr("ANIMAL GUARDIAN")
time.sleep(5)
lcd.clear()
while True:
# Read PIR sensor value
pir_value = pir_sensor1.value()
# Measure distance with sensor 1
Trigger1.value(0)
time.sleep_us(2)
Trigger1.value(1)
time.sleep_us(10)
Trigger1.value(0)
totaltime1 = machine.time_pulse_us(Echo1, 1)
distance1 = (totaltime1 * 0.034) / 2
print("PIR Sensor 1 Value:", pir_value)
print("Distance from sensor 1 in cm: ", distance1)
# Display messages on LCD and control LED based on sensor values
if pir_value == 1:
led.value(0)
lcd.move_to(0, 0)
lcd.putstr("ANIMAL DETECTED")
time.sleep(1)
lcd.clear()
elif pir_value == 0:
if distance1 < 4:
led.value(0)
lcd.move_to(0, 0)
lcd.putstr("OBJECT DETECTED")
time.sleep(1)
lcd.clear()
else:
lcd.move_to(1, 0)
lcd.putstr("READY TO GO...")
led.value(1)