774726922017 发表于 2019-2-24 11:23:22

红外控制LED灯闪烁无法实现

#include <IRremote.h>
int RECV_PIN = 12;            // 红外线接收端
int ledPin1 = 11;                // FRONT LIGHT
int ledPin2 = 10;                // REAR LIGHT
int ledPin3 = 9;                // LEFT LIGHT
int ledPin4 = 8;                // RIGHT LIGHT
boolean ledState1 = LOW;         // ledstate用来存储LED的状态
char ledState2 = 1;         // ledstate用来存储LED2的状态
boolean ledState3 = LOW;         // ledstate用来存储LED3的状态
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup(){
   Serial.begin(9600);
   irrecv.enableIRIn();
   pinMode(ledPin1,OUTPUT);       // 设置LED为输出状态
   pinMode(ledPin2,OUTPUT);       // 设置LED为输出状态
   pinMode(ledPin3,OUTPUT);       // 设置LED为输出状态
   pinMode(ledPin4,OUTPUT);       // 设置LED为输出状态
}

void loop() {
      if (irrecv.decode(&results)) {   
            Serial.println(results.value, HEX);
            irrecv.resume();
            //一旦接收到电源键的代码, LED翻转状态,HIGH变LOW,或者LOW变HIGH
         if(results.value == 0X1AF7680B){
               ledState1 = !ledState1;             //取反      
               digitalWrite(ledPin1,ledState1);    //改变LED相应状态   
               digitalWrite(ledPin2,ledState1);
                  }   
          if(results.value == 0X291C5DEF &ledState2 == 1){
               void blink1();
               ledState2 = 0;
               }
            else if(results.value == 0X291C5DEF &ledState2 == 0) {
            digitalWrite(ledPin3,LOW);
            ledState2 = 1;
               }
               }
            if(results.value == 0X969C0F8B){
                ledState3 = !ledState3;             //取反
                blink2();
         }
}
void blink1()
{
digitalWrite(ledPin3,HIGH);   // led引脚置高电平
delay(500);               // 延时1秒
digitalWrite(ledPin3,LOW);    // led引脚变为低电平
delay(500);
}

照着网上的程序修改后,其中标红色部分无法实现,想的是摁一下LED开始闪烁,再摁一下灭。现在是摁一下LED只亮一下,再摁一下没有变化,再摁又继续亮一下。望请各位大神指点,谢谢

gada888 发表于 2019-2-26 08:37:32

有没有报错,在arduino里
页: [1]
查看完整版本: 红外控制LED灯闪烁无法实现