First of all, sorry for my bad English. I need to control lights using IR remote , my codes are done but except one thing. There are totally 12 led bulbs connected to Arduino, which are divided as 4 parts, like 4 buttons in IR remote. When I press the button in IR remote it works fine but if I press the button 1, it goes to switch case and finds my button code and run the codes which I have written inside the switch case but inside the switch case I have a while loop . I need to stop the while loop when the next button is pressed but I cannot stop the while loop. Help me to sort this problem.
![]()
Here i post my code
#include <IRremote.h>
#define PIN_RECEIVER A0
int Lane1[] = {13,12,11}; // Lane 1 Red, Yellow and Green
int Lane2[] = {10,9,8};// Lane 2 Red, Yellow and Green
int Lane3[] = {7,6,5};// Lane 3 Red, Yellow and Green
int Lane4[] = {4,3,2};// Lane 4 Red, Yellow and Green
IRrecv receiver(PIN_RECEIVER);
decode_results results;
void setup()
{
receiver.enableIRIn();
for (int i = 0; i < 3; i++)
{
pinMode(Lane1[i], OUTPUT);
pinMode(Lane2[i], OUTPUT);
pinMode(Lane3[i], OUTPUT);
pinMode(Lane4[i], OUTPUT);
}
}
void loop()
{
if (receiver.decode())
{
translateIR();
receiver.resume(); // Receive the next value
}
}
void algorithm()
{
int n=0;
while(n==0){
digitalWrite(Lane1[2], HIGH); //lane 1-Green
digitalWrite(Lane3[0], HIGH);
digitalWrite(Lane4[0], HIGH);
digitalWrite(Lane2[0], HIGH);
receiver.resume();
delay(7000);
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane3[0], LOW);
digitalWrite(Lane1[1], HIGH); //lane 1-Yellow
digitalWrite(Lane3[1], HIGH); //lane 3-Yellow
receiver.resume();
delay(3000);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane1[0], HIGH); //lane 1-Red
digitalWrite(Lane3[2], HIGH); //lane 3-Green
receiver.resume();
delay(7000);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane4[0], LOW);
digitalWrite(Lane3[1], HIGH); //lane 3-Yellow
digitalWrite(Lane4[1], HIGH); //lane 4-Yellow
receiver.resume();
delay(3000);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane3[0], HIGH); //lane 3-Red
digitalWrite(Lane4[2], HIGH); //lane 4-Green
receiver.resume();
delay(7000);
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane2[0], LOW);
digitalWrite(Lane4[1], HIGH); //lane 4-Yellow
digitalWrite(Lane2[1], HIGH); //lane 2-Yellow
receiver.resume();
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane4[0], HIGH); //lane 4-Red
digitalWrite(Lane2[2], HIGH); //lane 2-Green
receiver.resume();
delay(7000);
digitalWrite(Lane1[0], LOW);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane1[1], HIGH); //lane 1-Yellow
digitalWrite(Lane2[1], HIGH); //lane 2-Yellow
receiver.resume();
delay(3000);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane2[1], LOW);
}
}
void translateIR()
{
// Takes command based on IR code received
switch (receiver.decodedIRData.command) {
case 168:
// All Lane goes OFF
digitalWrite(Lane1[0], LOW);
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane3[0], LOW);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane4[0], LOW);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane2[0], LOW);
break;
case 48:
//Keypad button "1"
//Lane 1 - Green
digitalWrite(Lane1[0], LOW);
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane1[1], HIGH); //lane 1-Yellow
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane3[0], HIGH); //lane 3-Red
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane4[0], HIGH); //lane 4-Red
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane2[0], HIGH); //lane 2-red
delay(3000);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane1[2], HIGH); //lane 1-Green
break;
case 24:
//Keypad button "2"
//Lane 3 - Green
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane4[0], HIGH); //lane 4-Red
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane2[0], HIGH); //lane 2-Red
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane1[0], HIGH); //lane 1-Red
digitalWrite(Lane3[0], LOW);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane3[1], HIGH); //lane 3-Yellow
delay(3000);
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane3[2], HIGH); //lane 3-Green
break;
case 122:
//Keypad button "3"
//Lane 4 - Green
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane4[0], LOW);
digitalWrite(Lane4[1], HIGH); //lane 4-Yellow
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane2[0], HIGH); //lane 2-Red
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane1[0], HIGH); //lane 1-Red
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane3[0], HIGH); //lane 3-Red
delay(3000);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane4[2], HIGH); //lane 4-Green
break;
case 16:
//Keypad button "4"
//Lane 2 - green
digitalWrite(Lane4[2], LOW);
digitalWrite(Lane4[1], LOW);
digitalWrite(Lane4[0], HIGH); //lane 4-Red
digitalWrite(Lane2[0], LOW);
digitalWrite(Lane2[2], LOW);
digitalWrite(Lane2[1], HIGH); //lane 2-Yellow
digitalWrite(Lane1[2], LOW);
digitalWrite(Lane1[1], LOW);
digitalWrite(Lane1[0], HIGH); //lane 1-Red
digitalWrite(Lane3[1], LOW);
digitalWrite(Lane3[2], LOW);
digitalWrite(Lane3[0], HIGH); //lane 3-Red
delay(3000);
digitalWrite(Lane2[1], LOW);
digitalWrite(Lane2[2], HIGH); //lane 2-Green
break;
case 194:
algorithm();
break;
receiver.resume();
}
}