求救大神~关于RGB LED一直闪烁问题!!
最近正在研究红外遥控的部分,想实现一个红外遥控播放歌曲和灯光可遥控。。红外获取都没有问题,单纯点亮一个LED也可以,但就是RGB LED就行,只要一亮,就再收不到红外的信号了,初步我怀疑是因为程序循环的问题,但又想不出其它一直让RGB LED亮的方式,所以请教大神们如何解决
以下是代码:
#include <IRremote.h>
int RECV_PIN = 11;//定义红外接收器的引脚为11
int LED = 12;//LED
//int ledPin = 7; // RGB LED is connected to digital pin 13
int redPin = 8;// R petal on RGB LED module connected to digital pin 11
int greenPin = 9;// G petal on RGB LED module connected to digital pin 9
int bluePin = 10;// B petal on RGB LED module connected to digital pin 10
IRrecv irrecv(RECV_PIN); // 设置RECV_PIN定义的端口为红外信号接收端口
decode_results results; // 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600); // 开启串口,波特率为9600
pinMode(LED,OUTPUT);
//pinMode(ledPin, OUTPUT); // sets the ledPin to be an output
pinMode(redPin, OUTPUT); // sets the redPin to be an output
pinMode(greenPin, OUTPUT); // sets the greenPin to be an output
pinMode(bluePin, OUTPUT); // sets the bluePin to be an output
irrecv.enableIRIn(); // 启动红外解码
}
void loop()
{
if (irrecv.decode(&results)) { // 解码成功,把数据放入results变量中
// 把数据输入到串口
// Serial.print(results.value, HEX); // 显示红外编码
// Serial.println(results.bits); // 显示红外编码位数
if(results.value==0xFFA25D){
Serial.println("the power key is click...");
if(digitalRead(LED)==HIGH){
digitalWrite(LED,LOW);
setColor(255, 255, 255);// Turn off
}
else{
digitalWrite(LED,HIGH);
TurnOnRGBLED();
}
}
else if(results.value==0xFFE21D){
Serial.println("the menu key is click...");
}
irrecv.resume(); // 继续等待接收下一组信号
}
delay(600); //延时600毫秒,做一个简单的消抖
}
void TurnOnRGBLED(){
setColor(255, 0, 0);// 红色
delay(1000);
setColor(0, 255, 0);// 绿色
delay(1000);
setColor(0, 0, 255);// 蓝色
delay(1000);
setColor(255, 255, 0);// 黄色
delay(1000);
setColor(80, 0, 80);// 紫色
delay(1000);
setColor(0, 255, 255);// 浅绿色
delay(1000);
if(digitalRead(LED)==HIGH){
TurnOnRGBLED();
}
}
void setColor (int red, int green, int blue) // the color generating function
{
analogWrite(redPin, 255-red);
analogWrite(bluePin, 255-blue);
analogWrite(greenPin, 255-green);
} 按描述分析:
1) 红外获取都没有问题
2) 纯点亮一个LED也可以
3) RGB LED 只要一亮,就再收不到红外的信号了
看來可能是 RGB LED 扞擾了紅外接收,可嘗試把 RGB LED遠離紅外接收,又或是做光隔離來確認是否有扞擾的問題。
eddiewwm 发表于 2014-4-23 21:34 static/image/common/back.gif
按描述分析:
1) 红外获取都没有问题
2) 纯点亮一个LED也可以
应该不会是因为光线而导致的接收问题吧,这个还真没试,回头试一下
因为我认为可能是因为无限循环的问题 {:soso__3669389859068460655_4:}没有哪位大神能给解决一下吗 {:soso__3669389859068460655_4:}
页:
[1]