当前位置: 幻彩灯珠>>灯珠资讯>> rgb灯珠控制电路 rgb灯珠电压

rgb灯珠控制电路 rgb灯珠电压

rgb灯珠控制电路 rgb灯珠电压

rgb灯珠控制电路rgb珠子电压)

arduino学习笔记12-彩色灯制作

牛顿发现光的颜色的奥义,经过系统的观察和研究实验,最终确认:一束白光通过棱镜,它经过两次折射,结果白光被分解成规则的七种颜色的光线。牛顿计算得出的结论是,7色光中只有红、绿、蓝三色光不能分解,不能称之为合成。其它四个色光可以以不同的比例匹配这三个色光。于是红色、绿色、蓝色被称为“三原色光”或“色光三原色”。

每个颜色被分成256个部分,从0到255分别表示该光的光强度。当不同光强度的光混合时,组合了256*256*256=1677216种。例如,红色(255255255)、白色(255255)。RGB LED只是简单地将3种颜色led的灯装入一个led。可以作为三个灯使用。在arduino中,通过用pWM端口调整3色led的阴影,可以调整led任意的颜色。

一、实验现象

串行端口控制开关灯RGB LED调整灯的颜色,输入o时点亮,输入c时熄灭,当灯点亮时输入r120g130b50led输出对应的亮度。

二、实验器材:控制板、RGB LED1个、3个电阻、面包板和杜邦线。

三、实验中使用的函数和句子

像if语句那样,switch。。case允许在不同条件下执行不同的动作。特别是,一个switch语句将一个变量的值与case语句指定的值进行比较。如果发现任意一个case语句与变量值一致。此case语句下的代码被执行。关键字breakswitch用于中止和跳过句子段。在各case句的末尾经常使用。如果没有break语句,switch语句将继续执行下一个公式(“持续下降”),直到遇到break或switch句末直接执行。

语法

switch (var) {

case label:

//语句

break;//请不要掉下来。否则,将向下执行。

case label:

//语句

break;

default:

//语句

}

四、实验电路

五、写代码

串行端口输入格式:o(open),cclose,r120g130b50

int rled=0;//红绿蓝led输出初始值0

int gled=0;

int bled=0;

char kg=#39;c#39;;//led灯开关、c(close熄灭、o(open)点亮

void setup() {

//put your setup code here, to run once:

pinMode(11,OUTPUT);//设定端口号模式

pinMode(10,OUTPUT);

pinMode(9,OUTPUT);

Serial.begin(9600);//串行端口

}

void loop() {

//put your main code here, to run repeatedly:

if(Serial.available()gt;0){

char sta=Serial.read();//读取第一个字符

if (sta==#39;o#39; )//开灯的话

ledcmd(cx); //调用函数ledcmd()参数是sta

}else if(sta==#39;c#39;)//如果关灯的话

kg=#39;c#39;; //将切换模式设为cclose

analogWrite(11,0);//以下是熄灯文

delay(100);

analogWrite(10,0);

delay(100);

analogWrite(9,0);

delay(100);

Serial.flush(); //删除缓存中的数据

}else if(kg==#39;o#39;)//灯亮着的话

ledcmd(cx);

}

}

delay(50);

}

voidledcmdchar cx{//函数ledcmd(、参数cx是字符类型

switch(cx){

case #39;o#39;: //输入点亮命令后

kg=#39;o#39;; //把灯的模式设为o(open)

rled=100;

gled=100;

bled=100;

break;

case #39;r#39;: //红色的话

rled=Serial.parseInt();//读出红色的数值,以下相同

break;

case #39;g#39;:

gled=Serial.parseInt();

break;

case #39;b#39;:

bled=Serial.parseInt();

break;

}

analogWrite(11,rled);//输出红色值

delay(100);

analogWrite(10,gled);

delay(100);

analogWrite(9,bled);

delay(100);

}