Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static int activePreset = -1;
- #include <FastLED.h> //add
- #include <IRremote.h>
- #define LED_TYPE WS2812B
- #define COLOR_ORDER GRB
- #define BRIGHTNESS 255
- #define NUM_LEDS 899
- #define DATA_PIN 5
- const int RECV_PIN = 3;
- IRrecv irrecv(RECV_PIN);
- decode_results results;
- unsigned long key_value = 0;
- CRGB leds[NUM_LEDS]; //Add
- void setup(){
- Serial.begin(9600);
- irrecv.enableIRIn();
- irrecv.blink13(true);
- FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS)
- .setCorrection(TypicalLEDStrip)
- .setDither(BRIGHTNESS < 255);
- // set master brightness control
- FastLED.setBrightness(BRIGHTNESS);
- }
- /////////////////////////////////// Setting up various zones
- void zone1(int red, int green, int blue){
- for (int i=0;i<=25;i++){
- leds[i].r = red;
- leds[i].g = green;
- leds[i].b = blue;
- }
- }
- void zone2(int red, int green, int blue){
- for (int i=26;i<=56;i++){
- leds[i].r = red;
- leds[i].g = green;
- leds[i].b = blue;
- }
- }
- void zone3(int red, int green, int blue){
- for (int i=57;i<=197;i++){
- leds[i].r = red;
- leds[i].g = green;
- leds[i].b = blue;
- }
- }
- void zone4(int red, int green, int blue){
- for (int i=198;i<=407;i++){
- leds[i].r = red;
- leds[i].g = green;
- leds[i].b = blue;
- }
- }
- void zone5(int red, int green, int blue){
- for (int i=408;i<=599;i++){
- leds[i].r = red;
- leds[i].g = green;
- leds[i].b = blue;
- }
- }
- void zone6(int red, int green, int blue){
- for (int i=600;i<=707;i++){
- leds[i].r = red;
- leds[i].g = green;
- leds[i].b = blue;
- }
- }
- void zone7(int red, int green, int blue){
- for (int i=708;i<=899;i++){
- leds[i].r = red;
- leds[i].g = green;
- leds[i].b = blue;
- }
- }
- ////////////////////////////////////////////////////////////////////// What the buttons do!!
- void showCurrentPreset()
- {
- switch (activePreset)
- {
- case 0: showProgram0(); break;
- case 1: showProgram1(); break;
- //... other programs here
- default: showDefault(); break;
- }
- }
- void showProgram0()
- {
- // paste the inside of your infinite loop from preset0() here
- static uint16_t sPseudotime = 0;
- static uint16_t sLastMillis = 0;
- static uint16_t sHue16 = 0;
- uint8_t sat8 = beatsin88( 87, 220, 250);
- uint8_t brightdepth = beatsin88( 341, 96, 224);
- uint16_t brightnessthetainc16 = beatsin88( 203, (25 * 256), (40 * 256));
- uint8_t msmultiplier = beatsin88(147, 23, 60);
- uint16_t hue16 = sHue16;//gHue * 256;
- uint16_t hueinc16 = beatsin88(113, 1, 3000);
- uint16_t ms = millis();
- uint16_t deltams = ms - sLastMillis ;
- sLastMillis = ms;
- sPseudotime += deltams * msmultiplier;
- sHue16 += deltams * beatsin88( 400, 5,9);
- uint16_t brightnesstheta16 = sPseudotime;
- for( uint16_t i = 0 ; i < NUM_LEDS; i++) {
- hue16 += hueinc16;
- uint8_t hue8 = hue16 / 256;
- brightnesstheta16 += brightnessthetainc16;
- uint16_t b16 = sin16( brightnesstheta16 ) + 32768;
- uint16_t bri16 = (uint32_t)((uint32_t)b16 * (uint32_t)b16) / 65536;
- uint8_t bri8 = (uint32_t)(((uint32_t)bri16) * brightdepth) / 65536;
- bri8 += (255 - brightdepth);
- CRGB newcolor = CHSV( hue8, sat8, bri8);
- uint16_t pixelnumber = i;
- pixelnumber = (NUM_LEDS-1) - pixelnumber;
- nblend( leds[pixelnumber], newcolor, 64);
- }
- FastLED.show();
- }
- void showProgram1()
- {
- // paste what was in preset1()
- zone1(255, 128, 171);
- zone2(255, 128, 171);
- zone3(103, 58, 183);
- zone4(255, 128, 171);
- zone5(255, 0, 0);
- zone6(103, 58, 183);
- zone7(255, 0, 0);
- FastLED.show();
- }
- void showDefault()
- {
- // paste what was in presetOff()
- zone1(0,0,0);
- zone2(0,0,0);
- zone3(0,0,0);
- zone4(0,0,0);
- zone5(0,0,0);
- zone6(0,0,0);
- zone7(0,0,0);
- FastLED.show();
- }
- // get rid of the presetX() functions and replace with:
- void setCurrentPreset(int newPreset)
- {
- activePreset = newPreset;
- }
- // then your loop() looks like:
- void loop(){
- if (irrecv.decode(&results)){
- setCurrentPreset(1);
- Serial.println(results.value, HEX);
- if (results.value == 0XFFFFFFFF)
- results.value = key_value;
- switch(results.value){
- case 0xFFA25D:
- Serial.println("On/Off");
- setCurrentPreset(-1);
- break;
- case 0xFF629D:
- // Serial.println("Vol+");
- //brightnessUp();
- break;
- case 0xFFE21D:
- // Serial.println("Func/Stop");
- break;
- case 0xFF22DD:
- // Serial.println("|<<");
- break;
- case 0xFF02FD:
- // Serial.println(">||");
- break ;
- case 0xFFC23D:
- // Serial.println(">>|");
- break ;
- case 0xFFE01F:
- // Serial.println("-");
- //brightnessDown();
- break ;
- case 0xFFA857:
- // Serial.println("Vol-");
- //brightnessDown();
- break ;
- case 0xFF906F:
- // Serial.println("+");
- //brightnessUp();
- break ;
- case 0xFF6897:
- // Serial.println("0");
- setCurrentPreset(0);
- break ;
- case 0xFF9867:
- // Serial.println("EQ");
- break ;
- case 0xFFB04F:
- // Serial.println("St/Rept");
- break ;
- case 0xFF30CF:
- // Serial.println("1");
- setCurrentPreset(1);
- break ;
- case 0xFF18E7:
- // Serial.println("2");
- //preset2();
- break ;
- case 0xFF7A85:
- // Serial.println("3");
- //preset3();
- break ;
- case 0xFF10EF:
- // Serial.println("4");
- //preset4();
- break ;
- case 0xFF38C7:
- // Serial.println("5");
- break ;
- case 0xFF5AA5:
- // Serial.println("6");
- break ;
- case 0xFF42BD:
- // Serial.println("7");
- break ;
- case 0xFF4AB5:
- // Serial.println("8");
- break ;
- case 0xFF52AD:
- // Serial.println("9");
- break ;
- }
- key_value = results.value;
- irrecv.resume();
- }
- // same thing as now but with presetX() calls replaced with setCurrentPreset()
- showCurrentPreset();
- }
Advertisement
Add Comment
Please, Sign In to add comment