15. 人体热释电传感器
15.1. 应用编程接口说明
'''
导入 pir_sensor 模块
'''
from openaie import pir_sensor
'''
类:pir_sensor
参数:
port: 端口号 -- 1或7
'''
class pir_sensor(port)
'''
方法:检测
@return:检测到有人移动返回 True
'''
pir_sensor.detect()
15.2. 案例
1. 人体感应灯
from openaie import rgb_led, pir_sensor
import time
import lcd
pir_sensor = pir_sensor(2) # 人体热释电传感器 -- 端口2
rgb = rgb_led(7) # 全彩LED -- 端口6
deadline = 0
delay_time = 3000 # 单次触发延时时间 3000ms
light_on = False
# 绘制初始界面
lcd.rotation(0)
lcd.clear(color=0)
lcd.draw_string(76, 5, "自动感应灯", fc=(0,0,255), bc=0)
lcd.display()
while True:
if pir_sensor.detect(): # 检测到有人
deadline = time.ticks_add(time.ticks_ms(), delay_time) # 重新计算截止时间
if not light_on:
for i in range(3):
rgb.set(i, (50,50,50))
rgb.display()
light_on = True
lcd.draw_string(10, 50, "检测到有人", fc=(0,255,0), bc=0)
lcd.draw_string(10, 90, "照明设备:开启", fc=(0,0,255), bc=0)
lcd.display()
print("turn on the light")
if light_on:
print("now: ", time.ticks_ms())
if time.ticks_diff(time.ticks_ms(), deadline) > 0: # 判断是否超时,超时自动关闭照明
for i in range(3):
rgb.set(i, (0,0,0))
rgb.display()
light_on = False
lcd.draw_string(10, 50, "没有检测到", fc=(255,0,0), bc=0)
lcd.draw_string(10, 90, "照明设备:关闭", fc=(0,0,255), bc=0)
lcd.display()
print("turn off the light")
time.sleep_ms(100)