树莓派GPIO做稳定信号检测

树莓派GPIO做稳定信号检测,第1张

树莓派GPIO做稳定信号检测

2021/11/28 10:58:26

树莓派GPIO做稳定信号检测

硬件材料

  1. raspberry 4b * 1
  2. 发光二极管 * 1
  3. 杜邦线 * n

实现目标

  1. 初始状态下二极管是熄灭的
  2. 信号收到高电平(3.3V),二极管发光,并保持住
  3. 信号收到低电平(0V),二极管熄灭,并保持住
  4. 高低电平信号受开关控制
树莓派引脚与接线


gpio-pinout-diagram

接线图

python程序
import RPi.GPIO as GPIO
import time

# 定义使用的引脚
GPIO_PIN_16 = 16
GPIO_PIN_26 = 26


def gpio_callback(channel):
    # 重点,触发状态后等待时间,保证不会发生数据抖动导致的误差
    time.sleep(0.005)
    if GPIO.input(channel) == GPIO.HIGH:
        print("高电压")
        GPIO.output(GPIO_PIN_26, GPIO.HIGH)
    elif GPIO.input(channel) == GPIO.LOW:
        print("低电压")
        GPIO.output(GPIO_PIN_26, GPIO.LOW)


if __name__ == '__main__':
    try:
        # 使用BCM编号
        GPIO.setmode(GPIO.BCM)
        # 忽略输入端的警告
        GPIO.setwarnings(False)
        # 初始化输入端,上拉电阻
        GPIO.setup(GPIO_PIN_16, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
        # 初始化输出端,设置低电平
        GPIO.setup(GPIO_PIN_26, GPIO.OUT, initial=GPIO.LOW)
        # 监听事件,并回调
        # GPIO.add_event_detect(GPIO_PIN_16, GPIO.RISING, callback=gpio_callback)
        # GPIO.add_event_detect(GPIO_PIN_16, GPIO.FALLING, callback=gpio_callback, bouncetime=2000)
        GPIO.add_event_detect(GPIO_PIN_16, GPIO.BOTH, callback=gpio_callback, bouncetime=50)
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        # 清理使用的gpio
        GPIO.cleanup()

效果

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5611520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存