from machine import Pin, ADC
from machine import Pin, SoftI2C
from hcsr04 import HCSR04
from machine import Timer
from time import sleep
import sh1106
sensor = HCSR04(trigger_pin=5, echo_pin=18, echo_timeout_us=10000)
i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=400000)
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)
ON = 1
OFF = 0
ldr = ADC(Pin(34))
ldr.atten(ADC.ATTN_11DB)
ldr.width(ADC.WIDTH_12BIT)
def function1(timer):
global data_ldr, volt_ldr, illumi_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()
# ตรวจสอบเงื่อนไขและควบคุม LED ตามที่คุณต้องการ
if illumi_ldr <= 50:
led1.value(OFF)
led2.value(OFF)
led3.value(ON)
elif distance <= 30:
led1.value(OFF)
led2.value(ON)
led3.value(OFF)
else:
led1.value(ON)
led2.value(OFF)
led3.value(OFF)
led1.value(OFF)
led2.value(OFF)
led3.value(OFF)
tim0 = Timer(0)
tim0.init(period=1000, mode=Timer.PERIODIC, callback=function1)