Advertisement
LeventeDaradici

Infrared remote controlled WS2812B RGB LED strip with POWER ON status memory - ARDUINO FOR BEGINNERS

Mar 6th, 2022
841
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.59 KB | None | 0 0
  1. #include "IRremote.h"
  2. #include <Adafruit_NeoPixel.h>
  3. #include <EEPROM.h>
  4.  
  5. int receiver = 11;
  6. int Red, Green, Blue, Power, Brightness, Speed;
  7. int RedAdress = 0;
  8. int GreenAdress = 1;
  9. int BlueAdress = 2;
  10. int BrightnessAdress = 3;
  11. int SpeedAdress = 4;
  12. int PowerAdress = 5;
  13.  
  14. #define LED_PIN 6
  15. #define LED_COUNT 39
  16. Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
  17.  
  18. IRrecv irrecv(receiver);     // create instance of 'irrecv'
  19. decode_results results;      // create instance of 'decode_results'
  20.  
  21.  
  22.  
  23. void setup()
  24.      {
  25.        Serial.begin(9600);
  26.        irrecv.enableIRIn(); // Start the receiver
  27.  
  28.        strip.begin();  
  29.        Serial.println(" Reading data from EEprom...");
  30.        Red = EEPROM.read(RedAdress);
  31.        Serial.print("RED VALUE = "); Serial.println(Red);
  32.        Green = EEPROM.read(GreenAdress);
  33.        Serial.print("GREEN VALUE = "); Serial.println(Green);
  34.        Blue = EEPROM.read(BlueAdress);
  35.        Serial.print("BLUE VALUE = "); Serial.println(Blue);
  36.        Brightness = EEPROM.read(BrightnessAdress);
  37.        Serial.print("BRIGHTNESS VALUE = "); Serial.println(Brightness);
  38.        Speed = EEPROM.read(SpeedAdress);
  39.         if (Speed > 50) Speed = 0;
  40.        Serial.print("SPEED VALUE = "); Serial.println(Speed);      
  41.        Power = EEPROM.read(PowerAdress);
  42.        Serial.print("POWER VALUE = "); Serial.println(Power);
  43.        strip.setBrightness(Brightness);
  44.        if (Power = 1)
  45.           {
  46.               colorWipe(strip.Color(Red, Green, Blue), Speed);
  47.           } else
  48.                 {
  49.                    colorWipe(strip.Color(0, 0, 0), 0);
  50.                 }
  51.        
  52.        
  53.        strip.show();
  54.  
  55.      }
  56.  
  57. void loop()
  58.      {
  59.    if (irrecv.decode(&results)) // have we received an IR signal?
  60.           {
  61.              translateIR();
  62.              irrecv.resume(); // receive the next value
  63.           }  
  64.  
  65.      }
  66.  
  67. void translateIR()
  68.      {
  69.          switch(results.value)
  70.                {
  71.                  case 0xFFA25D: Serial.println(" 1");
  72.                                 Red = Red + 25;
  73.                                 Serial.print("RED VALUE: ");
  74.                                 if (Red > 255 ) Red = 255;  
  75.                                 Serial.println(Red);
  76.                                 colorWipe(strip.Color(Red, Green, Blue), Speed);
  77.                                 strip.show();
  78.                                 break;
  79.                  case 0xFF629D: Serial.println(" 2");
  80.                                 Green = Green + 25;
  81.                                 Serial.print("GREEN VALUE: ");
  82.                                 if (Green > 255 ) Green = 255; Serial.println(Green);  
  83.                                 colorWipe(strip.Color(Red, Green, Blue), Speed);
  84.                                 strip.show();
  85.                                 break;
  86.                  case 0xFFE21D: Serial.println(" 3");
  87.                                 Blue = Blue + 25;
  88.                                 Serial.print("BLUE VALUE: ");
  89.                                 if (Blue > 255 ) Blue = 255;
  90.                                 Serial.println(Blue);
  91.                                 colorWipe(strip.Color(Red, Green, Blue), Speed);
  92.                                 strip.show();
  93.                                 break;
  94.                  case 0xFF22DD: Serial.println(" 4"); break;
  95.                  case 0xFF02FD: Serial.println(" 5"); break;
  96.                  case 0xFFC23D: Serial.println(" 6"); break;
  97.                  case 0xFFE01F: Serial.println(" 7");
  98.                                 Red = Red - 25;
  99.                                 Serial.print("RED VALUE: ");  
  100.                                 if (Red < 0 ) Red = 0; Serial.println(Red);
  101.                                 colorWipe(strip.Color(Red, Green, Blue), Speed);
  102.                                 strip.show();
  103.                                 break;
  104.                  case 0xFFA857: Serial.println(" 8");
  105.                                 Green = Green - 25;
  106.                                 Serial.print("GREEN VALUE: ");
  107.                                 if (Green < 0 ) Green = 0;
  108.                                 Serial.println(Green);  
  109.                                 colorWipe(strip.Color(Red, Green, Blue), Speed);
  110.                                 strip.show();
  111.                                 break;
  112.                  case 0xFF906F: Serial.println(" 9");
  113.                                 Blue = Blue - 25;
  114.                                 Serial.print("BLUE VALUE: ");
  115.                                 if (Blue < 0 ) Blue = 0;
  116.                                 Serial.println(Blue);
  117.                                 colorWipe(strip.Color(Red, Green, Blue), Speed);
  118.                                 strip.show();
  119.                                 break;
  120.                  case 0xFF6897: Serial.println(" *"); break;  
  121.                  case 0xFF9867: Serial.println(" 0"); break;  
  122.                  case 0xFFB04F: Serial.println(" #");
  123.                                 EEPROM.update(RedAdress, Red);
  124.                                 EEPROM.update(GreenAdress, Green);
  125.                                 EEPROM.update(BlueAdress, Blue);
  126.                                 EEPROM.update(BrightnessAdress, Brightness);
  127.                                 EEPROM.update(SpeedAdress, Speed);
  128.                                 EEPROM.update(PowerAdress, Power);
  129.  
  130.                                  for(int i=0; i< 5; i++)
  131.                                     {
  132.                                       colorWipe(strip.Color(0, 0, 0), 0);    
  133.                                        strip.show();                        
  134.                                        delay(100);  
  135.                                        colorWipe(strip.Color(Red, Green, Blue), 0);                        
  136.                                     }
  137.                                 break;  
  138.                  case 0xFF18E7: Serial.println(" UP");
  139.                                 Speed = Speed - 5;
  140.                                 if (Speed < 0) Speed = 0;
  141.                                 colorWipe(strip.Color(0, 0, 0), 0);
  142.                                 colorWipe(strip.Color(Red, Green, Blue), Speed);
  143.                                 strip.show();
  144.                                 Serial.print("SPEED: ");
  145.                                 Serial.println(Speed);
  146.                                 break;  
  147.                  case 0xFF10EF: Serial.println(" LEFT");
  148.                                 Brightness = Brightness - 25;
  149.                                 if (Brightness < 0) Brightness = 0;
  150.                                 Serial.println(Brightness);
  151.                                 strip.setBrightness(Brightness);  
  152.                                 colorWipe(strip.Color(Red, Green, Blue), 0);
  153.                                 strip.show();
  154.                                 break;
  155.                  case 0xFF38C7: Serial.println(" -OK-");
  156.                                 Power = Power + 1;
  157.                                 if (Power > 1) Power = 0 ;
  158.                                 Serial.print("POWER ON STATUS: ");
  159.                                 Serial.println(Power);
  160.                                 break;  
  161.                  case 0xFF5AA5: Serial.println(" RIGHT");
  162.                                 Brightness = Brightness + 25;
  163.                                 if (Brightness > 255) Brightness = 255;
  164.                                 Serial.println(Brightness);
  165.                                 strip.setBrightness(Brightness);
  166.                                 colorWipe(strip.Color(Red, Green, Blue), 0);
  167.                                 strip.show();  
  168.                                 break;  
  169.                  case 0xFF4AB5: Serial.println(" DOWN");
  170.                                 Speed = Speed + 5;
  171.                                 if (Speed > 50) Speed = 50;  
  172.                                 colorWipe(strip.Color(0, 0, 0), 0);
  173.                                 colorWipe(strip.Color(Red, Green, Blue), Speed);
  174.                                 strip.show(); Serial.print("SPEED: ");
  175.                                 Serial.println(Speed);
  176.                                 break;
  177.                  default:
  178.                                 Serial.println(results.value, HEX);
  179.                                 Serial.println(" other button   ");
  180.                } // End Case
  181.        
  182.      }
  183.  
  184. void colorWipe(uint32_t color, int wait) {
  185.   for(int i=0; i<strip.numPixels(); i++) {
  186.     strip.setPixelColor(i, color);        
  187.     strip.show();                        
  188.     delay(wait);                        
  189.   }
  190. }
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement