python让灯闪烁_在树莓派上用python程序控制双色LED灯闪烁

序言:

树莓派作为时下流行的DIY平台,python作为流行的编程语言,玩树莓派是一种态度,写python代码是一种生活情趣。

周五是个好日子,因为周末来了。

忙碌了一周,周五休息一下,玩玩树莓派,学习python,让大脑放个假。

闲话少叙,用双色LED点亮我们的python之旅吧。

一、原理

LED为共阴极的红绿双色LED,一共三个引脚,分别是地(GND,接口标号为-)、红色灯控制脚(R,接口标号无,为中间引脚)、绿色LED控制脚(G,引脚标号为S)树莓派GPIO输出高电平点亮LED,GPIO输出低电平熄灭LED。双色LED外观如下图所示。

双色LED外观

二、连线

树莓派与双色LED连线

三、编程

旨在实现点亮(闪烁)、呼吸灯(PWM亮度控制)。

1.用Putty远程到树莓派登录后,输入命令新建一个py。

nano colorledcontrol.py

2.编辑代码如下。代码比较简单,不写注释了。

编辑过程不表,注意使用tab来缩进代码,而不是用空格键(space key)。另外,要经常使用快捷键CTRL+O保存代码。

注意不要按CTRL+Z来撤销输入,没有这个功能,后果很严重...没有保存的修改会丢的。

#encoding = utf-8

import RPi.GPIO as GPIO

import time

# LED IO: GPIO5>R, GPIO20>G

LED_RED = 5

LED_GREEN = 20

def ledinit():

GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False)

GPIO.setup(LED_RED,GPIO.OUT)

GPIO.setup(LED_GREEN,GPIO.OUT)

GPIO.output(LED_RED,GPIO.LOW)

GPIO.output(LED_GREEN,GPIO.LOW)

#默认关闭LED

#LED闪烁函数:实现红绿LED交替点亮,闪烁次数可定义

def ledblink(times):

for i in range(0,times):

GPIO.output(LED_RED,GPIO.HIGH)

GPIO.output(LED_GREEN,GPIO.LOW)

time.sleep(1)

GPIO.output(LED_GREEN,GPIO.HIGH)

GPIO.output(LED_RED,GPIO.LOW)

time.sleep(1)

GPIO.output(LED_GREEN,GPIO.LOW)

GPIO.output(LED_RED,GPIO.LOW)

#红色LED呼吸灯函数

def lednotify(times):

duty_cycle =[0,10,30,50,70,90,100]

duration = 100 # unit: ms. duration for each duty cycle

notifyled = GPIO.PWM(LED_RED,2000)

notifyled.start(0)

for i in range(0,times):

#darkness>lightness

for j in range(0,len(duty_cycle)):

notifyled.ChangeDutyCycle(duty_cycle[j])

time.sleep(0.001*duration)

#lightness>darkness

for j in range(0,len(duty_cycle)):

notifyled.ChangeDutyCycle(duty_cycle[len(duty_cycle)-j-1])

time.sleep(0.001*duration)

notifyled.stop() #停止呼吸灯

#如果是直接运行本py程序,执行以下代码。如果是被别的py程序调用,则以下代码不执行。

if(__name__=="__main__"):

ledinit()

while True:

n = int(input("输入LED闪烁的次数:"))

lednotify(n)

#ledblink(n)

key = input("输入q退出程序,其它按键继续!:")

if(key =='q' or key == 'Q'):

GPIO.cleanup()

break

四、调试

由于是使用PuTTY远程到树莓派使用nano编程。为了避免频繁修改代码需要打开/关闭nano编辑器,开了两个Putty客户端,一个用于编辑代码,一个用于命令行运行代码。

nano编写的py程序默认没有执行权限。使用命令chmod 744  *.py修改即可。

chmod 744 colorledcontrol.py

运行程序:

python3.5 colorledcontrol.py

双开PuTTY界面如下。程序运行良好,可以控制LED。

双开PuTTY

参考资料:

你可能感兴趣的:(python让灯闪烁)