I am working on a project where I've mapped an IR remote control to certain functions. I am currently using a massive switch statement to control the program based on the IR remote button pressed.
Is there a an alternative to using a switch statement, or is a switch the best way to go?
decode_results results; // Initialize the results
IRrecv irrecv(irPin); // Initialize the IR sensor
int buttonPressed;
void setup()
{
Serial.begin(115200);
Serial.println("Tile Controller");
analogReference(DEFAULT);
irrecv.enableIRIn(); // Start the receiver
Wire.begin(); // Join the I2C network
}
void loop()
{
if (irrecv.decode(&results))
{
if(results.value != buttonHeld)
{
buttonPressed = results.value;
Serial.println(buttonPressed,HEX);
}
switch(buttonPressed)
{
case 0x3AC5: // 11 - Brightness Up
{
if(results.value == buttonHeld)
{
Serial.println("Brightness Up Held");
brightnessUpHeld();
}
else
{
Serial.println("Brightness Up Pressed");
brightnessUpPressed();
}
break;
}
case 0xFFFFBA45: // 12 - Brightness Down
{
if(results.value == buttonHeld)
{
Serial.println("Brightness Down Held");
brightnessDownHeld();
}
else
{
Serial.println("Brightness Down Pressed");
brightnessDownPressed();
}
break;
}
case 0xFFFF827D: // 13 - Pause
{
if(results.value == buttonHeld)
{
Serial.println("Pause Held");
pauseHeld();
}
else
{
Serial.println("Pause Pressed");
pausePressed();
}
break;
}
case 0x2FD: // 14 - Power
{
if(results.value == buttonHeld)
{
Serial.println("Power Held");
powerHeld();
}
else
{
Serial.println("Pause Pressed");
powerPressed();
}
break;
}
case 0x1AE5: // 21 - Red
{
if(results.value == buttonHeld)
{
Serial.println("Red Held");
redHeld();
}
else
{
Serial.println("Red Pressed");
redPressed();
}
break;
}
case 0xFFFF9A65: // 22 - Green
{
if(results.value == buttonHeld)
{
Serial.println("Green Held");
greenHeld();
}
else
{
Serial.println("Green Pressed");
greenPressed();
}
break;
}
case 0xFFFFA25D: // 23 - Blue
{
if(results.value == buttonHeld)
{
Serial.println("Blue Held");
blueHeld();
}
else
{
Serial.println("Blue Pressed");
bluePressed();
}
break;
}
case 0x22DD: // 24 - White
{
if(results.value == buttonHeld)
{
Serial.println("White Held");
whiteHeld();
}
else
{
Serial.println("White Pressed");
whitePressed();
}
break;
}
case 0x2AD5: // 31 - Red 1
{
if(results.value == buttonHeld)
{
Serial.println("Red One Held");
redOneHeld();
}
else
{
Serial.println("Red One Pressed");
redOnePressed();
}
break;
}
case 0xFFFFAA55: // 32 - Green 1
{
if(results.value == buttonHeld)
{
Serial.println("Green One Held");
greenOneHeld();
}
else
{
Serial.println("Green One Pressed");
greenOnePressed();
}
break;
}
case 0xFFFF926D: // 33 - Blue 1
{
if(results.value == buttonHeld)
{
Serial.println("Blue One Held");
blueOneHeld();
}
else
{
Serial.println("Blue One Pressed");
blueOnePressed();
}
break;
}
case 0x12ED: // 34 - White 1
{
if(results.value == buttonHeld)
{
Serial.println("White One Held");
whiteOneHeld();
}
else
{
Serial.println("White One Pressed");
whiteOnePressed();
}
}
case 0xAF5: // 41 - Red 2
{
if(results.value == buttonHeld)
{
Serial.println("Red 2 Held");
redTwoHeld();
}
else
{
Serial.println("Red 2 Pressed");
redTwoPressed();
}
break;
}
case 0xFFFF8A75: // 42 - Green 2
{
if(results.value == buttonHeld)
{
Serial.println("Green 2 Held");
greenTwoHeld();
}
else
{
Serial.println("Green 2 Pressed");
greenTwoPressed();
}
break;
}
case 0xFFFFB24D: // 43 - Blue 2
{
if(results.value == buttonHeld)
{
Serial.println("Blue 2 Held");
blueTwoHeld();
}
else
{
Serial.println("Blue 2 Pressed");
blueTwoPressed();
}
break;
}
case 0x32CD: // 44 - White 2
{
if(results.value == buttonHeld)
{
Serial.println("White 2 Held");
whiteTwoHeld();
}
else
{
Serial.println("White 2 Pressed");
whiteTwoPressed();
}
break;
}
case 0x38C7: // 51 - Red 3
{
if(results.value == buttonHeld)
{
Serial.println("Red 3 Held");
redThreeHeld();
}
else
{
Serial.println("Red 3 Pressed");
redThreePressed();
}
break;
}
case 0xFFFFB847: // 52 - Green 3
{
if(results.value == buttonHeld)
{
Serial.println("Green 3 Held");
greenThreeHeld();
}
else
{
Serial.println("Green 3 Pressed");
greenThreePressed();
}
break;
}
case 0x7887: // 53 - Blue 3
{
if(results.value == buttonHeld)
{
Serial.println("Blue 3 Held");
blueThreeHeld();
}
else
{
Serial.println("Blue 3 Pressed");
blueThreePressed();
}
break;
}
case 0xFFFFF807: // 54 - White 3
{
if(results.value == buttonHeld)
{
Serial.println("White 3 Held");
whiteThreeHeld();
}
else
{
Serial.println("White 3 Pressed");
whiteThreePressed();
}
break;
}
case 0x18E7: // 61 - Red 4
{
if(results.value == buttonHeld)
{
Serial.println("Red 4 Held");
redFourHeld();
}
else
{
Serial.println("Red 4 Pressed");
redFourPressed();
}
break;
}
case 0xFFFF9867: // 62 - Green 4
{
if(results.value == buttonHeld)
{
Serial.println("Green 4 Held");
greenFourHeld();
}
else
{
Serial.println("Green 4 Pressed");
greenFourPressed();
}
break;
}
case 0x58A7: // 63 - Blue 4
{
if(results.value == buttonHeld)
{
Serial.println("Blue 4 Held");
blueFourHeld();
}
else
{
Serial.println("Blue 4 Pressed");
blueFourPressed();
}
break;
}
case 0xFFFFD827: // 64 - White 4
{
if(results.value == buttonHeld)
{
Serial.println("White 4 Held");
whiteFourHeld();
}
else
{
Serial.println("White 4 Pressed");
whiteFourPressed();
}
break;
}
case 0x28D7: // 71 - Red DIY Up
{
if(results.value == buttonHeld)
{
Serial.println("Red DIY Up Held");
redDIYUpHeld();
}
else
{
Serial.println("Red DIY Up Pressed");
redDIYUpPressed();
}
break;
}
case 0xFFFFA857: // 72 - Green DIY Up
{
if(results.value == buttonHeld)
{
Serial.println("Green DIY Up Held");
greenDIYUpHeld();
}
else
{
Serial.println("Green DIY Up Pressed");
greenDIYUpPressed();
}
break;
}
case 0x6897: // 73 - Blue DIY Up
{
if(results.value == buttonHeld)
{
Serial.println("Blue DIY Up Held");
blueDIYUpHeld();
}
else
{
Serial.println("Blue DIY Up Pressed");
blueDIYUpPressed();
}
break;
}
case 0xFFFFE817: // 74 - Quick
{
if(results.value == buttonHeld)
{
Serial.println("Quick Held");
quickHeld();
}
else
{
Serial.println("Quick Pressed");
quickPressed();
}
break;
}
case 0x8F7: // 81 - Red DIY Down
{
if(results.value == buttonHeld)
{
Serial.println("Red DIY Down Held");
redDIYDownHeld();
}
else
{
Serial.println("Red DIY Down Pressed");
redDIYDownPressed();
}
break;
}
case 0xFFFF8877: // 72 - Green DIY Down
{
if(results.value == buttonHeld)
{
Serial.println("Green DIY Down Held");
greenDIYDownHeld();
}
else
{
Serial.println("Green DIY Down Pressed");
greenDIYDownPressed();
}
break;
}
case 0x48B7: // 73 - Blue DIY Down
{
if(results.value == buttonHeld)
{
Serial.println("Blue DIY Down Held");
blueDIYDownHeld();
}
else
{
Serial.println("Blue DIY Down Pressed");
blueDIYDownPressed();
}
break;
}
case 0xFFFFC837: // 84 - Slow
{
if(results.value == buttonHeld)
{
Serial.println("Slow Held");
slowHeld();
}
else
{
Serial.println("Slow Pressed");
slowPressed();
}
break;
}
case 0x30CF: // 84 - DIY 1
{
if(results.value == buttonHeld)
{
Serial.println("DIY 1 Held");
diyOneHeld();
}
else
{
Serial.println("DIY 1 Pressed");
diyOnePressed();
}
break;
}
case 0xFFFFB04F: // 84 - DIY 2
{
if(results.value == buttonHeld)
{
Serial.println("DIY 2 Held");
diyTwoHeld();
}
else
{
Serial.println("DIY 2 Pressed");
diyTwoPressed();
}
break;
}
case 0x708F: // 84 - DIY 3
{
if(results.value == buttonHeld)
{
Serial.println("DIY 3 Held");
diyThreeHeld();
}
else
{
Serial.println("DIY 3 Pressed");
diyThreePressed();
}
break;
}
case 0x708F: // 84 - DIY 3
{
if(results.value == buttonHeld)
{
Serial.println("DIY 3 Held");
diyThreeHeld();
}
else
{
Serial.println("DIY 3 Pressed");
diyThreePressed();
}
break;
}
case 0xFFFFF00F: // 84 - DIY 3
{
if(results.value == buttonHeld)
{
Serial.println("Auto Held");
autoHeld();
}
else
{
Serial.println("Auto Pressed");
autoPressed();
}
break;
}
}
irrecv.resume(); // Receive the next IR value
}
}