Arduino 单击遥控器上的“下一步”按钮时,Ir代码不更改命令

Arduino 单击遥控器上的“下一步”按钮时,Ir代码不更改命令,arduino,Arduino,我正在用Arduino建造一架红外控制直升机,代码正常,但当我点击下一步按钮让直升机移动到其他地方时,它会在串行监视器中不断打印相同的内容,并且命令不会改变。。。有人能帮我吗? 这是我的密码: #include <IRremote.h> #define in1 6 #define in2 7 #define in3 4 #define in4 5 int IR_RECEIVE_PIN = 2; IRrecv IrReceiver(IR_RECEIVE_PIN); decode_re

我正在用Arduino建造一架红外控制直升机,代码正常,但当我点击下一步按钮让直升机移动到其他地方时,它会在串行监视器中不断打印相同的内容,并且命令不会改变。。。有人能帮我吗? 这是我的密码:

#include <IRremote.h>
#define in1 6
#define in2 7
#define in3 4
#define in4 5

int IR_RECEIVE_PIN = 2;
IRrecv IrReceiver(IR_RECEIVE_PIN);
decode_results results;

void setup(){
Serial.begin(9600);
IrReceiver.enableIRIn();

pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop(){
if(IrReceiver.decode(&results))
switch (results.value) {

case 0xFFA857:
Serial.println("case: UP");
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
break;

case 0xFFE01F:
Serial.println("case: DOWN");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
break;

case 0xFF18E7:
Serial.println("case: FORWARD");
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
break;

case 0xFF10EF:
Serial.println("case: LEFT");
break;

case 0xFF5AA5:
Serial.println("case: RIGHT");
break;

case 0xFF48B5:
Serial.println("case: BACKWARDS");
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
break;

}



Serial.println(results.value, HEX);
IrReceiver.resume();
}
#包括
#定义在16中
#定义in27
#定义在3 4中
#在4.5中定义
int IR_接收_引脚=2;
IRrecv IrReceiver(IR_RECEIVE_PIN);
解码_结果;
无效设置(){
Serial.begin(9600);
依那普利();
pinMode(in1,输出);
pinMode(in2,输出);
引脚模式(in3,输出);
pinMode(in4,输出);
}
void循环(){
if(接收解码(&results))
开关(结果值){
案例0xFFA857:
序列号.println(“案例:UP”);
数字写入(in1,高);
数字写入(in2,低);
打破
案例0xFFE01F:
Serial.println(“case:DOWN”);
数字写入(in1,低);
数字写入(in2,低);
打破
案例0xFF18E7:
序列号。打印号(“案例:转发”);
数字写入(in3,高);
数字写入(in4,低电平);
打破
案例0xFF10EF:
Serial.println(“案例:左”);
打破
案例0xFF5AA5:
序列号.println(“案例:右”);
打破
案例0xFF48B5:
Serial.println(“case:BACKWARDS”);
数字写入(in3,低电平);
数字写入(in4,高);
打破
}
Serial.println(results.value,十六进制);
resume();
}

如果出现以下情况,请尝试运行带花括号的代码:

#include <IRremote.h>
#define in1 6
#define in2 7
#define in3 4
#define in4 5

int IR_RECEIVE_PIN = 2;
IRrecv IrReceiver(IR_RECEIVE_PIN);
decode_results results;

void setup() {
  Serial.begin(9600);
  IrReceiver.enableIRIn();

  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}
void loop() {
  if (IrReceiver.decode(&results)) {
    switch (results.value) {

      case 0xFFA857:
        Serial.println("case: UP");
        digitalWrite(in1, HIGH);
        digitalWrite(in2, LOW);
        break;

      case 0xFFE01F:
        Serial.println("case: DOWN");
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);
        break;

      case 0xFF18E7:
        Serial.println("case: FORWARD");
        digitalWrite(in3, HIGH);
        digitalWrite(in4, LOW);
        break;

      case 0xFF10EF:
        Serial.println("case: LEFT");
        break;

      case 0xFF5AA5:
        Serial.println("case: RIGHT");
        break;

      case 0xFF48B5:
        Serial.println("case: BACKWARDS");
        digitalWrite(in3, LOW);
        digitalWrite(in4, HIGH);
        break;
    }

    Serial.println(results.value, HEX);
    IrReceiver.resume();
  }
}
#包括
#定义在16中
#定义in27
#定义在3 4中
#在4.5中定义
int IR_接收_引脚=2;
IRrecv IrReceiver(IR_RECEIVE_PIN);
解码_结果;
无效设置(){
Serial.begin(9600);
依那普利();
pinMode(in1,输出);
pinMode(in2,输出);
引脚模式(in3,输出);
pinMode(in4,输出);
}
void循环(){
if(接收解码(&results)){
开关(结果值){
案例0xFFA857:
序列号.println(“案例:UP”);
数字写入(in1,高);
数字写入(in2,低);
打破
案例0xFFE01F:
Serial.println(“case:DOWN”);
数字写入(in1,低);
数字写入(in2,低);
打破
案例0xFF18E7:
序列号。打印号(“案例:转发”);
数字写入(in3,高);
数字写入(in4,低电平);
打破
案例0xFF10EF:
Serial.println(“案例:左”);
打破
案例0xFF5AA5:
序列号.println(“案例:右”);
打破
案例0xFF48B5:
Serial.println(“case:BACKWARDS”);
数字写入(in3,低电平);
数字写入(in4,高);
打破
}
Serial.println(results.value,十六进制);
resume();
}
}

好的,我试试看。非常感谢。