MENU

树莓派Touch+人体移动+Led

• 2023 年 05 月 14 日 • 阅读: 774 • 学习笔记

树莓派物联网基础

初学物联网套件,三个模块搭配做了一个触摸开关后灯亮,检测人体是否移动,移动保持灯亮,检测不到人体移动延时5s关灯。

ps:(移动模块没搞动,只能检测人体移动 人体在模块下方停止不动就检测不到了)

代码解读

import RPi.GPIO as GPIO    # 导入GPIO包
import time                # 导入时间包
GPIO.setwarnings(False)    # 禁用报错
GPIO.setmode(GPIO.BCM)     # 设置GPIO编码方式BCM

# 定义引脚
touch_pin = 26             # 触摸模块引脚
pir_pin = 20               # 人体移动模块
led_pin = 21               # Led灯模块

# 设置输入输出引脚
GPIO.setup(touch_pin, GPIO.IN)    # 设置触摸模块为输入模式
GPIO.setup(pir_pin, GPIO.IN)      # 设置人体移动为输入模式
GPIO.setup(led_pin, GPIO.OUT)     # 设置Led模块为输出模式

# 初始状态关闭LED灯
GPIO.output(led_pin, GPIO.HIGH)   # 我的Led灯 输入高点平为关灯

try:
    while True:
        # 检测触摸信号
        if GPIO.input(touch_pin):    # 如果检测到触摸模块触摸信号
            print("# 检测到触摸信号")    # 输出
            GPIO.output(led_pin, GPIO.LOW)    # led 输出低电平 灯亮起
            time.sleep(3)            # 延时三秒 进入检测人体移动信号
  
            # 检测人体移动信号
            while True:
                if GPIO.input(pir_pin):    # 如果检测到人体模块移动信号
                    print("# 检测到人体移动信号")
                    GPIO.output(led_pin, GPIO.LOW)    # led 输出低电平 灯保持亮起状态
                    time.sleep(3)
                    while True:  
                        if not GPIO.input(pir_pin):    # 检测人体移动信号是否仍然存在
                            print("# 检测到人体移动信号仍然存在")
                            GPIO.output(led_pin, GPIO.LOW)    # led 输出低电平 灯保持亮起状态
                            time.sleep(5)
                            break
                else:
                    print("# 检测到人体移动信号不存在")
                    time.sleep(3)
                    GPIO.output(led_pin, GPIO.HIGH)    # led 输出高电平 灯关闭
                    break
  
        time.sleep(0.1)

except KeyboardInterrupt:
    # 通过键盘中断退出程序
    pass

finally:
    # 清理GPIO设置
    GPIO.cleanup()

老师写的代码! 呜呜呜,我写了27行,老师11行就完成了我的功能

import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
# 设置GPIO编码方式
GPIO.setmode(GPIO.BCM)

# 定义引脚
touch_pin = 26
pir_pin = 20
led_pin = 21

# 设置输入输出引脚
GPIO.setup(touch_pin, GPIO.IN)
GPIO.setup(pir_pin, GPIO.IN)
GPIO.setup(led_pin, GPIO.OUT)

# 初始状态关闭LED灯
GPIO.output(led_pin, GPIO.HIGH)

try:
    while True:
        if GPIO.input(touch_pin) == 1:
            GPIO.output(led_pin,GPIO.LOW)
            print("检测到触摸,灯亮三秒进入下一步检测!")
            time.sleep(3)
            while GPIO.input(pir_pin) == 1:
                print("检测到人体移动,人还在不执行关灯!")
                time.sleep(3)
            print("未检测到人体移动,3s后关灯!")
            time.sleep(3)
            GPIO.output(led_pin,GPIO.HIGH)
except KeyboardInterrupt:
    # 通过键盘中断退出程序
    pass

finally:
    # 清理GPIO设置
    GPIO.cleanup()

接线方式

材料引脚(BCM)正负极
Touch26正极3.3v/负极GND
LED21正极5v/负极同上
人体移动20正极5v/极同上

本文作者:LiuXiaoBai
文章标题:树莓派Touch+人体移动+Led
本文地址:https://www.ounoe.com/archives/374
版权说明:若无注明,本文皆刘小白的小窝原创,转载请保留文章出处。

返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码