GPIO口控制亮度制作呼吸灯 硬件树莓派一台。 LED发光管 杜邦线两条
硬件图 原理说明
我们知道,通过LED的电流越大,LED越亮,电流越小,LED越暗。如果可以控制输出电流大小就可以控制LED的明暗了。 跟前一篇一模一样的连接方式。
原理图 代码直接看代码和注释吧,一看就能明白。 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #!/usr/bin/env python # encoding: utf-8 import RPi.GPIO import time RPi.GPIO.setmode(RPi.GPIO.BCM) RPi.GPIO.setup(14, RPi.GPIO.OUT) # 创建一个 PWM 实例,需要两个参数,第一个是GPIO端口号,这里我们用14号 # 第二个是频率(Hz),频率越高LED看上去越不会闪烁,相应对CPU要求就越高,设置合适的值就可以 pwm = RPi.GPIO.PWM(14, 80) # 启用 PWM,参数是占空比,范围:0.0 <= 占空比 >= 100.0 pwm.start(0) try: while True: # 电流从小到大,LED由暗到亮 for i in xrange(0, 101, 1): # 更改占空比, pwm.ChangeDutyCycle(i) time.sleep(.02) # 再让电流从大到小,LED由亮变暗 for i in xrange(100, -1, -1): pwm.ChangeDutyCycle(i) time.sleep(.02) # 最后一段是一个小技巧。这个程序如果不强制停止会不停地执行下去。 # 而Ctrl+C强制终端程序的话,GPIO口又没有机会清理。 # 加上一个try except 可以捕捉到Ctrl+C强制中断的动作, # 试图强制中断时,程序不会马上停止而是会先跳到这里来做一些你想做完的事情,比如清理GPIO口。 except KeyboardInterrupt: pass # 停用 PWM pwm.stop() # 清理GPIO口 RPi.GPIO.cleanup() (责任编辑:admin) |