#include <IRremote.h>
const int IR_RECV_PIN = A0;
const int FAN_PIN_A2 = A2;
const int FAN_PIN_A3 = A3;
IRrecv irrecv(IR_RECV_PIN);
decode_results results;
bool fanState = false;
// 你的按键码 FFA25D
const unsigned long TARGET_KEY = 0xFFA25D;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(FAN_PIN_A2, OUTPUT);
pinMode(FAN_PIN_A3, OUTPUT);
digitalWrite(FAN_PIN_A2, LOW);
digitalWrite(FAN_PIN_A3, LOW);
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.print("收到码值 HEX: ");
Serial.println(results.value, HEX);
// ✅过滤NEC长按重复码 0xFFFFFFFF,只有真正按键才执行
if(results.value != 0xFFFFFFFF)
{
if (results.value == TARGET_KEY)
{
fanState = !fanState;
if (fanState)
{
digitalWrite(FAN_PIN_A2, HIGH);
digitalWrite(FAN_PIN_A3, HIGH);
Serial.println("👉风扇开启 A2 A3 = HIGH");
}
else
{
digitalWrite(FAN_PIN_A2, LOW);
digitalWrite(FAN_PIN_A3, LOW);
Serial.println("👉风扇关闭 A2 A3 = LOW");
}
}
}
irrecv.resume();
}
}