Hello all. Very new to programming. I created a program to map out colors to various buttons on remote control, which worked great. You push the button, it turns red, push another button and it turns green, etc. Then I tried adding a new function where you press a button and have the RGB cycle through a number of while loops to brighten and dim between the colors. However, when I select this function the program just keeps going through the while loops and the other buttons no longer function as expected. I'm not sure if I need to add in IR.resume commands after each while loop or what. Any help would be appreciated. I've attached the code below. Thank you.
#include <IRremote.h>
const int IRpin=5;
const int redPin=6;
const int greenPin=9;
const int bluePin=10;//pwm pin 11 reserved by IRremote library for timer
//and can't be used for analog writing
IRrecv IR(IRpin); //creating IR object 'IR'
decode_results cmd; //library specific command
int brightVal=255;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
IR.enableIRIn();
pinMode(redPin,OUTPUT);
pinMode(greenPin,OUTPUT);
pinMode(bluePin,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
while(IR.decode(&cmd)==0){} //call IR.decode function and cmd function
delay(1500); //delay to initialize IR receiver
if(cmd.value==0xFF38C7){ //power on - ok button
analogWrite(redPin,255);
analogWrite(greenPin,255);
analogWrite(bluePin,255);
delay(1500);
}
if(cmd.value==0xFFB04F){ //power off - # button
analogWrite(redPin,0);
analogWrite(greenPin,0);
analogWrite(bluePin,0);
delay(1500);
}
if(cmd.value==0xFFA25D){ //red - 1 button
analogWrite(redPin,brightVal);
analogWrite(greenPin,0);
analogWrite(bluePin,0);
delay(1500);
}
if(cmd.value==0xFF629D){ //green - 2 button
analogWrite(redPin,0);
analogWrite(greenPin,brightVal);
analogWrite(bluePin,0);
delay(1500);
}
if(cmd.value==0xFFE21D){ //blue - 3 button
analogWrite(redPin,0);
analogWrite(greenPin,0);
analogWrite(bluePin,brightVal);
delay(1500);
}
if(cmd.value==0xFF6897){ //Rainbow- * button
digitalWrite(redPin,LOW);
digitalWrite(greenPin,LOW);
digitalWrite(bluePin,LOW);
int brightness=0;
while(brightness<256){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(redPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(greenPin,brightness);
delay(20);
brightness=brightness-5;
}
while(brightness<256){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness+5;
}
while(brightness>0){
analogWrite(bluePin,brightness);
delay(20);
brightness=brightness-5;
}
}
IR.resume();
}