Это не скетчи с первой страницы этого форума. Другие, в интернете.
Просто пытаюсь настроить работу связки ардуина-лента-boblight.
Пробую разные варианты, так как не силен во всей этой системе.
Это не скетчи с первой страницы этого форума. Другие, в интернете.
Просто пытаюсь настроить работу связки ардуина-лента-boblight.
Пробую разные варианты, так как не силен во всей этой системе.
этот скетч работает у меня ардуино 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светодиодов на метр.
с китайской СР340 или как там её, короче не заработало.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();
}
максимум 6 светодиодов, дальше виснет.
Последний раз редактировалось YARiddiK; 16.03.2016 в 22:44.
Сделал всё по инструкциям выше. проверил на 5 диодах, всё работает на ура. Подключил бобльшую ленту(190лед) и она дико тормозить. Из-за чего это ? использую ЭмбиБокс217.
Ардуино нано (китайский) Питание на конце ленты 4,7в
Последний раз редактировалось Permyak; 11.04.2016 в 21:12.
Я думаю что проблема в программе, тормозит сама программа
Еще очень сильно зависит от процессора ПК
Последний раз редактировалось Permyak; 12.04.2016 в 17:34.
Скорость порта какая?
И все таки я склоняюсь к тормознутости самой программы
Так как исходников нет проверить нет возможности. Как вариант проверьте мою программу и будет с чем сравнивать
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)