RGB LED 呼吸渐变灯
买了个RGB LED 研究了两三天,做了各呼吸渐变灯,新手纯折腾,各位达人见笑了。VCC接3.3v
RED接pin 11
GREEN接pin15
BLUE接pin13
存在的问题,个别颜色切换时会闪烁,不流畅,求指点,是不是代码有问题?
附上代码rgbled.py#!/usr/bin/env python
import time#导入库
import RPi.GPIO as GPIO
import random
GPIO.setwarnings(False)#禁止占用提示
GPIO.setmode(GPIO.BOARD)#设置GPIO针脚编号模式为板载编号
#——————可修改部分————
#设置红绿蓝针脚
RED_PIN = 11
GREEN_PIN = 15
BLUE_PIN = 13
#设置切换速度
speed=0.02
#————以下请勿修改,除非你知道各参数的意义————
GPIO.setup(RED_PIN, GPIO.OUT)#GPIO模式设置
GPIO.setup(GREEN_PIN, GPIO.OUT)
GPIO.setup(BLUE_PIN, GPIO.OUT)
RED_PWM = GPIO.PWM(RED_PIN,255)#启用PWM调制颜色
GREEN_PWM =GPIO.PWM(GREEN_PIN,255)
BLUE_PWM =GPIO.PWM(BLUE_PIN,255)
RED_PWM.start(0)
GREEN_PWM.start(0)
BLUE_PWM.start(0)
r=0#初始化RGB分量
g=0
b=0
for i in range(0, 100, 1):
r1=random.randint(0, 255)#生成下一个随机颜色
g1=random.randint(0, 255)
b1=random.randint(0, 255)
dr=(r1-r)/100#计算RGB各分量的增量,100为变化幅度
dg=(g1-g)/100
db=(b1-b)/100
for i in range(0, 99, 1):#输出渐变颜色
RED=100-r/2.55 #RGB颜色换算成占空比
GREEN=100-g/2.55
BLUE=100-b/2.55
RED_PWM.ChangeDutyCycle(RED)#更改占空比
GREEN_PWM.ChangeDutyCycle(GREEN)
BLUE_PWM.ChangeDutyCycle(BLUE)
r=r+dr#RGB分量各分量+增量
g=g+dg
b=b+db
time.sleep(speed)#每种渐变颜色停留时间
RED_PWM.stop()#停止PWM调制
GREEN_PWM.stop()
BLUE_PWM.stop()
GPIO.output(RED_PIN,1)#关闭RGB_LED
GPIO.output(GREEN_PIN,1)
GPIO.output(BLUE_PIN,1)
GPIO.cleanup()#清除GPIO通道 非常好,有启迪,顶帖主!谢谢! 不错!基础玩转才是正道!! 楼主,这个RGB LED在哪里淘的?PM个地址好吗? 所以,渐变是通过pwm实现的? flexpad 发表于 2013-11-25 16:44 static/image/common/back.gif
楼主,这个RGB LED在哪里淘的?PM个地址好吗?
我也买过一个,不知道是不是和lz一个店,如果你需要,可以参考一下,蓝冠,东西还可以
http://item.taobao.com/item.htm?id=17159577846 gcd0318 发表于 2013-11-26 11:27 static/image/common/back.gif
所以,渐变是通过pwm实现的?
是的 andrew211 发表于 2013-11-26 19:48 static/image/common/back.gif
是的
再请教,我也用这个灯,这个灯的电流进口是vcc,用三个色彩pin的低电位形成回路,也就是说接通gpio以后,gpio设low的那个颜色是亮的,那么会不会存在电流倒灌树莓派的问题?我是做软件的,硬件电路这部分不灵,中学物理水平,可能问的太trivial了 gcd0318 发表于 2014-1-28 21:46 static/image/common/back.gif
再请教,我也用这个灯,这个灯的电流进口是vcc,用三个色彩pin的低电位形成回路,也就是说接通gpio以后, ...
突然我想明白了,gpio里也有地线,是不是从这里形成回路的…… 谢谢,有个问题
页:
[1]