Kod:
#include "FastLED.h"
#define NUM_LEDS_monitor 103
#define DATA_PIN_monitor 6
#define NUM_LEDS_pasek 69
#define DATA_PIN_pasek 8
#define serialRate 115200
uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i;
CRGB leds_monitor[NUM_LEDS_monitor];
CRGB leds_pasek[NUM_LEDS_pasek];
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN_monitor>(leds_monitor, NUM_LEDS_monitor);
FastLED.addLeds<NEOPIXEL, DATA_PIN_pasek>(leds_pasek, NUM_LEDS_pasek);
// Initial RGB flash
LEDS.showColor(CRGB(255, 0, 0));
delay(500);
LEDS.showColor(CRGB(0, 255, 0));
delay(500);
LEDS.showColor(CRGB(0, 0, 255));
delay(500);
LEDS.showColor(CRGB(0, 0, 0));
Serial.begin(serialRate);
Serial.print("Ada\n");
}
void loop() {
rainbowCycle(20);
for(i = 0; i < sizeof prefix; ++i) {
waitLoop: while (!Serial.available()) ;;
if(prefix[i] == Serial.read()) continue;
i = 0;
goto waitLoop;
}
while (!Serial.available()) ;;
hi=Serial.read();
while (!Serial.available()) ;;
lo=Serial.read();
while (!Serial.available()) ;;
chk=Serial.read();
if (chk != (hi ^ lo ^ 0x55)) {
i=0;
goto waitLoop;
}
memset(leds_monitor, 0, NUM_LEDS_monitor * sizeof(struct CRGB));
for (uint8_t i = 0; i < NUM_LEDS_monitor; i++) {
byte r, g, b;
while(!Serial.available());
r = Serial.read();
while(!Serial.available());
g = Serial.read();
while(!Serial.available());
b = Serial.read();
leds_monitor[i].r = r;
leds_monitor[i].g = g;
leds_monitor[i].b = b;
}
FastLED.show();
}
void rainbowCycle(int SpeedDelay) {
byte *c;
uint16_t i, j;
for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< NUM_LEDS_pasek; i++) {
c=Wheel(((i * 256 / NUM_LEDS_pasek) + j) & 255);
setPixel(i, *c, *(c+1), *(c+2));
}
showStrip();
delay(SpeedDelay);
}
}
byte * Wheel(byte WheelPos) {
static byte c[3];
if(WheelPos < 85) {
c[0]=WheelPos * 3;
c[1]=255 - WheelPos * 3;
c[2]=0;
} else if(WheelPos < 170) {
WheelPos -= 85;
c[0]=255 - WheelPos * 3;
c[1]=0;
c[2]=WheelPos * 3;
} else {
WheelPos -= 170;
c[0]=0;
c[1]=WheelPos * 3;
c[2]=255 - WheelPos * 3;
}
return c;
}
void setPixel(int Pixel, byte red, byte green, byte blue) {
leds_pasek[Pixel].r = red;
leds_pasek[Pixel].g = green;
leds_pasek[Pixel].b = blue;
}
void showStrip() {
FastLED.show();
}