print("Hello, ESP32!")
print("This program integrates PIR sensor with ESP32")
# Credits to https://RandomNerdTutorials.com & program edited accordingly
from machine import SoftI2C, Pin, PWM
from utime import sleep
import ssd1306
i2c_oleddisplay = SoftI2C(scl=Pin(22), sda=Pin(21))
oled_width = 128 #based on spec
oled_height = 64 #based on spec
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c_oleddisplay)
motion = False
def handle_interrupt(pin):
global motion
motion = True
global interrupt_pin
interrupt_pin = pin
led_green = Pin(27, Pin.OUT)
led_red = Pin(26, Pin.OUT)
servo = PWM(Pin(2), freq=50)
pir_sensor = Pin(14, Pin.IN)
pir_sensor.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt)
while True:
if motion == True:
print('Motion detected! Interrupt caused by:', interrupt_pin, 'LED GREEN = ON', 'SERVO = ON' )
oled.text('WELCOME TO MY MALL',0 ,0, 1)
oled.text('DOOR OPEN', 0, 15, 1)
oled.show()
led_green.on()
servo.duty(30)
sleep(5)
led_green.off()
#sleep(2)
servo.duty(77)
led_red.on()
#led_red.off()
# else:
# oled.text('BEB34303',0,0,1)
# oled.text('Hello Everyone', 0,15,1)
# oled.text('I am Hasif',0,30)
# oled.text('I love IoT subject',0,50)
# oled.show()
print('Motion stopped! LED GREEN = OFF')
motion = False
#print("This program integrates OLED screen with ESP32")
# Credits to https://RandomNerdTutorials.com & program edited accordingly
#from machine import Pin, SoftI2C
#from utime import sleep
#import ssd1306
#4. use cop (object oriented propramming) to create the object
#remarks: object format --> library name,class name
#(width, height,i2c)
#Create text to be displayed on OLED screen
# oled.text('BEB34303',0,0,1)
# oled.text('Hello Everyone', 0,15,1)
# oled.text('I am Hasif',0,30)
# oled.text('I love IoT subject',0,50)
# oled.show()