FASTLED
- Войдите на сайт для отправки комментариев
Пт, 02/06/2017 - 23:57
Здравствуйте, возникла такая проблема, в общем суть заключается в том, что в при помощи Remotexy разработал интерфейс (простой очень - обычный RGB круг), подключение к смартфону при помощи esp8266, и при загрузке вот такого кода
#define REMOTEXY_MODE__ESP8266_HARDSERIAL_POINT
#include <RemoteXY.h>
// настройки соединения
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 115200
#define REMOTEXY_WIFI_SSID "RemoteXY"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377
// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255,3,0,0,0,14,0,6,5,2,
6,0,22,2,60,60,3,18,56,56,
2 };
// структура определяет все переменные вашего интерфейса управления
struct {
// input variable
uint8_t rgb_1_r; // =0..255 значение Красного цвета
uint8_t rgb_1_g; // =0..255 значение Зеленого цвета
uint8_t rgb_1_b; // =0..255 значение Синего цвета
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#define led1 3
#define led2 5
#define led3 6
void setup()
{
RemoteXY_Init ();
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
// TODO you setup code
}
void loop()
{
RemoteXY_Handler ();
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
analogWrite(led1, RemoteXY.rgb_1_r);
analogWrite(led2,RemoteXY.rgb_1_g);
analogWrite(led3,RemoteXY.rgb_1_b);
}
всё работает отлично, без задержек, светодиод очень плавно меняет цвета.
А когда подключаю ленту ws2812b к плате и загружаю в плату вот такой код
#define REMOTEXY_MODE__ESP8266_HARDSERIAL_POINT
#include <RemoteXY.h>
// настройки соединения
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 115200
#define REMOTEXY_WIFI_SSID "RemoteXY"
#define REMOTEXY_WIFI_PASSWORD "12345678"
#define REMOTEXY_SERVER_PORT 6377
// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255,3,0,0,0,14,0,6,5,2,
6,0,22,2,60,60,3,18,56,56,
2 };
// структура определяет все переменные вашего интерфейса управления
struct {
// input variable
uint8_t rgb_1_r; // =0..255 значение Красного цвета
uint8_t rgb_1_g; // =0..255 значение Зеленого цвета
uint8_t rgb_1_b; // =0..255 значениецц Синего цвета
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#include "FastLED.h"
FASTLED_USING_NAMESPACE
#define DATA_PIN 9
#define NUM_LEDS 12
#define CLOCK_P 13
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];
void setup()
{
RemoteXY_Init ();
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
// TODO you setup code
}
void loop()
{
RemoteXY_Handler ();
for (int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB(RemoteXY.rgb_1_r,RemoteXY.rgb_1_g,RemoteXY.rgb_1_b );
FastLED.show(); /* текущее состояние C */
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
}
начинают появляться так называемые тормоза, цвет светодиода меняется только секунд через 10, после включения его на экране смартфона, подскажите пожалуйста, это всё-таки fastled так тормозит ардуино или я где-то ошибся в коде?
заранее спасибо!