请教各位大侠IR红外线如何实现单一键“开”或“关”功能
近日网上拍如下红外线控制器,准备用MEGA2560+IR做LED开关控制,网上一些程序,但只能实现单一“开”或“关”功能,现想实现单一键“开”或“关”功能,请教该部分的代码如何写?谢谢!
程序:
/*
www.openjumper.com
日期:2013.5.18
IDE 版本:1.0.1
功能:红外遥控器控制LED灯开关
*/
#include <IRremote.h>
int RECV_PIN = 11; // 红外一体化接收头连接到Arduino 11号引脚
int LEDpin = 13; //定义LED输出引脚
IRrecv irrecv(RECV_PIN);
decode_results results; // 用于存储编码结果的对象
void setup()
{
pinMode(LEDpin,OUTPUT);
irrecv.enableIRIn(); // 初始化红外解码
}
void loop() {
if (irrecv.decode(&results))
{
Serial.println( results.value);
if( results.value == 0xFF22DD) //若接收到按键A+(CH1)按下的指令,打开LED
{
digitalWrite(LEDpin,HIGH);
}
else if(results.value == 0xFFE01F) //接收到按键B-(CH2)按下的命令,关闭LED
{
digitalWrite(LEDpin,LOW);
}
irrecv.resume(); // 接收下一个编码
}
}
//功能收到按键A+(CH1)按下的指令,打开LED;接收到按键B-(CH2)按下的命令,关闭LED 设置一个全局变量,在初始化是置0,在loop中收到某键,如电源键信号时,将变量置“反”,即判断是0就置1,判断是1就置0,输出的LED可以根据变量的变化而变,如0变暗,1变亮这样也给电源键指示出状态。 #include <IRremote.h>
int State = 0;
int RECV_PIN = 11; // 红外一体化接收头连接到Arduino 11号引脚
int LEDpin = 13; //定义LED输出引脚
IRrecv irrecv(RECV_PIN);
decode_results results; // 用于存储编码结果的对象
void setup()
{
Serial.begin(9600);
pinMode(LEDpin, OUTPUT);
irrecv.enableIRIn(); // 初始化红外解码
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
if ( results.value == 0xFF22DD) //若接收到按键A+(CH1)按下的指令,打开LED
{
State = !State;
digitalWrite(LEDpin, State);
}
irrecv.resume(); // 接收下一个编码
}
}
哦,原来布尔运算符类!(非)可以解决了,我想了头多大,没有想出来,还要好好学习,谢谢前面两位的指导!谢谢了!
页:
[1]