print("This device will detect chicken back to their home")
print("4/12/2023")
print("created by ZUNIE")
# main.py
from machine import Pin, SoftI2C, PWM
from utime import sleep
import SERVOLLLL
import OLEDLIBRARY
Pin_scl_sda = SoftI2C(scl=Pin(22), sda=Pin(21))
# Define GPIO pins
Servo_Pin = 26 # Use the pin number directly, not Pin object
Servo2_Pin = 27 # Use the pin number directly, not Pin object
warning_led_pin = Pin(13, Pin.OUT)
car_led_pin = Pin(12, Pin.OUT)
train_led_pin = Pin(14, Pin.OUT)
motion_sensor_pin = Pin(25, Pin.IN)
buzzer_pin = PWM(Pin(33), freq=1000)
# CREATE OBJECT NAMES
skrin = OLEDLIBRARY.SSD1306_I2C(width=128, height=64, i2c=Pin_scl_sda)
blade = SERVOLLLL.Servo(pin=Servo_Pin)
blade2 = SERVOLLLL.Servo(pin=Servo2_Pin)
while True:
# Train road
warning_led_pin.on()
car_led_pin.off()
train_led_pin.on()
blade2.move(90)
blade.move(90)
skrin.fill(1) # 0 - for BLACK, 1 for WHITE
skrin.text("Train Road Open", 0, 10, 0)
skrin.text("Car Road closed", 0, 30, 0)
skrin.show() # a must !!
sleep(2) # Adjust the time as needed
# Car road
warning_led_pin.on()
car_led_pin.on()
train_led_pin.off()
blade.move(0)
blade2.move(0)
skrin.fill(1) # 0 - for BLACK, 1 for WHITE
skrin.text("Car Road Open", 0, 10, 0)
skrin.text("Train Road Closing", 0, 30, 0)
skrin.show() # a must !!
sleep(2) # Adjust the time as needed
# Blink train LED and lower train barrier
for _ in range(3): # Blink three times
warning_led_pin.on()
sleep(1)
warning_led_pin.off()
sleep(1)
car_led_pin.on()
train_led_pin.off()
blade.move(0)
blade2.move(0)
skrin.fill(1) # 0 - for BLACK, 1 for WHITE
skrin.text("Train Road will be Closing", 0, 10, 0)
skrin.text("Car Road will be Open", 0, 30, 0)
skrin.show()
sleep(2)
# Blink car LED and lower car barrier
for _ in range(3): # Blink three times
warning_led_pin.on()
sleep(1)
warning_led_pin.off()
sleep(1)
car_led_pin.off()
train_led_pin.on()
blade.move(90)
blade2.move(90)
skrin.fill(1) # 0 - for BLACK, 1 for WHITE
skrin.text("Car Road will be Closing", 0, 10, 0)
skrin.text("Train Road will be Open", 0, 30, 0)
skrin.show()
sleep(2)
# Check motion sensor
if motion_sensor_pin.value() == 1:
# Motion detected, sound the buzzer
buzzer_pin.duty(50) # Adjust duty cycle for desired volume
sleep(0.2) # Adjust the time the buzzer sounds
buzzer_pin.duty(0)
sleep(2) # Adjust the time as needed