树莓派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
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()

效果

效果图

版权声明:本文为CSDN博主「liuyang4210275」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuyang4210275/article/details/121514658

生成海报
点赞 0

liuyang4210275

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

树莓派4B控制伺服电机 串口转485通信

树莓派4B控制伺服电机 TTL串口转485通信 python 1. 树莓派串口设置 1.设置树莓派的串口输出,先确保树莓派4B的串口输出正常,可以串口连接电脑测试收发,按照下面两个教程走即可。 树

树莓派4B学习笔记——IO通信篇(UART)

UART简介 UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来主机与辅助设备通信,如汽车音响与外接AP之间的通信&#x

树莓派控制sg90舵机 驱动 Python详细教程|徐奥雯

灰色线为GND接地、红色线为VCC接5V供电、黄色线为脉冲输入 直接复制以下代码运行即可 运行前 请将脉冲输入所连接的树莓派GPIO引脚号 填写入下面的gpio_pin中 您可以直接运行此文件来测试他是否正常工作,你的舵机应该会开