Reputation:
I am building an IR controlled helicopter with Arduino and the code works, but when I click the next button for the helicopter to move somewhere else, it keeps printing the same thing in the serial monitor and the command does not change... Can someone please help me? Here is my code:
#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();
}
Upvotes: 2
Views: 49
Reputation: 707
Try to run the code with curly brackets on the 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();
}
}
Upvotes: 1