树莓派 Learning 003 — GPIO 002 输入模式 — 按键控制LED

    xiaoxiao2021-03-26  5

    原博文链接在我的官方网站,网址是:http://www.aobosir.com/blog/2017/03/08/raspberrypi-GPIO-input-key-control-led/


    我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2


    我们在之前学会了如何进行输出,现在来讲讲如何进行输入:

    使用按键为例。

    我们先按照下面这幅图片连接电路:

    知识点:当你设置一个GPIO为输入模式的,这个GPIO口要么是连接到信号端,要么是接GND。注意设置为输入模式的GPIO口不允许悬空(floating)。(因为这种情况下GPIO输入的值是不确定的。)

    上面这个图中, 按键的一个引脚连接一个10K电阻和树莓派的24引脚上,然后10K电阻连接GND。按键的另一个引脚连接到3V3。

    LED还是正极连接到25引脚上,另一个引脚连接GND。


    写程序

    # -*- coding:UTF-8 -*- import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(25, GPIO.OUT) ledStatus = True while True: if (GPIO.input(24) == GPIO.HIGH): print("button pressed!") ledStatus = not ledStatus if ledStatus: GPIO.output(25, GPIO.HIGH) pass else: GPIO.output(25, GPIO.LOW) pass time.sleep(0.03) pass time.sleep(0.01) pass

    执行下面的命令,来启动这个程序脚本:

    sudo chmod +x key_control_led.py python key_control_led.py

    你会发现这个运行效果并不是很好:主要的原因就是因为按键的去抖。你可以使用硬件去抖(就是在按键的引脚上并联一个电容),也可以软件去抖,上面的程序中已经进行软件去抖了(你可以通过增大延时时间来改善程序运行效果)。


    到现在应该学会了如何使用GPIO的输入模式了。

    上面检测按键的程序,它是用轮询的方式,接下来,我们来学习,如果使用GPIO的中断模式,来实现使用中断的方式来检测一个按键是否被按下。

    更多精彩的博文,请访问:http://www.aobosir.com/

    转载请注明原文地址: https://ju.6miu.com/read-600164.html

    最新回复(0)