本帖最后由 奈何col 于 2012-9-2 20:07 编辑
最重要的,请大家不要鄙视我,新人小玩玩,都是皮毛!不要笑话!
新手继续发第二贴,论坛里面没找到rgb相关的东西,(可能是我眼拙),为了方便和我一样的新人,发个关于rgb的帖子
零,用遥控器控制rgb 3色灯,可以单独控制颜色 和全部关掉,还能适用上下箭头控制亮度,同时串口监视器显示对应事件
一,首先新手套件里面的rgb是共+的,也就是说最长的那个脚接+5V,所以对于新手可能会摸不着头脑
二,了解了这点 接下去就好办了,把所有的东西都反一反就好了,就是原本out模式的pin脚变成in,原本255的 变成0(专业属于比较陌生,说不来)
三,很多新手可能想我一开始一样,对遥控器发出的编码比较混乱,不知道别的同学怎么弄的,我是写了几句带吗,逐个按遥控器然后找到对应的编码,不知道一不一样,发上来让新手看看吧
on | 16753245 | off | 16769565 | 红 | 16720605 | 绿 | 16712445 | 蓝 | 16761405 | 黄 | 16769055 | 紫 | 16754775 | 青 | 16748655 | 白 | 16738455 | 上 | 16750695 | 下 | 16756815 | 1 | 16724175 | 2 | 16718055 | 3 | 16743045 | 4 | 16716015 | 5 | 16726215 | 6 | 16734885 | 7 | 16728765 | 8 | 16730805 | 9 | 16732845 |
代码如下:
[mw_shl_code=cpp,true]#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); //初始化红外遥控
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value); //串口显示所按按键编码
irrecv.resume(); // 接收下一个值
}
}
[/mw_shl_code]
四,就是我的接线图,比较丑,将就一下
五,接下去是代码部分,备注都写了,操作的同时,串口监视器显示出所有的动作
[mw_shl_code=cpp,true]#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int n = 0; //控制亮度
int x = 0; //控制颜色
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); //初始化红外遥控
pinMode(2,0);
pinMode(4,0);
pinMode(6,0);
}
void loop() {
if (irrecv.decode(&results)) {
if(results.value==16750695 && x!=0) //亮
{
n=n+30;
if(n>=120)
n=120;
if (n != 120)
Serial.println("+++++");
else
Serial.println("MAX");
}
if(results.value==16756815 && x!=0) //暗
{
n=n-30;
if(n<=-120)
n=-120;
if (n !=-120)
Serial.println("-----");
else
Serial.println("MIN");
}
if(results.value==16720605) //RED
{
x = 2;
Serial.println("RED");
}
if(results.value==16712445) //GREE
{
x = 4;
Serial.println("GREEN");
}
if(results.value==16761405) //BLUE
{
x = 6;
Serial.println("BLUE");
}
if(results.value==16769565) //关灯重置
{
analogWrite(2,255);
analogWrite(4,255);
analogWrite(6,255); //熄灭LED
x = 0;
n = 0;
Serial.println("turn off LED"); //串口显示关灯
}
analogWrite(2,255);
analogWrite(4,255);
analogWrite(6,255);
analogWrite(x,120-n); //熄灭所有灯 打开所选颜色 所选亮度
irrecv.resume(); // 接收下一个值
}
}
[/mw_shl_code]
|