文章目录[隐藏]
2021/11/28 10:58:26
树莓派GPIO做稳定信号检测
硬件材料
- raspberry 4b * 1
- 发光二极管 * 1
- 杜邦线 * n
实现目标
- 初始状态下二极管是熄灭的
- 信号收到高电平(3.3V),二极管发光,并保持住
- 信号收到低电平(0V),二极管熄灭,并保持住
- 高低电平信号受开关控制
树莓派引脚与接线
接线图
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
暂无评论