arduino - 当我单击遥控器上的下一个按钮时,IR 代码不会更改命令
问题描述
我正在用 Arduino 建造一架 IR 控制的直升机并且代码可以工作,但是当我单击下一个按钮让直升机移动到其他地方时,它会在串行监视器中不断打印相同的东西并且命令不会改变......有人可以吗请帮我?这是我的代码:
#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();
}
解决方案
尝试在 if 上运行带有大括号的代码:
#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();
}
}
推荐阅读
- javascript - 使用 JSX 为数组中的每个元素创建一个新的 div 元素?
- stata - 按两类排序数据总和
- powerbi - 图表设置和循环依赖问题
- java - Spring Boot CsvMapper bean 在返回使用 Map 创建的 ResponseEntity 时会导致错误
- google-ads-api - 无法使用 GAQL 按标签获取广告系列
- python - 如何逐行拆分从 Azure 服务总线接收的批处理字符串消息?
- ios - 返回 UITableViewCell 子类类型的通用函数
- python - 如何比较两个txt文件并删除python中第二个文件中的重复项
- python - Python Selenium for 在具有相同 ID 的多个输入字段上循环
- angular - Angular中的空显示