hi guys first time writer , old reader of the forum
I made a little circuit to control an rgb led strip with my tv remote control.I want to mix colors by enabling-disabling ports ( works) and to make a swirl effect by pressing another button on my remote controller(does not work).
When i try to call the function swirl() , the loop is not endless (stops after a while) and the remote does not work in this period of time
the code im using :
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
#define FADESPEED 8 // make this higher to slow down
void setup() {
pinMode(REDPIN, OUTPUT);
pinMode(GREENPIN, OUTPUT);
pinMode(BLUEPIN, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void swirl() {
int r, g, b;
// fade from blue to violet
for (r = 0; r < 256; r++) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from violet to red
for (b = 255; b > 0; b--) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from red to yellow
for (g = 0; g < 256; g++) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
// fade from yellow to green
for (r = 255; r > 0; r--) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from green to teal
for (b = 0; b < 256; b++) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from teal to blue
for (g = 255; g > 0; g--) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX );
switch (results.value){
case 0x1FED827 : //red on
digitalWrite(3,HIGH);
break;
case 0x1FEF807 : //red off
digitalWrite(3,LOW);
break;
case 0x1FE9867 : //green on
digitalWrite(5,HIGH);
break;
case 0x1FEB847 : // green off
digitalWrite(5,LOW);
break;
case 0x1FE58A7 : // blue on
digitalWrite(6,HIGH);
break;
case 0x1FE7887 : // blue off
digitalWrite(6,LOW);
break;
case 0x1FE30CF : //swirl
swirl();
break;
}
//delay(200); //A simple delay because it reads a lot of values in a press of a button
irrecv.resume(); // Receive the next value
}
}