上一次学习了用树莓派控制一个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
这样就非常准了