3561| 1
|
[求助] 红外控制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只亮一下,再摁一下没有变化,再摁又继续亮一下。望请各位大神指点,谢谢 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed