Вы, код-то напишите, сюда его выложите. И опишите поведение Ваших светодиодов с этим кодом, что получилось и что не устраивает. Без этого сложно что-то советовать, не видя результат.
Это уже есть в моем скетче... Только с поправкой на фильтр по матрице... Не то...
В твоём коде FastLED.show(); вызывается в цикле после установки цвета каждого светодиода.
Если не понимаешь как работает лента и библиотеки к ней, то тогда не мучайся и выброси её.
Я имел ввиду код без delay. Но кстати, если это и вся Ваша задача, то и фиг с ним с делаем-то. Вариант arduino328 попробуйте, ну с проверкой красного конечно. Он отличается тем, что и я писал. show делается не после каждого светодиода, а один раз после цикла. Если что-то не так - опишите что.
В твоём коде FastLED.show(); вызывается в цикле после установки цвета каждого светодиода.
В моем коде шоу вызывается первый раз в конце установки цветов в цикле сетап, а потом уже при моргании только для красных(включил красный - show, выключил - снова show)/ Если поставить его один раз в конце цикла, то установится только последнее значение и никакого моргания не происходит.
arduino328 пишет:
Если не понимаешь как работает лента и библиотеки к ней, то тогда не мучайся и выброси её.
Выбросить всегда можно, а вот учиться использовать никогда не поздно. Учусь на своих (да и чужих) ошибках, набиваю шишки. Но когда надо, буду мучить тему, пока не познаю. Поэтому и не прошу написать скетч, а подсказать и посоветовать. Дайте удочку, а уж рыбу попробуем сами поймать...
Ну уж совсем кусок. Хотя бы функцию-то уж целиком вставили, чтобы со скобками всё понятно было. А не работает потому, что Вам нужно запоминать состояние включены или выключены. В зависимости от состояния проверять либо то либо другое время, ну и когда пора то менять состояние и запоминать его.
И Вы не написали, попробовали ли вариант с delay от arduino328. Он должен работать. Если работает как-то не так, то интересно, а как?
И да, красные у Вас вроде единички были, а не нули?
а это шо должно быть? замена delay на другой delay?
Делэй в работе с WS28** очень нежелателен, так как он подразумевает поочередное выполнение программы, а это соответственно неодновременное мигание модулей.
void BlinkRed() {
for (int i = 0; i < Quant ; i++) {
setPixel(i, 0, 0, 0); // Выключен
}
FastLED.show();
delay(200);
for (int i = 0; i < Quant ; i++) {
setPixel(i, 255, 0, 0); // Красный
}
FastLED.show();
delay(150);
)
Прошу прощения, не разглядел ночером... Получается цикл зажигания прошел - фастлед, потом цикл гашения всех прошел - фаст лед... Сорри, должно получиться... Чуток ступил...
Прошу прощения, не разглядел ночером... Получается цикл зажигания прошел - фастлед, потом цикл гашения всех прошел - фаст лед... Сорри, должно получиться... Чуток ступил...
Вот-вот именно это и проверьте. Не должно в этом случае видимого рассинхрона возникать. А уж заменять delay на millis или нет это потом решите по необходимости.
Прошу прощения, не разглядел ночером... Получается цикл зажигания прошел - фастлед, потом цикл гашения всех прошел - фаст лед... Сорри, должно получиться... Чуток ступил...
С лентами стандартно только так и работают: сначала выставляются все значения светодиодов, затем показ всего всего массива ленты.
#include "FastLED.h" // библиотека для работы с лентой
#define Quant 50 // число светодиодов в ленте
#define PIN 6 // назначаем управляющий лентой пин.
struct CRGB leds[Quant];
int PointMap[] = {0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 1, 4, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 1, 4, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 1};
void setup()
{
Serial.begin(9600); // открыть порт для связи
FastLED.addLeds<WS2812B, PIN, RGB>(leds, Quant); // настройки для нашей ленты (ленты на WS2811, WS2812, WS2812B)
FastLED.show(); // отослать команду
delay(1000);
for (int i = 0; i < Quant; i++) {
if (PointMap[i] == 1) {
setPixel(i, 255, 0, 0); //Красный
}
else {
if (PointMap[i] == 2) {
setPixel(i, 0, 0, 255); //синий
}
else {
if (PointMap[i] == 3) {
setPixel(i, 255, 255, 0); //желтый
}
else {
if (PointMap[i] == 4) {
setPixel(i, 255, 0, 255); //Фиолетовый
}
else {
if (PointMap[i] == 5) {
setPixel(i, 255, 255, 255); //Белый
}
else {
if (PointMap[i] == 0) {
setPixel(i, 0, 255, 0);//Зеленый
}
}
}
}
}
}
}
FastLED.show(); // отослать команду
}
void loop() {
for (int i = 0; i < Quant ; i++) {
if (PointMap[i] == 1) {
setPixel(i, 0, 0, 0);//Выключен
}
}
FastLED.show();
delay(200);
for (int i = 0; i < Quant ; i++) {
if (PointMap[i] == 1) {
setPixel(i, 255, 0, 0);//Включен
}
}
FastLED.show();
delay(200);
}
//----------------------------setPixel-------------------------------------//
void setPixel(int i, byte red, byte green, byte blue) {
leds[i].r = red;
leds[i].g = green;
leds[i].b = blue;
}
Да!!! Оказывается просто тупил и зажигал ленту рано... Спасибо всем большое. Теперь пока на этом этапе и millis() не нужно мучить.... Еще раз всем огромное спасибо за помощь. Извиняйте, если сильно тупил)))))
Направьте, плиз, в нужном направлении.
Это уже есть в моем скетче... Только с поправкой на фильтр по матрице... Не то...
Вы, код-то напишите, сюда его выложите. И опишите поведение Ваших светодиодов с этим кодом, что получилось и что не устраивает. Без этого сложно что-то советовать, не видя результат.
Так в 45 посте вроде выложил....
Это уже есть в моем скетче... Только с поправкой на фильтр по матрице... Не то...
В твоём коде FastLED.show(); вызывается в цикле после установки цвета каждого светодиода.
Если не понимаешь как работает лента и библиотеки к ней, то тогда не мучайся и выброси её.
Я имел ввиду код без delay. Но кстати, если это и вся Ваша задача, то и фиг с ним с делаем-то. Вариант arduino328 попробуйте, ну с проверкой красного конечно. Он отличается тем, что и я писал. show делается не после каждого светодиода, а один раз после цикла. Если что-то не так - опишите что.
В твоём коде FastLED.show(); вызывается в цикле после установки цвета каждого светодиода.
В моем коде шоу вызывается первый раз в конце установки цветов в цикле сетап, а потом уже при моргании только для красных(включил красный - show, выключил - снова show)/ Если поставить его один раз в конце цикла, то установится только последнее значение и никакого моргания не происходит.
Если не понимаешь как работает лента и библиотеки к ней, то тогда не мучайся и выброси её.
Выбросить всегда можно, а вот учиться использовать никогда не поздно. Учусь на своих (да и чужих) ошибках, набиваю шишки. Но когда надо, буду мучить тему, пока не познаю. Поэтому и не прошу написать скетч, а подсказать и посоветовать. Дайте удочку, а уж рыбу попробуем сами поймать...
Если что-то не так - опишите что.
Без делая красный горит постоянно...
Вот такой кусок на Blink
А как вам такой вариант?
а это шо должно быть? замена delay на другой delay?
А как вам такой вариант?
Попробую его вечером дома. На работе только в IDE могу проверить компиляцию, а реальное подключение вечером...
Вот такой кусок на Blink
Ну уж совсем кусок. Хотя бы функцию-то уж целиком вставили, чтобы со скобками всё понятно было. А не работает потому, что Вам нужно запоминать состояние включены или выключены. В зависимости от состояния проверять либо то либо другое время, ну и когда пора то менять состояние и запоминать его.
И Вы не написали, попробовали ли вариант с delay от arduino328. Он должен работать. Если работает как-то не так, то интересно, а как?
И да, красные у Вас вроде единички были, а не нули?
а это шо должно быть? замена delay на другой delay?
Делэй в работе с WS28** очень нежелателен, так как он подразумевает поочередное выполнение программы, а это соответственно неодновременное мигание модулей.
И Вы не написали, попробовали ли вариант с delay от arduino328. Он должен работать.
Пробовал, с учетом цвета , мигают поочередно, а надо чтоб так : Горят все своими цветами, а красные в это время синхронно моргают..
В дальнейшем должны будут реализовываться различные режимы мигания (1 раз в секунду, 2 раза, три раза...)
И да, красные у Вас вроде единички были, а не нули?
Это пока пробные скетчи для отработки режима, так что какие цвета на какую цифру - пока не актуально...
Ну уж совсем кусок. Хотя бы функцию-то уж целиком вставили, чтобы со скобками всё понятно было.
На работу ноут не взял, поэтому полного скетча нет, чтоб показать его весь... Вечером выложу, но по работе - красные просто горят постоянно..
Направьте, плиз, в нужном направлении.
Прошу прощения, не разглядел ночером... Получается цикл зажигания прошел - фастлед, потом цикл гашения всех прошел - фаст лед... Сорри, должно получиться... Чуток ступил...
Прошу прощения, не разглядел ночером... Получается цикл зажигания прошел - фастлед, потом цикл гашения всех прошел - фаст лед... Сорри, должно получиться... Чуток ступил...
Вот-вот именно это и проверьте. Не должно в этом случае видимого рассинхрона возникать. А уж заменять delay на millis или нет это потом решите по необходимости.
Спасибо))) Все попробую, отпишусь.
Прошу прощения, не разглядел ночером... Получается цикл зажигания прошел - фастлед, потом цикл гашения всех прошел - фаст лед... Сорри, должно получиться... Чуток ступил...
С лентами стандартно только так и работают: сначала выставляются все значения светодиодов, затем показ всего всего массива ленты.
Да!!! Оказывается просто тупил и зажигал ленту рано... Спасибо всем большое. Теперь пока на этом этапе и millis() не нужно мучить.... Еще раз всем огромное спасибо за помощь. Извиняйте, если сильно тупил)))))