from machine import Pin,I2C
from machine import Timer
from hcsr04 import HCSR04
import time
import machine
import sh1106
ON = 1
OFF = 0
#display = sh1106.SH1106_I2C(128, 64, i2c, Pin(16), 0x3c)
led1 = Pin(13, Pin.OUT);led2 = Pin(12, Pin.OUT);led3 = Pin(14, Pin.OUT)
led4 = Pin(27, Pin.OUT);led5 = Pin(26, Pin.OUT);led6 = Pin(25, Pin.OUT)
key1 = Pin(15, Pin.IN, Pin.PULL_UP);key2 = Pin(2, Pin.IN, Pin.PULL_UP);key3 = Pin(4, Pin.IN, Pin.PULL_UP)
key4 = Pin(5, Pin.IN, Pin.PULL_UP);key5 = Pin(18, Pin.IN, Pin.PULL_UP);key6 = Pin(19, Pin.IN, Pin.PULL_UP)
servo_pin = machine.Pin(32)
pwm = machine.PWM(servo_pin)
pir = Pin(23,Pin.IN,Pin.PULL_UP)
tim0 = Timer(0)
def handle_interrupt1(pin):
led1.value(OFF);led2.value(OFF);led3.value(OFF);
led4.value(OFF);led5.value(OFF);led6.value(OFF);
print("(LED1 - LED6) = OFF")
time.sleep(1)
def handle_interrupt2(pin):
led4.value(OFF);led5.value(ON);led6.value(ON)
print("(LED4 - LED6) = ON")
time.sleep(1)
def mycallback1(timer):
#global data_ldr,volt_ldr,inlumi_ldr,distance,illumi,dis
#distance = sensor.distance_cm()
#data_ldr = ldr.read()
#volt_ldr = (3.3/4095)*data_ldr
#illumi_ldr = 42.175*pow(volt_ldr,-3.145)
#illumi_ldr = round(illumi_ldr,2)
#distance = round(distance,2)
#illumi = str(illumi_ldr)
#dis = str(distance)
display.fill(0)
display.text('Home Automation', 0, 5, 1)
display.text('Illu =', 0, 25, 1)
#display.text(illumi+'Lux', 50, 25, 1)
display.text('Dist =', 0, 40, 1)
#display.text(dis+'cm', 50, 40, 1)
display.show()
def manual_mode():
while True:
led1.value(OFF);led2.value(ON);led3.value(OFF)
display.fill(0)
display.text('Manual', 0, 5, 1)
display.text(" = " + 'open', 50, 5, 1)
display.show()
if (key4.value() == 0):
led4.value(ON);led5.value(OFF);led6.value(OFF)
elif (key5.value() == 0):
led4.value(OFF);led5.value(ON);led6.value(OFF)
elif (key6.value() == 0):
led4.value(OFF);led5.value(OFF);led6.value(ON)
#else:
# led4.value(OFF);led5.value(OFF);led6.value(OFF)
#elif (key4.value() == 1):
#key2.irq(trigger=Pin.IRQ_FALLING, handler=handle_interrupt1)
pir.irq(trigger=Pin.IRQ_RISING, handler=handle_interrupt2)
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=400000)
display = sh1106.SH1106_I2C(128, 64, i2c, Pin(16), 0x3c)
#sensor = HCSR04(trigger_pin=5, echo_pin=18, echo_timeout_us=10000)
#tim0.init(period=1000, mode=Timer.PERIODIC, callback=mycallback1)
while True:
display.fill(0)
display.text('Manual', 0, 5, 1)
display.text(" = " + 'open', 50, 5, 1)
display.show()
if (key1.value() == 0):
led1.value(ON);led2.value(OFF);led3.value(OFF)
print("No Auto and Manual")
time.sleep(1)
"""
pwm.freq(100)
pwm.duty(50)
start_position = 150
time.sleep(1)
pwm.duty(start_position)
"""
elif (key2.value() == 0):
led1.value(OFF);led2.value(ON);led3.value(OFF)
#print("Manual Mode")
display.fill(0)
display.text('Manual', 0, 5, 1)
display.text(" = " + 'open', 50, 5, 1)
display.show()
manual_mode()
#time.sleep(1)
elif (key3.value() == 0):
led1.value(OFF);led2.value(OFF);led3.value(ON)
#time.sleep(1)
elif (key1.value() == 0):
led4.value(OFF);led5.value(OFF);led6.value(OFF)
"""
else:
led1.value(0);led2.value(0);led3.value(0)
print("LED1=OFF LED2=OFF LED3=OFF")
time.sleep(1)
"""