树莓派按键控制LED灯

上一次学习了用树莓派控制一个led灯。

那么如何用按键来控制led灯呢?

就是说有一个按键,我们按下的时候led灯亮起,再按一次led灯关闭

如此往复呢?

首先我们在13号引脚那里连接一个上拉电阻,然后再连接开关,如下图。


在这种情况下,我们用11号引脚控制led灯。

程序如下。

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BOARD)

GPIO.setup(11,GPIO.OUT)

GPIO.setup(13,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)

led=True

while True:

        while (GPIO.input(13)==GPIO.HIGH):

                pass

        else:

                led= not led

                pass

        if led:

                GPIO.output(11,GPIO.HIGH)

                pass

        else:

                GPIO.output(11,GPIO.LOW)

                pass

pass

在这里可以看到。但是程序不是很健壮,原因是我们没有消抖。

当我们按下的一瞬间,可能程序已经重复执行了好多遍。

因此,现在想办法消抖。

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BOARD)

GPIO.setup(11,GPIO.OUT)

GPIO.setup(13,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)

led=True

while True:

        while(GPIO.input(13)==GPIO.HIGH):

                pass

        else:

                time.sleep(0.1)

                if(GPIO.input(13)==GPIO.LOW):

                        led=not led

                        pass

                pass

        if led:

                GPIO.output(11,GPIO.HIGH)

                time.sleep(0.1)

                pass

        else:

                GPIO.output(11,GPIO.LOW)

                time.sleep(0.1)

                pass

pass

这样就非常准了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容