Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <IRremote.h>
  2.  
  3. // Definicje przycisków pilota IR
  4. #define BUTTON_1 0xFF30CF
  5. #define BUTTON_2 0xFF18E7
  6. #define BUTTON_3 0xFF7A85
  7. #define BUTTON_4 0xFF10EF
  8. #define BUTTON_5 0xFF38C7
  9. #define BUTTON_OFF 0xFFA25D // Dodaj przycisk "OFF" do wyłączania diod
  10. #define BUTTON_ALL_ON 0xFF5AA5 // Dodaj przycisk "ALL ON" do włączania wszystkich diod
  11. #define BUTTON_ALL_OFF 0xFF4AB5 // Dodaj przycisk "ALL OFF" do wyłączania wszystkich diod
  12.  
  13. // Piny do podłączenia diod LED
  14. const int ledPins[] = {3, 4, 5, 6, 7};
  15. const int numLEDs = 5;
  16.  
  17. // Definicje do soft start i soft end
  18. const int fadeDuration = 1000; // Czas trwania efektu zmiany jasności (1 sekunda)
  19.  
  20. IRrecv irrecv(2);
  21. decode_results results;
  22.  
  23. int activeLED = -1; // Numer aktualnie aktywnej diody (-1 oznacza brak aktywnej diody)
  24.  
  25. void setup() {
  26.   irrecv.enableIRIn(); // Włącz odbiór pilota IR
  27.   for (int i = 0; i < numLEDs; i++) {
  28.     pinMode(ledPins[i], OUTPUT); // Ustaw piny diod LED jako wyjścia
  29.     analogWrite(ledPins[i], 0); // Wyłącz wszystkie diody na początku
  30.   }
  31. }
  32.  
  33. void loop() {
  34.   if (irrecv.decode(&results)) {
  35.     unsigned long currentButton = results.value;
  36.  
  37.     switch (currentButton) {
  38.       case BUTTON_1:
  39.         activateLED(0); // Włącz pierwszą diodę LED
  40.         break;
  41.       case BUTTON_2:
  42.         activateLED(1); // Włącz drugą diodę LED
  43.         break;
  44.       case BUTTON_3:
  45.         activateLED(2); // Włącz trzecią diodę LED
  46.         break;
  47.       case BUTTON_4:
  48.         activateLED(3); // Włącz czwartą diodę LED
  49.         break;
  50.       case BUTTON_5:
  51.         activateLED(4); // Włącz piątą diodę LED
  52.         break;
  53.       case BUTTON_OFF:
  54.         deactivateLED(); // Wyłącz aktywną diodę LED (jeśli istnieje)
  55.         break;
  56.       case BUTTON_ALL_ON:
  57.         activateAllLEDs(); // Włącz wszystkie diody LED
  58.         break;
  59.       case BUTTON_ALL_OFF:
  60.         deactivateAllLEDs(); // Wyłącz wszystkie diody LED
  61.         break;
  62.     }
  63.  
  64.     irrecv.resume(); // Kontynuuj odbiór pilota IR
  65.   }
  66. }
  67.  
  68. void activateLED(int ledIndex) {
  69.   deactivateLED(); // Wyłącz aktywną diodę LED (jeśli istnieje)
  70.  
  71.   int fadeAmount = 5; // Wartość zmiany jasności przy każdej iteracji
  72.  
  73.   // Soft start
  74.   for (int brightness = 0; brightness <= 255; brightness += fadeAmount) {
  75.     analogWrite(ledPins[ledIndex], brightness);
  76.     delay(fadeDuration / 255);
  77.   }
  78.  
  79.   activeLED = ledIndex; // Ustaw aktualnie aktywną diodę
  80.  
  81.   // Oczekuj na sygnał "OFF" lub inną akcję
  82.   while (activeLED == ledIndex) {
  83.     if (irrecv.decode(&results)) {
  84.       if (results.value == BUTTON_OFF) {
  85.         deactivateLED(); // Wyłącz diodę po naciśnięciu przycisku "OFF"
  86.       }
  87.       irrecv.resume(); // Kontynuuj odbiór pilota IR
  88.     }
  89.   }
  90. }
  91.  
  92. void activateAllLEDs() {
  93.   for (int i = 0; i < numLEDs; i++) {
  94.     activateLED(i); // Włącz każdą diodę LED
  95.   }
  96. }
  97.  
  98. void deactivateLED() {
  99.   if (activeLED != -1) {
  100.     int fadeAmount = 5; // Wartość zmiany jasności przy każdej iteracji
  101.  
  102.     // Soft end
  103.     for (int brightness = 255; brightness >= 0; brightness -= fadeAmount) {
  104.       analogWrite(ledPins[activeLED], brightness);
  105.       delay(fadeDuration / 255);
  106.     }
  107.  
  108.     // Wyłącz diodę LED
  109.     analogWrite(ledPins[activeLED], 0);
  110.  
  111.     activeLED = -1; // Brak aktywnej diody
  112.   }
  113. }
  114.  
  115. void deactivateAllLEDs() {
  116.   for (int i = 0; i < numLEDs; i++) {
  117.     analogWrite(ledPins[i], 0); // Wyłącz każdą diodę LED
  118.   }
  119.  
  120.   activeLED = -1; // Brak aktywnej diody
  121. }
  122.