我用标准红外接收器、蜂鸣器和继电器组装了一个电路。关键是当我按下遥控器上的按钮时,我写的条件不满足:
if (ir_rx_results.value == 16724175){
digitalWrite(2,HIGH);
}
if (ir_rx_results.value == 16718055){
digitalWrite(2,LOW);
}
完整代码:
#include <IRremote.h>
#include <NewTone.h>
IRrecv ir_rx(8);
decode_results ir_rx_results;
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
ir_rx.enableIRIn();
NewTone(4, 1300, 50);
delay(6000);
NewTone(4, 1300, 1000);
delay(4000);
digitalWrite(2,HIGH);
delay(4000);
digitalWrite(2,LOW);
}
void loop(){
if (ir_rx.decode(&ir_rx_results)) {
if (ir_rx_results.value == 16724175){
digitalWrite(2,HIGH);
}
if (ir_rx_results.value == 16718055){
digitalWrite(2,LOW);
}
}
}
PS 板:Arduino Uno,继电器:JQC-3FF-SZ(在带 LED 的 PCB 上)。
继电器在引脚 2,蜂鸣器在引脚 4,IR 接收器在引脚 8。
从 IRremote 库中的示例来看,在轮询和等待循环中错过了一个呼叫
resume()