Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <FastLED.h>
- #define NUM_LEDS 1
- #define DATA_PIN 2
- #define SERIALRATE 500000
- #define CALIBRATION_TEMPERATURE TypicalLEDStrip // Color correction
- #define MAX_BRIGHTNESS 255 // 0-255
- #define redpin 9
- #define greenpin 6
- #define bluepin 5
- // Adalight sends a "Magic Word" (defined in /etc/boblight.conf) before sending the pixel data
- uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i;
- uint8_t prefix2[] = {'I', 'R', 'L'};
- bool ispone = false;
- bool isptwo = false;
- CRGB leds[NUM_LEDS];
- void setup()
- {
- pinMode(redpin, OUTPUT);
- pinMode(greenpin, OUTPUT);
- pinMode(bluepin, OUTPUT);
- FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
- FastLED.setTemperature( CALIBRATION_TEMPERATURE );
- FastLED.setBrightness( MAX_BRIGHTNESS );
- Serial.begin(SERIALRATE);
- Serial.print("Ada\n"); // Send "Magic Word" string to host
- }
- void loop() {
- // wait for first byte of Magic Word
- for(i = 0; i < sizeof prefix; ++i) {
- waitLoop:
- while (!Serial.available());
- byte fuu =Serial.read();
- if (prefix[i] == fuu)
- {
- ispone=true;
- isptwo=false;
- continue;
- }else if(prefix2[i] == fuu)
- {
- ispone=false;
- isptwo=true;
- continue;
- }
- i = 0;
- goto waitLoop;
- }
- if(ispone)
- {
- // Hi, Lo, Checksum
- while (!Serial.available());
- hi = Serial.read();
- while (!Serial.available());
- lo = Serial.read();
- while (!Serial.available());
- chk = Serial.read();
- // if checksum does not match go back to wait
- if (chk != (hi ^ lo ^ 0x55)) {
- i = 0;
- goto waitLoop;
- }
- Serial.readBytes((char*)leds, NUM_LEDS*3);
- // shows new values
- showAnalogRGB(leds[0]);
- FastLED.show();
- }
- else
- {
- dofuu();
- }
- }
- void showAnalogRGB(const CRGB& rgb)
- {
- analogWrite(redpin, rgb.r);
- analogWrite(greenpin, rgb.g);
- analogWrite(bluepin, rgb.b);
- }
- void dofuu()
- {
- analogWrite(redpin, 12);
- analogWrite(greenpin, 30);
- analogWrite(bluepin, 174);
- delay(500);
- analogWrite(redpin, 210);
- analogWrite(greenpin, 158);
- analogWrite(bluepin, 13);
- delay(500);
- analogWrite(redpin, 12);
- analogWrite(greenpin, 30);
- analogWrite(bluepin, 174);
- delay(500);
- analogWrite(redpin, 0);
- analogWrite(greenpin, 0);
- analogWrite(bluepin, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement