arduino-红外判断长按控制led(有延迟)

当我们使用最简单的红外发信器时,单次点击是没有问题的,但是当长按一个按钮时会接收到16进制的FFFFFFFF转化为10进制为4294967295,如果要处理长按信息,我的思路是设置两个string类型的变量,一个储存当前的状态,一个储存上一个状态,日过当前状态接受到了FFFFFFFF那么就把当前状态变为上一个状态的值,如果不是那么更新两个状态,没有接收到信息则初始化状态,这样就必须有延迟我测试的150毫秒的延迟是比较好的,如果不要求高精度,这样是刚好的,下面放一个用长按控制led的代码,长按按钮亮,松开则灭

//长按红外模板
#include <IRremote.h>

int RECV_PIN = 8;//接受脚位
String strp,strnow;
IRrecv irrecv(RECV_PIN);//红外接收器的对象irrecv

decode_results results;//储存接收到的红外信息

void setup()
{
  Serial.begin(9600);//串口输出
  Serial.println("begin...");
  irrecv.enableIRIn(); // 启动红外
  Serial.println("end");
  pinMode(7,OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {//如果接受到红外信号存入results内
    Serial.println(results.value);//十六进制打印信号
//    按一下
//    if(results.value==0xFF30CF){
//      digitalWrite(7,HIGH);
//    }else if(results.value==0xFF6897){
//      digitalWrite(7,LOW);
//    }
    if(results.value==4294967295){//最大值接收到重复值
      strnow=strp;//把当前值变为上一个接收到的
    }else{//不是重复的则更新
      strnow=results.value;
      strp=results.value;
    }
//    Serial.println(strnow+"   "+strp);
    if(strnow=="16724175"){
      digitalWrite(7,HIGH);
    }
    strnow="";
    irrecv.resume(); // 确认接收下一个
    
  }else{
    digitalWrite(7,LOW);
  }
  delay(150);
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些实现方法。 首先,您需要准备以下材料: - Arduino开发板 - 红外遥控器模块 - LED灯 - 杜邦线若干 接下来,您可以按照以下步骤进行操作: 1. 将红外遥控器模块连接到Arduino开发板上,可以参考其引脚连接图进行连接。 2. 在Arduino IDE中,安装并打开红外遥控器模块的文件。可以通过Sketch -> Include Library -> Manage Libraries来搜索并安装。 3. 编写代码,实现红外遥控器控制LED灯的功能。可以参考以下示例代码: ```c++ #include <IRremote.h> const int RECV_PIN = 11; // 红外遥控器模块连接的引脚 IRrecv irrecv(RECV_PIN); decode_results results; const int LED_PIN = 13; // LED灯连接的引脚 void setup() { Serial.begin(9600); irrecv.enableIRIn(); // 启用红外遥控器模块 pinMode(LED_PIN, OUTPUT); // 将LED灯的引脚设置为输出模式 } void loop() { if (irrecv.decode(&results)) // 监听红外遥控器 { Serial.println(results.value, HEX); // 输出红外遥控器的数值 switch (results.value) // 根据不同的数值来控制LED灯 { case 0xFF6897: digitalWrite(LED_PIN, HIGH); // 打开LED灯 break; case 0xFF9867: digitalWrite(LED_PIN, LOW); // 关闭LED灯 break; default: break; } irrecv.resume(); // 继续监听红外遥控器 } } ``` 4. 将Arduino开发板连接到电脑上,上传代码,然后将LED灯连接到对应的引脚上。 5. 使用红外遥控器控制LED灯,按下不同的按键即可实现打开或关闭LED灯的功能。 希望以上步骤能对您有所帮助,如有疑问可以随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值