美文网首页
在树莓派上用python程序控制双色LED灯闪烁

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

作者: 快乐冻鱼 | 来源:发表于2019-03-15 15:51 被阅读0次

序言:

树莓派作为时下流行的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

参考资料

1.fhqlongteng.树莓派 RPI.GPIO 使用手册.   

2.IT小陈.Arduino学习(四) 双色LED实验.

相关文章

网友评论

      本文标题:在树莓派上用python程序控制双色LED灯闪烁

      本文链接:https://www.haomeiwen.com/subject/upqrmqtx.html