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



