圣源电子制作

标题: 放松LED与单纯RGB LED的颜色混合RGB灯-转载外国网站 [打印本页]

作者: SYDZ__顺    时间: 2011-9-1 14:44
标题: 放松LED与单纯RGB LED的颜色混合RGB灯-转载外国网站
与RGB LED的颜色混合今天是没有问题的。 随着PWM通道,而现在几乎所有处理器简单组合的RGB颜色分量影响冰找到帮助。 直接功率控制的RGB渠道比较混乱,所以建议使用HSV(色调,饱和度,亮度)到RGB的转换,这是接近人类的色觉。 此外,描述建筑灯具使用的转换。
有一点数学
单纯疱疹病毒或HSB模式
zkratka缩写

anglický název英文名称

český název捷克名称

Rozsah hodnot值的范围

H H

hue色调

odstín阴

<0,360°> <0.360 °>

S S

saturation饱和

sytost深入

<0,1> nebo <0,100%> <0,1>或<0.100%>

V,B V,B

value, brightness值,亮度

jas亮度

<0,1> nebo <0,100%> <0,1>或<0.100%>


随着色调,亮度和饱和度(H,S,V)指定的值我们可以计算出RGB值使用下列关系:


图形显示的色调和饱和度
表1 - 一些输入值结果
barva 的颜色

H H

S S

V

R ř

G

B

bílá 白色的

- -

0 0

1 1

1 1

1 1

1 1

červená

0° 0 °

1 1

1 1

1 1

0 0

0 0

žlutá

60° 60 °

1 1

1 1

1 1

1 1

0 0

zelená 绿

120° 120 °

1 1

1 1

0 0

1 1

0 0

světle modrá 浅蓝

180° 180 °

1 1

1 1

0 0

1 1

1 1

modrá

240° 240 °

1 1

1 1

0 0

0 0

1 1

purpurová 品红

300° 300 °

1 1

1 1

1 1

0 0

1 1

červená

360° 360 °

1 1

1 1

1 1

0 0

0 0


建设
施工方便,可以省略的参与和与阻塞电容晶体将被设置如果内部振荡器。 整个电路是由在SMD封装ATmega8的。  LED是通过连接到处理器的PWM通道BC337晶体管。 灯泡是由一个红外遥控器是用来解码SFH5110接收器连接到外部中断处理器。 电源电路为9V,如果我们选择了不同的需要重新计算的阻力和动力方面的电阻R1 - R3。  PCB设计允许您连接到我的情况下LED 8RGB仅用于第四
该计划涉及
             (, 下载次数: 87)       

PCB设计和人员
   (, 下载次数: 88) (, 下载次数: 86)
为确保颜色的搭配是用在普通的抽动盘片盒一次obmotaná描图纸,并在LED上安装。 可能会增加光衰减但颜色是干净多了。  PCB是在牛奶放在玻璃灯,透过玻璃的红外线光束穿过没有任何问题。
   (, 下载次数: 87) (, 下载次数: 84)
列表组件

C1,C2,C3,C8
100nF的

C6
100uF的

C7
10uF的

IC1
7805或78L05
5V的稳定剂
IC2
SFH - 5110
红外解调器
IC3
ATmega8的- 16AU
TQFP 32房屋
J1
PSH02 - 02P
连接器的电源
J2
打破栏2x3pin
通过SPI编程
L1

100UH
LED1 - LED8
RGB LED
5MM,4000mcd,40 °,共阳极
Q1 - Q3
BC337

R1 - R3
82R/1W为4LED


62R/1W为6LED


39R/1W为8LED

R4 - R6
1K
SMD1206
R7
100R

R8
10K
[/td]
[/tr][/tr]

C4,C5,XTAL1不得使用,如果你设置内部振荡器。
R1 - R3是计算电源电压9V
软件
这是没有意义的解码算法,发布的远程控制,因为这问题已经发表过很多次。 所以我决定给这里只直接控制功能,RGB的LED。 他们都写在C语言编程
要调整色调,饱和度和亮度是一个功能HSVtoRGB如介绍所述。 该函数存储到PWM通道的比较寄存器的计算RGB值。 为了节省空间,在数据存储和计算CPU时间,我们使用真实的数字,但整体。 然后计算算法如下所示:
  

变量/ /可能的值:H = <0.360>,S = <0.255>,V = <0.255> / / RGB是比较PWM通道#寄存器ř OCR1A定义的#define#定义克OCR2 OCR1B B / / ----- ---------------------- HSV到RGB的转换----------------- HSVtoRGB无效(无符号整数H,无符号字符S,无符号字符V){长Q,T,P,F,无符号字符我;如果(a = 0){R = G = B = V;返回;} I = H / 60架F = H 60%,P =((V *(255 - S))/ 255)Q =((V *(15049 - S * F))/ 15049)= T((V *(15049 - S *(59 - F)))/ 15049),开关(I){案件0:R = V G = T B = P;突破,个案1:R = Q G = V B = P;突破;案例2 R = P G = V B = T;突破,个案3:R = P G = Q B = V;突破,个案4:R = T G = P B = V;突破;默认R = V G = P B = Q;打破;}}
亮度线性化
另一个有用的功能,可使用的线性亮度。 因为人眼感知的亮度对数,线性化提供我们的情况下指数函数,一个破碎的曲线,如图所示。
255亮度值分为四个部分,其中的直线职能不同坡度。
亮度的步骤数,然后从256降低到32,这是相当足够了。 如果我们进入了一个比31更大的数字输入功能,返回值255
(, 下载次数: 83)
残破的亮度线性化曲线
  / /函数进行线性化------------- -------------亮度
/ / X = <0.31>
无符号字符linear_value(无符号字符X)
{
如果(x> 31)
               返回255;
开关(X / 8){
    案件0:X = X * 2 +2;突破;  
    案例1:X = X * 6-26;突破;
    例2:X = X * 8-56;突破;
    案例3:X = X * 16-241;突破;
    默认:突破;
  }
返回X;
}
一些颜色的例子
  #定义红色0
#定义黄色60
#定义绿色120
#定义light_blue 180
#定义蓝240
#定义洋红300
/ /红色,饱和度和亮度最大
HSVtoRGB(红,255255);
/ /红色,最大饱和度,具有更小的特征“linear_value”亮度
HSVtoRGB(红,255,linear_value(20));
/ /蓝色,最大深度,最大亮度
HSVtoRGB(蓝色,255,linear_value(31));
/ /蓝色,半饱和度,亮度最大
HSVtoRGB(蓝色,128,linear_value(50));
照片从表率
(, 下载次数: 89)
结论
灯泡是作为一个例子适合女性的礼物。 本文的主要目的是勾勒出HSV到RGB的转换。 除调整色调,饱和度和亮度可以进行编程,如一个阴影频谱自动扫描等功能,具有自动关机休眠一段时间,迪斯科效果等
适用灯将被连接到PC串行端口和程序的管理应用。


作者: SYDZ__顺    时间: 2011-9-1 15:25
(, 下载次数: 25)
(, 下载次数: 257)
(, 下载次数: 27)

作者: richsjh    时间: 2013-4-10 19:50
试试看
,看效果怎么样




欢迎光临 圣源电子制作 (https://sydz.syyyd.com/) Powered by Discuz! X3.4