dreamer 发表于 2013-9-3 13:58:43

红外控制单个led灯的闪烁问题

我用红外控制灯的闪烁和停止,1控制闪烁,5控制停止熄灭,但是按1键闪烁后按5就没有反应了(在串口监控中可以看见没有接收到5键的编码),并且一直闪烁成了死循环,只有按复位键恢复。我也从C语言中知道程序的一个特性之一就是有穷性,如果一直执行就会死机。但是在看一些视频中又能实现,会不会有一些新的方法呢?求教大神帮忙啊,附上代码:
#include <IRremote.h>

int RECV_PIN = 11;
int LED_PIN=4;
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(LED_PIN,OUTPUT);
}

void loop() {
if (irrecv.decode(&results))
{
    if (results.value==16724175)
    {
      for(int i=0;i<2;i++)
      {
       digitalWrite(LED_PIN,HIGH);
       delay(500);
       digitalWrite(LED_PIN,LOW);
       delay(500);
      digitalWrite(LED_PIN,HIGH);
       if(results.value==16726215)
       {   
         digitalWrite(LED_PIN,LOW);
         break;
       }
       else
       {
      i=i-1;
       }
      }
    }
   
    irrecv.resume();
}
}

pathletboy 发表于 2013-9-3 20:23:28

你自己进死循环了,死循环中又不处理红外消息,自然就所谓的死掉了。

林定祥 发表于 2013-9-4 14:27:33

把程序捋一下,有些混乱.
页: [1]
查看完整版本: 红外控制单个led灯的闪烁问题