本帖最后由 hxf 于 2014-7-4 19:05 编辑
前不久楼主看了arduino入门教程的点亮RGB LED觉得很漂亮于是忍不住自己也来做了一个。
楼主当时看过的原版的RGB LED试验
遗憾的是原版的程序只是实现了RGB LED的循环点亮对于患有强迫症的楼主来说只能看不能参与实在是一件痛苦的事情所以楼主决定修改一下实现通过LED来控制RGB LED的点亮。{:soso_e135:}
初步设想是通过三个按键来分别控制LED的红绿蓝三原色的亮暗这样就可以像一个调色板一样通过三个按键的控制来调出自己喜欢的颜色了。
好了废话不多说了,正所谓千里之行始于足下,楼主第一次并没能实现预想的方法,只是简单的控制其实现红绿蓝三种颜色的点亮。和上次一样连接图比较简单楼主这里就不画原理图了。就是RGB的红,绿,蓝三个脚分别带电阻接到11,10,9上,剩下的管脚接vcc,三个按键分别接到7,6,5上(接开关要注意一定要加电阻,楼主第一次就忘了加电阻板子冒烟了才发现,不过板子还是奇迹般的活下去了)。
下面来看一下楼主的程序:
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
int a=0,b=0,c=0;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(7, INPUT);
pinMode(6, INPUT);
pinMode(5, INPUT);
}
void loop()
{ int r=0; //按键取值清零
int g=0;
int b=0;
r=digitalRead(7); //检查有无按键按下
g=digitalRead(6);
b=digitalRead(5);
if(r==HIGH)
{setColor(255, 0, 0);} //第一个按键按下则红灯点亮
else if(g==HIGH)
{setColor(0, 255, 0);} //第二个按键按下则绿灯点亮
else if(b==HIGH)
{setColor(0, 0, 255);} //第三个按键按下则蓝灯点亮
else
{setColor(0, 0, 0);} //无按键按下则灯不亮
delay(10);
}
void setColor(int red, int green, int blue)
{
analogWrite(redPin, 255-red);
analogWrite(greenPin, 255-green);
analogWrite(bluePin, 255-blue);
}
效果如下:
如果第一步实现了的话离最后的设计就已经不远了,只需要在原有的程序上加一个计数步骤就可实现
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
int a=0,c=0,d=0;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(7, INPUT);
pinMode(6, INPUT);
pinMode(5, INPUT);
}
void loop()
{ int r=0;
int g=0;
int b=0;
r=digitalRead(7);
g=digitalRead(6);
b=digitalRead(5);
if(r==HIGH) //如果第一个按键按下红色PWM值加5
{a=a+5;}
else if(g==HIGH) //如果第二个按键按下绿色PWM值加5
{c=c+5;}
else if(b==HIGH) //如果第三个按键按下蓝色PWM值加5
{d=d+5;}
setColor(a, c,d); //显示当前颜色
if(a>=255) //PWM值达到255后清零
{a=0;}
else if(c>=255)
{c=0;}
else if(d>=255)
{d=0;}
delay(200); //需要一个延时不然程序太快按键扫描不上
}
void setColor(int red, int green, int blue)
{
analogWrite(redPin, 255-red);
analogWrite(greenPin, 255-green);
analogWrite(bluePin, 255-blue);
}
话说作者最后虽然实现了当初的设计但是楼主发现是在是没有什么调色方面的天赋确实需要一个按键来炫一下前人已经调制好的颜色,虽然最后楼主也实现了这里就不贴程序了只要把第二个程序改动一下,加一个按键就可以了,下面是各种颜色的数据值。
RGB 颜色名称
(255, 0, 255) 品红色
(0, 0, 255) 蓝色
(0, 255, 255) 青色
(0, 255, 0) 绿色
(255, 255, 0) 黄色
(255, 0, 0) 红色
(128, 0, 128) 紫色
(0, 0, 128) 深蓝色
(0, 128, 128) 鸭绿色
(0, 128, 0) 深绿色
(128, 128, 0) 橄榄色
(128, 0, 0) 栗色
(0, 0, 0) 黑色
(128, 128, 128) 灰色
(192, 192, 192) 银色
(255, 255, 255) 白色
最后的效果视频:
|