LEDPROJECT69420

Untitled

Aug 15th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.32 KB | None | 0 0
  1. static int activePreset = -1;
  2.  
  3. #include <FastLED.h>  //add
  4. #include <IRremote.h>  
  5. int onoff=0;//0 nothing 1 decoding happens
  6. volatile byte state = HIGH;
  7.  
  8. #define buttonPin 3
  9. #define LED_TYPE    WS2812B
  10. #define COLOR_ORDER GRB
  11. #define BRIGHTNESS  255
  12.  
  13.  
  14. #define NUM_LEDS 899
  15. #define DATA_PIN 5
  16.  
  17. const int RECV_PIN = 3;
  18. IRrecv irrecv(RECV_PIN);
  19. decode_results results;
  20. unsigned long key_value = 0;
  21. CRGB leds[NUM_LEDS]; //Add
  22.  
  23. void setup(){
  24.   Serial.begin(9600);
  25.   pinMode(buttonPin, INPUT_PULLUP);
  26.   irrecv.enableIRIn();
  27.   irrecv.blink13(true);
  28.   FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS)
  29.     .setCorrection(TypicalLEDStrip)
  30.     .setDither(BRIGHTNESS < 255);
  31.  
  32.   // set master brightness control
  33.   attachInterrupt(digitalPinToInterrupt(buttonPin), blink1, CHANGE);
  34.  
  35.   FastLED.setBrightness(BRIGHTNESS);
  36. }
  37.  
  38.  
  39. void blink1() {
  40.   state = !state;
  41.  
  42. }
  43.  
  44. /////////////////////////////////// Setting up various zones
  45.  
  46.  
  47.  
  48. void zone1(int red, int green, int blue){
  49.     for (int i=0;i<=25;i++){
  50.         leds[i].r = red;
  51.         leds[i].g = green;
  52.         leds[i].b = blue;
  53.     }
  54. }
  55.  
  56. void zone2(int red, int green, int blue){
  57.     for (int i=26;i<=56;i++){
  58.         leds[i].r = red;
  59.         leds[i].g = green;
  60.         leds[i].b = blue;
  61.     }
  62. }
  63.  
  64. void zone3(int red, int green, int blue){
  65.     for (int i=57;i<=197;i++){
  66.         leds[i].r = red;
  67.         leds[i].g = green;
  68.         leds[i].b = blue;
  69.     }
  70. }
  71.  
  72. void zone4(int red, int green, int blue){
  73.     for (int i=198;i<=407;i++){
  74.         leds[i].r = red;
  75.         leds[i].g = green;
  76.         leds[i].b = blue;
  77.     }
  78. }
  79.  
  80. void zone5(int red, int green, int blue){
  81.     for (int i=408;i<=599;i++){
  82.         leds[i].r = red;
  83.         leds[i].g = green;
  84.         leds[i].b = blue;
  85.     }
  86. }
  87.  
  88. void zone6(int red, int green, int blue){
  89.     for (int i=600;i<=707;i++){
  90.         leds[i].r = red;
  91.         leds[i].g = green;
  92.         leds[i].b = blue;
  93.     }
  94. }
  95.  
  96.  
  97. void zone7(int red, int green, int blue){
  98.     for (int i=708;i<=899;i++){
  99.         leds[i].r = red;
  100.         leds[i].g = green;
  101.         leds[i].b = blue;
  102.     }
  103. }
  104. ////////////////////////////////////////////////////////////////////// What the buttons do!!
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111. void showCurrentPreset(){
  112.   Serial.println("In preset function");
  113.    switch (activePreset)
  114.    {
  115.    case 0: showProgram0(); break;
  116.    case 1: showProgram1(); break;
  117.    //... other programs here
  118.    default: showDefault(); break;
  119.    }
  120. }
  121.  
  122. void showProgram0()
  123. {
  124.    // paste the inside of your infinite loop from preset0() here
  125.    static uint16_t sPseudotime = 0;
  126.   static uint16_t sLastMillis = 0;
  127.   static uint16_t sHue16 = 0;
  128.  
  129.   uint8_t sat8 = beatsin88( 87, 220, 250);
  130.   uint8_t brightdepth = beatsin88( 341, 96, 224);
  131.   uint16_t brightnessthetainc16 = beatsin88( 203, (25 * 256), (40 * 256));
  132.   uint8_t msmultiplier = beatsin88(147, 23, 60);
  133.  
  134.   uint16_t hue16 = sHue16;//gHue * 256;
  135.   uint16_t hueinc16 = beatsin88(113, 1, 3000);
  136.  
  137.   uint16_t ms = millis();
  138.   uint16_t deltams = ms - sLastMillis ;
  139.   sLastMillis  = ms;
  140.   sPseudotime += deltams * msmultiplier;
  141.   sHue16 += deltams * beatsin88( 400, 5,9);
  142.   uint16_t brightnesstheta16 = sPseudotime;
  143.  
  144.   for( uint16_t i = 0 ; i < NUM_LEDS; i++) {
  145.     hue16 += hueinc16;
  146.     uint8_t hue8 = hue16 / 256;
  147.  
  148.     brightnesstheta16  += brightnessthetainc16;
  149.     uint16_t b16 = sin16( brightnesstheta16  ) + 32768;
  150.  
  151.     uint16_t bri16 = (uint32_t)((uint32_t)b16 * (uint32_t)b16) / 65536;
  152.     uint8_t bri8 = (uint32_t)(((uint32_t)bri16) * brightdepth) / 65536;
  153.     bri8 += (255 - brightdepth);
  154.    
  155.     CRGB newcolor = CHSV( hue8, sat8, bri8);
  156.    
  157.     uint16_t pixelnumber = i;
  158.     pixelnumber = (NUM_LEDS-1) - pixelnumber;
  159.    
  160.     nblend( leds[pixelnumber], newcolor, 64);
  161.   }
  162.  
  163. FastLED.show();
  164. }
  165.  
  166. void showProgram1()
  167. {
  168.    // paste what was in preset1()
  169.     zone1(255, 128, 171);
  170.     zone2(255, 128, 171);
  171.     zone3(103, 58, 183);
  172.     zone4(255, 128, 171);
  173.     zone5(255, 0, 0);
  174.     zone6(103, 58, 183);
  175.     zone7(255, 0, 0);
  176.     FastLED.show();
  177. }
  178.  
  179. void showProgram2()
  180. {
  181.    // paste what was in preset1()
  182.     zone1(0, 128, 171);
  183.     zone2(0, 128, 171);
  184.     zone3(0, 58, 183);
  185.     zone4(0, 128, 171);
  186.     zone5(0, 0, 0);
  187.     zone6(0, 58, 183);
  188.     zone7(0, 0, 150);
  189.     FastLED.show();
  190. }
  191.  
  192.  
  193.  
  194. void showDefault()
  195. {
  196.    // paste what was in presetOff()
  197.     zone1(0,0,0);
  198.     zone2(0,0,0);
  199.     zone3(0,0,0);
  200.     zone4(0,0,0);
  201.     zone5(0,0,0);
  202.     zone6(0,0,0);
  203.     zone7(0,0,0);
  204.     FastLED.show();
  205. }
  206.  
  207.  
  208.  
  209. // get rid of the presetX() functions and replace with:
  210. void setCurrentPreset(int newPreset)
  211. {
  212.    activePreset = newPreset;
  213. }
  214.  
  215. // then your loop() looks like:
  216. void loop(){
  217.   if (state == LOW) {//using the state variable that gets changed in the interrupt function instead of a digitalRead()
  218.       // turn LEDS on:
  219.       onoff=1;
  220.      
  221.   if (irrecv.decode(&results)){
  222.     setCurrentPreset(1);
  223.     Serial.println(results.value, HEX);
  224.         if (results.value == 0XFFFFFFFF)
  225.           results.value = key_value;
  226.  
  227.         switch(results.value){
  228.           case 0xFFA25D:
  229.           Serial.println("On/Off");
  230.           setCurrentPreset(-1);
  231.           break;
  232.           case 0xFF629D:
  233. //          Serial.println("Vol+");
  234.           //brightnessUp();
  235.           break;
  236.           case 0xFFE21D:
  237. //          Serial.println("Func/Stop");
  238.           break;
  239.           case 0xFF22DD:
  240. //          Serial.println("|<<");
  241.           break;
  242.           case 0xFF02FD:
  243. //          Serial.println(">||");
  244.           break ;  
  245.           case 0xFFC23D:
  246. //          Serial.println(">>|");
  247.           break ;              
  248.           case 0xFFE01F:
  249. //          Serial.println("-");
  250.           //brightnessDown();
  251.           break ;  
  252.           case 0xFFA857:
  253. //          Serial.println("Vol-");
  254.           //brightnessDown();
  255.           break ;  
  256.           case 0xFF906F:
  257. //          Serial.println("+");
  258.           //brightnessUp();
  259.           break ;  
  260.           case 0xFF6897:
  261. //          Serial.println("0");
  262.           setCurrentPreset(0);
  263.           break ;  
  264.           case 0xFF9867:
  265. //          Serial.println("EQ");
  266.           break ;
  267.           case 0xFFB04F:
  268. //          Serial.println("St/Rept");
  269.           break ;
  270.           case 0xFF30CF:
  271. //          Serial.println("1");
  272.           setCurrentPreset(1);
  273.           break ;
  274.           case 0xFF18E7:
  275. //          Serial.println("2");
  276.             setCurrentPreset(2);
  277.           //preset2();
  278.           break ;
  279.           case 0xFF7A85:
  280. //          Serial.println("3");
  281.           //preset3();
  282.           break ;
  283.           case 0xFF10EF:
  284. //          Serial.println("4");
  285.           //preset4();
  286.           break ;
  287.           case 0xFF38C7:
  288. //          Serial.println("5");
  289.           break ;
  290.           case 0xFF5AA5:
  291. //          Serial.println("6");
  292.           break ;
  293.           case 0xFF42BD:
  294. //          Serial.println("7");
  295.           break ;
  296.           case 0xFF4AB5:
  297. //          Serial.println("8");
  298.           break ;
  299.           case 0xFF52AD:
  300. //          Serial.println("9");
  301.           break ;      
  302.         }
  303.         key_value = results.value;
  304.         irrecv.resume();
  305.   }
  306.   }  
  307.     // same thing as now but with presetX() calls replaced with setCurrentPreset()
  308.   else if(state == HIGH) {
  309.      
  310.       if (onoff==1){
  311.         onoff=0;
  312.       }
  313.   }
  314.   showCurrentPreset();
  315.  
  316. }
  317.  
Advertisement
Add Comment
Please, Sign In to add comment