我结合光控电路和红外遥控搭建了这么一个电路。想用光控来自动控制LED的开关,用遥控可以手动控制LED开关。
程序是这样的
#include <IRremote.h>
const int irReceiverPin = 2;
int a =100; //此处需是环境基础亮度变量,请查看自己的亮度数值,
//填写到此处数值要略大于所测得的数据但小于灯光下的数据
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results; // 定义results变量为红外结果存放位置
void setup ()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
irrecv.enableIRIn(); // 启动红外解码
}
void loop()
{
int n = analogRead(A0); //读取模拟口A0数值
if (irrecv.decode(&results)) { // 解码成功,把数据放入results变量中
// 把数据输入到串口
if(results.value == 0xFF30CF) digitalWrite(13,HIGH);//按下1键时,手动亮起LED
if(results.value == 0xFF18E7) digitalWrite(13,LOW);//按下2键时,手动亮起LED
if(results.value == 0xFF7A85) //按下3键时,光控自动控制LED
{
if (n<= a ) //对光线强度进行判断,如果比我们的预设值大 就点亮LED否则就关闭
{
digitalWrite(13,HIGH);
}
else
{
digitalWrite(13,LOW);
}
}
irrecv.resume(); // 继续等待接收下一组信号
}
}
但问题是到了irrecv.resume(); 程序就停下来等待信号了,虽然results.value == 0xFF7A85 但光控的if (n<= a ) 语句已经不再执行了。。
我是想如果我不按1键或2键,程序就一直自动控制LED开关,如果我按1键,就一直保持亮的状态,不受光控的影响。我应该怎么怎样修改? |