Hello, i would like to loop the case section until i get a new IR code then i want it to do the things that code points to. is there any way i could do this?
#include <IRremote.h>
/*~~~~ Define Paramaters For Flashy Flash (Flicker) ~~~~*/
int i = 0;
int sd1 = 500;
int sd2 = 1;
int ld1 = 500;
int ld2 = 501;
/*~~~~ Shit For IR Decode Loop ~~~~*/
int Code = 0; // the ir code recived
int refCode = 1; // same as prevCode- just kept for longer
int prevCode = 2; // the previous ir code recived
bool change = true; // was there a change in the ir code?
/*~~~~ Define Infrared Input Pin And LED Output Pins ~~~~*/
const int IRin = 2;
const int REDPIN = 3;
const int GREENPIN = 5;
const int BLUEPIN = 6;
/*~~~~ Setup Basic Sending (For LED Colors) ~~~~*/
void wr(int val) {
analogWrite(REDPIN, val);
}
void wg(int val) {
analogWrite(GREENPIN, val);
}
...
void off() {
wr(0);
wg(0);
wb(0);
}
/*~~~~ Setup The Library For IR Input ~~~~*/
IRrecv irrecv(IRin);
decode_results results;
/*~~~~ General Setup ~~~~*/
void setup() {
pinMode(REDPIN, OUTPUT);
pinMode(GREENPIN, OUTPUT);
pinMode(BLUEPIN, OUTPUT);
/*~~~~ Setup Serial Baud Rate And Send Warning ~~~~*/
Serial.begin(9600);
Serial.println("/~~~~~~~~~~~~~~~~~~~~~~~~~~ Debug Terminal ~~~~~~~~~~~~~~~~~~~~~~~~~~\\");
Serial.println("| |");
Serial.println("| !!! AUTHERIZED LIGHT-WAYZ OR MONSTERS ALIVE PERSONEL ONLY !!! |");
Serial.println("| |");
Serial.println("| THIS TERMINAL CAN MODIFY THE CONTROL BOARD AND DESTROY YOUR LIGHT |");
Serial.println("| |");
Serial.println("\\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/");
/*~~~~ Start The Receiver Script ~~~~*/
irrecv.enableIRIn();
}
/*~~~~ Prepare For LED Color Sending ~~~~*/
void Color_Wheel(int speed, int loopCount, int color) {
switch (speed) {
case 1:
switch (color) {
case 1: //red
while (i <= loopCount) {
delay(rand() % sd1 + sd2);
red();
delay(rand() % sd1 + sd2);
off();
i += 1;
}
break;
case 2: //green
while (i <= loopCount) {
delay(rand() % sd1 + sd2);
green();
delay(rand() % sd1 + sd2);
off();
i += 1;
}
break;
case 3: //blue
while (i <= loopCount) {
delay(rand() % sd1 + sd2);
blue();
delay(rand() % sd1 + sd2);
off();
i += 1;
}
break;
case 4: //yellow
while (i <= loopCount) {
delay(rand() % sd1 + sd2);
green();
delay(rand() % sd1 + sd2);
off();
i += 1;
}
break;
case 5: //pale yellow
while (i <= loopCount) {
delay(rand() % sd1 + sd2);
green();
delay(rand() % sd1 + sd2);
off();
i += 1;
}
break;
case 6: //purple
while (i <= loopCount) {
delay(rand() % sd1 + sd2);
green();
delay(rand() % sd1 + sd2);
off();
i += 1;
}
break;
case 7: //pink
while (i <= loopCount) {
delay(rand() % sd1 + sd2);
green();
delay(rand() % sd1 + sd2);
off();
i += 1;
}
break;
case 8: //orange
while (i <= loopCount) {
delay(rand() % sd1 + sd2);
green();
delay(rand() % sd1 + sd2);
off();
i += 1;
}
break;
case 9: //white
while (i <= loopCount) {
delay(rand() % sd1 + sd2);
green();
delay(rand() % sd1 + sd2);
off();
i += 1;
}
break;
}
break;
case 2:
switch (color) {
case 1: //red
while (i <= loopCount) {
delay(rand() % ld1 + ld2);
red();
delay(rand() % ld1 + ld2);
off();
i += 1;
}
break;
case 2: //green
while (i <= loopCount) {
delay(rand() % ld1 + ld2);
green();
delay(rand() % ld1 + ld2);
off();
i += 1;
}
break;
case 3: //blue
while (i <= loopCount) {
delay(rand() % ld1 + ld2);
blue();
delay(rand() % ld1 + ld2);
off();
i += 1;
}
break;
case 4: //yellow
while (i <= loopCount) {
delay(rand() % ld1 + ld2);
green();
delay(rand() % ld1 + ld2);
off();
i += 1;
}
break;
case 5: //pale yellow
while (i <= loopCount) {
delay(rand() % ld1 + sd2);
green();
delay(rand() % ld1 + sd2);
off();
i += 1;
}
break;
case 6: //purple
while (i <= loopCount) {
delay(rand() % ld1 + sd2);
green();
delay(rand() % ld1 + sd2);
off();
i += 1;
}
break;
case 7: //pink
while (i <= loopCount) {
delay(rand() % ld1 + ld2);
green();
delay(rand() % ld1 + ld2);
off();
i += 1;
}
break;
case 8: //orange
while (i <= loopCount) {
delay(rand() % ld1 + ld2);
green();
delay(rand() % ld1 + ld2);
off();
i += 1;
}
break;
case 9: //white
while (i <= loopCount) {
delay(rand() % ld1 + ld2);
green();
delay(rand() % ld1 + ld2);
off();
i += 1;
}
break;
}
break;
case 3:
break;
}
}
void flicker(int speed, int loopCount, int type) {
switch (type) {
case 1:
Serial.println("Red/Orange Flicker");
case 2:
Serial.println("Red/Orange/Yellow Flicker");
while (i <= loopCount) {
Serial.println("BEFORE RED");
Color_Wheel(speed, 1, 1);
Serial.println("RED");
delay(rand() % sd1 + sd2);
Serial.println("BEFORE ORANGE");
Color_Wheel(speed, 1, 4);
Serial.println("ORANGE");
delay(rand() % sd1 + sd2);
Serial.println("BEFORE YELLOW");
Color_Wheel(speed, 1, 5);
Serial.println("YELLOW");
delay(rand() % sd1 + sd2);
Serial.println("BEFORE OFF");
off();
Serial.println("OFF");
break;
}
}
}
/*~~~~ Watch For IR Commands ~~~~*/
void Light_Controller() {
int Code = results.value;
switch (Code) {
// this is the case section i want to repeat
/*
* Red
* Green
* Blue
* Yellow
* Pale Yellow
* Purple
* Pink
* Orange
* White
*/
case 0xFFA25D:
Serial.println("Code 1");
off();
flicker(1, 10, 2);
break;
case 0xFFE21D:
Serial.println("Code 2");
off();
Color_Wheel(1, 5, 1);
break;
case 0xFF629D:
Serial.println("Code 3");
off();
green();
break;
case 0xFF22DD:
Serial.println("Code 4");
off();
blue();
break;
case 0xFF02FD:
Serial.println("Code 5");
break;
case 0xFFC23D:
Serial.println("Code 6");
break;
case 0xFFE01F:
Serial.println("Code 7");
break;
case 0xFFA857:
Serial.println("Code 8");
break;
case 0xFF906F:
Serial.println("Code 9");
break;
case 0xFF9867:
Serial.println("Code 10");
break;
case 0xFFB04F:
Serial.println("Code 11");
break;
case 0xFF6897:
Serial.println("Code 12");
break;
case 0xFF30CF:
Serial.println("Code 13");
break;
case 0xFF18E7:
Serial.println("Code 14");
break;
case 0xFF7A85:
Serial.println("Code 15");
break;
case 0xFF10EF:
Serial.println("Code 16");
break;
case 0xFF38C7:
Serial.println("Code 17");
break;
case 0xFF5AA5:
Serial.println("Code 18");
break;
case 0xFF42BD:
Serial.println("Code 19");
break;
case 0xFF4AB5:
Serial.println("Code 20");
break;
case 0xFF52AD:
Serial.println("Code 21");
break;
/*
* Red
* Green
* Blue
* Yellow
* Pale Yellow
* Purple
* Pink
* Orange
* White
*/
default:
Serial.println("*** !! ERROR !! ***");
Serial.println("*** !! UNKNOWN CODE RECEIVED !! ***");
Serial.println("*** !! ERROR !! ***");
Serial.println();
Serial.println("Please Report \"ERR: 001\" to 573-***-****OR Email ************@outlook.com");
}
delay(500);
}
} else if (Code == prevCode) {
Serial.println("**********");
Serial.println("* Repeat *");
Serial.println("**********");
} else {
Serial.println("Now Ya Done Fucked Yourself!");
}
prevCode = Code;
}
/*~~~~ Start The Main Command Loop ~~~~*/
void loop() {
if (irrecv.decode(&results)) {
Light_Controller();
Serial.println();
irrecv.resume();
}
}