этот скетч работает у меня ардуино 1.6.8+WIN7+перезагрузка
pro micro mega32u USB (Leonardo)
WS2812
Uses Adalight protocol and is compatible with Boblight, Prismatik etc
Присматик работает.
Ambibox тоже.
Шин питания самой ленты на 2.5метра не хватает. на 5метров в конце ленты 2.5Вольт ))) (это всю ленту зажечь если) питание с отдельного БП ессно
Питание 5В.
60светодиодов на метр.
PHP код:
//Рабочий скетч! Лента моргает ардуина прога 1.6.8
//////////
//
// Arduino interface for the use of ws2812 operated LEDs
// Uses Adalight protocol and is compatible with Boblight, Prismatik etc
// "Magic Word" for synchronisation is 'Ada' followed by LED High, Low and Checksum
//
#include "FastLED.h"
#define NUM_LEDS 60
///// User definitions /////
// Define the number of LEDs
// Define SPI Pin
#define PIN 7
// Baudrate, higher rate allows faster refresh rate and more LEDs (defined in /etc/boblight.conf)
#define serialRate 115200
//#define serialRate 9600
// 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;
// initialise LED-array
CRGB leds[NUM_LEDS];
void setup()
{
FastLED.addLeds<WS2812B, PIN, GRB>(leds, NUM_LEDS);
// 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"); // 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()) ;;
// Check next byte in Magic Word
if(prefix[i] == Serial.read()) continue;
// otherwise, start over
i = 0;
goto waitLoop;
}
// 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;
}
memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));
// read the transmission data and set LED values
for (uint8_t i = 0; i < NUM_LEDS; i++) {
byte r, g, b;
while(!Serial.available());
r = Serial.read();
while(!Serial.available());
g = Serial.read();
while(!Serial.available());
b = Serial.read();
leds[i].r = r;
leds[i].g = g;
leds[i].b = b;
}
// shows new values
FastLED.show();
}
с китайской СР340 или как там её, короче не заработало.
максимум 6 светодиодов, дальше виснет.