Advertisement
Guest User

Hyperion

a guest
Aug 8th, 2021
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. #include "FastLED.h"
  2.  
  3. // How many leds in your strip?
  4. #define NUM_LEDS 300
  5.  
  6. // For led chips like Neopixels, which have a data line, ground, and power, you just
  7. // need to define DATA_PIN. For led chipsets that are SPI based (four wires - data, clock,
  8. // ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
  9. #define DATA_PIN 6
  10. #define CLOCK_PIN 13
  11.  
  12. #define COLOR_ORDER RGB
  13.  
  14. // Adalight sends a "Magic Word" (defined in /etc/boblight.conf) before sending the pixel data
  15. uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i;
  16.  
  17. // Baudrate, higher rate allows faster refresh rate and more LEDs (defined in /etc/boblight.conf)
  18. #define serialRate 500000
  19. // #define serialRate 460800
  20.  
  21. // Define the array of leds
  22. CRGB leds[NUM_LEDS];
  23.  
  24. void setup() {
  25. // Uncomment/edit one of the following lines for your leds arrangement.
  26. // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
  27. // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
  28. // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
  29. // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
  30. // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
  31. FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
  32. // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
  33. // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
  34. // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
  35. // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
  36. // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
  37.  
  38. // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
  39. // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
  40. // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
  41.  
  42. // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  43. // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  44. // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  45.  
  46. // initial RGB flash
  47. LEDS.showColor(CRGB(255, 0, 0));
  48. delay(500);
  49. LEDS.showColor(CRGB(0, 255, 0));
  50. delay(500);
  51. LEDS.showColor(CRGB(0, 0, 255));
  52. delay(500);
  53. LEDS.showColor(CRGB(0, 0, 0));
  54.  
  55. Serial.begin(serialRate);
  56. Serial.print("Ada\n"); // Send "Magic Word" string to host
  57.  
  58. }
  59.  
  60. void loop() {
  61. // wait for first byte of Magic Word
  62. for(i = 0; i < sizeof prefix; ++i) {
  63. waitLoop: while (!Serial.available()) ;;
  64. // Check next byte in Magic Word
  65. if(prefix[i] == Serial.read()) continue;
  66. // otherwise, start over
  67. i = 0;
  68. goto waitLoop;
  69. }
  70.  
  71. // Hi, Lo, Checksum
  72.  
  73. while (!Serial.available()) ;;
  74. hi=Serial.read();
  75. while (!Serial.available()) ;;
  76. lo=Serial.read();
  77. while (!Serial.available()) ;;
  78. chk=Serial.read();
  79.  
  80. // if checksum does not match go back to wait
  81. if (chk != (hi ^ lo ^ 0x55))
  82. {
  83. i=0;
  84. goto waitLoop;
  85. }
  86.  
  87. memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));
  88. // read the transmission data and set LED values
  89. for (uint8_t i = 0; i < NUM_LEDS; i++) {
  90. byte r, g, b;
  91. while(!Serial.available());
  92. r = Serial.read();
  93. while(!Serial.available());
  94. g = Serial.read();
  95. while(!Serial.available());
  96. b = Serial.read();
  97. leds[i].r = r;
  98. leds[i].g = g;
  99. leds[i].b = b;
  100. }
  101. // shows new values
  102. FastLED.show();
  103.  
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement