Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. #include <FastLED.h>
  2.  
  3. #define NUM_LEDS 1
  4. #define DATA_PIN 2
  5. #define SERIALRATE 500000
  6. #define CALIBRATION_TEMPERATURE TypicalLEDStrip  // Color correction
  7. #define MAX_BRIGHTNESS 255 // 0-255
  8. #define redpin 9
  9. #define greenpin 6
  10. #define bluepin 5
  11.  
  12. // Adalight sends a "Magic Word" (defined in /etc/boblight.conf) before sending the pixel data
  13. uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i;
  14. uint8_t prefix2[] = {'I', 'R', 'L'};
  15. bool ispone = false;
  16. bool isptwo = false;
  17. CRGB leds[NUM_LEDS];
  18.  
  19. void setup()
  20. {
  21.   pinMode(redpin, OUTPUT);
  22.   pinMode(greenpin, OUTPUT);
  23.   pinMode(bluepin, OUTPUT);
  24.  
  25.   FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  26.  
  27.   FastLED.setTemperature( CALIBRATION_TEMPERATURE );
  28.   FastLED.setBrightness( MAX_BRIGHTNESS );
  29.  
  30.   Serial.begin(SERIALRATE);
  31.   Serial.print("Ada\n"); // Send "Magic Word" string to host
  32.  
  33. }
  34.  
  35. void loop() {
  36.   // wait for first byte of Magic Word
  37.  
  38.   for(i = 0; i < sizeof prefix; ++i) {
  39.     waitLoop:
  40.     while (!Serial.available());
  41.     byte fuu =Serial.read();
  42.     if (prefix[i] == fuu)
  43.     {
  44.       ispone=true;
  45.       isptwo=false;
  46.       continue;
  47.     }else if(prefix2[i] == fuu)
  48.     {
  49.        ispone=false;
  50.        isptwo=true;
  51.        continue;
  52.     }
  53.     i = 0;
  54.     goto waitLoop;
  55.   }
  56.   if(ispone)
  57.   {
  58.   // Hi, Lo, Checksum
  59.   while (!Serial.available());
  60.   hi = Serial.read();
  61.   while (!Serial.available());
  62.   lo = Serial.read();
  63.   while (!Serial.available());
  64.   chk = Serial.read();
  65.  
  66.   // if checksum does not match go back to wait
  67.   if (chk != (hi ^ lo ^ 0x55)) {
  68.     i = 0;
  69.     goto waitLoop;
  70.   }
  71.   Serial.readBytes((char*)leds, NUM_LEDS*3);
  72.  
  73.   // shows new values
  74.   showAnalogRGB(leds[0]);
  75.  FastLED.show();
  76.  }
  77.  else
  78.  {
  79.   dofuu();
  80.  }
  81.  
  82. }
  83.  
  84. void showAnalogRGB(const CRGB& rgb)
  85. {
  86.   analogWrite(redpin, rgb.r);
  87.   analogWrite(greenpin, rgb.g);
  88.   analogWrite(bluepin, rgb.b);
  89. }
  90.  
  91. void dofuu()
  92. {
  93.                  analogWrite(redpin, 12);
  94.                  analogWrite(greenpin, 30);
  95.                  analogWrite(bluepin, 174);
  96.                  delay(500);
  97.                  analogWrite(redpin, 210);
  98.                  analogWrite(greenpin, 158);
  99.                  analogWrite(bluepin, 13);
  100.                  delay(500);
  101.                  analogWrite(redpin, 12);
  102.                  analogWrite(greenpin, 30);
  103.                  analogWrite(bluepin, 174);
  104.                  delay(500);
  105.                  analogWrite(redpin, 0);
  106.                  analogWrite(greenpin, 0);
  107.                  analogWrite(bluepin, 0);
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement