树莓派按键控制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

这样就非常准了

你可能感兴趣的:(树莓派按键控制LED灯)