Ок. Надо локализовать где ерунда. Расскажи как понял, что именно после такой то строки идет все на начало ? Ставил промежуточный вывод в мониьтор?
Да. Даже random(0-NUM_LEDS) исправил на random8(NUM_LEDS)Во всех местах исправил?
Гирлянда передо мной на столе лежитОк. Надо локализовать где ерунда. Расскажи как понял, что именно после такой то строки идет все на начало ? Ставил промежуточный вывод в мониьтор?
Вот это не понятно... а МК какой ?Но почему?!
Ардуино МикроВот это не понятно... а МК какой ?
А версия arduino IDE ?
Не знаю. А как я могу определить брак?Может быть в твоей ардуинке брак? По коду который ты предоставил всё должно работать точно так-же как и с micros и умноженными задержками.
По идее, оно и работает (но не все). В самом начальном цикле с таймером (где все цвета случайны без разбору) я millis() оставил, этот цикл почему-то не заклинивал программу.Может быть в твоей ардуинке брак? По коду который ты предоставил всё должно работать точно так-же как и с micros и умноженными задержками.
Покажи окончательную версию скетча
/ FastLED
// куча эффектов для елки нон-стоп по кругу
#define NUM_LEDS 50
#include "FastLED.h"
#define PIN 6
CRGB leds[NUM_LEDS];
byte counter;
void setup() {
//Serial.begin(57600);
FastLED.addLeds<WS2811, PIN, RGB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness(200);
pinMode(13, OUTPUT);
}
void fadeall()
{
for (int i = 0; i < NUM_LEDS; i++)
{
leds[i].nscale8(250);
}
}
void loop()
{
// эффект Cylon
static uint8_t hue = 0;
// Serial.print("x");
// First slide the led in one direction
for (int i = 0; i < NUM_LEDS; i++) {
// Set the i'th led to red
leds[i] = CHSV(hue++, 255, 255);
// Show the leds
FastLED.show();
// now that we've shown the leds, reset the i'th led to black
// leds[i] = CRGB::Black;
fadeall();
// Wait a little bit before we loop around and do it again
delay(50);
}
// Serial.print("x");
// Now go in the other direction.
for (int i = (NUM_LEDS) - 1; i >= 0; i--) {
// Set the i'th led to red
leds[i] = CHSV(hue++, 255, 255);
// Show the leds
FastLED.show();
// now that we've shown the leds, reset the i'th led to black
// leds[i] = CRGB::Black;
fadeall();
// Wait a little bit before we loop around and do it again
delay(50);
}
fill_solid( leds, NUM_LEDS, CRGB::Black);
{
// случайное включение и гашение LED
uint32_t x = millis();
while (millis () - x < 15000)
{
leds [random8 ( NUM_LEDS)] = CRGB(random8( ), random8(), random8()); // полностью случайные цвета
leds [random8( NUM_LEDS)] = CRGB(0, 0, 0); // случайное гашение
FastLED.show();
delay( 50 );
}
}
{
// переливы цвета
int dk = 0;
int dl = 1000;
for ( int i = 0; i <= 255; i ++ )
{
fill_solid( leds, NUM_LEDS, CRGB(255 - i, 0, i)); // красный - синий
FastLED.show();
delay (dk);
}
delay (dl);
for ( int i = 0; i <= 255; i ++ )
{
fill_solid( leds, NUM_LEDS, CRGB(0, i, 255 - i)); // синий - зеленый
FastLED.show();
delay (dk);
}
delay (dl);
for ( int i = 0; i <= 255; i ++ )
{
fill_solid( leds, NUM_LEDS, CRGB(0, 255 , i)); // зеленый - голубой
FastLED.show();
delay (dk);
}
delay (dl);
for ( int i = 0; i <= 255; i ++ )
{
fill_solid( leds, NUM_LEDS, CRGB(i, 255 - i, 255)); // голубой - фиолетовый
FastLED.show();
delay (dk);
}
delay (dl);
for ( int i = 0; i <= 255; i ++ )
{
fill_solid( leds, NUM_LEDS, CRGB(255, i, 255 - i)); // фиолетовый - желтый
FastLED.show();
delay (dk);
}
delay (dl);
for ( int i = 0; i <= 255; i ++ )
{
fill_solid( leds, NUM_LEDS, CRGB(255, 255 - i, 0)); // желтый - красный
FastLED.show();
delay (dk);
}
delay (dl);
}
// случайные оттенки красного
// если раскомментирован этот цикл, то после прохождения одного цикла вместо пяти в пределах
// строк скетча №№ 187 - 240 происходит возврат в начало всего скетча
uint32_t z = micros();
while (micros () - z < 10000000)
{
leds [random8 ( NUM_LEDS)] = CRGB( 255, random(0 , 75), random(0 , 75));
leds [random8 ( NUM_LEDS)] = CRGB(0, 0, 0); // случайное гашение
FastLED.show();
delay( 2 );
}
{
// сплошное заполнение цветом
for ( int i = 0; i < NUM_LEDS; i ++ )
{
leds[i] = CRGB( 0, 255, 0);
FastLED.show();
delay (50);
}
}
// случайные оттенки зеленого
// если раскомментирован этот цикл, то после прохождения одного цикла вместо пяти в пределах
// строк скетча №№ 187 - 240 происходит возврат в начало всего скетча
uint32_t x = micros();
while (micros () - x < 10000000)
{
leds [random8 ( NUM_LEDS)] = CRGB(random(0, 75), 255, random(0 , 75));
leds [random8 ( NUM_LEDS)] = CRGB(0, 0, 0); // случайное гашение
FastLED.show();
delay( 30 );
}
{
for (int i = 0; i < NUM_LEDS; i ++ )
{
leds[i] = CRGB( 0, 255, 255);
FastLED.show();
delay (50);
}
for ( int i = 0; i < NUM_LEDS; i ++ )
{
leds[i] = CRGB( 255, 0, 0);
FastLED.show();
delay (50);
}
for ( int i = 0; i < NUM_LEDS; i ++ )
{
leds[i] = CRGB( 0, 0, 255);
FastLED.show();
delay (50);
}
}
{
// случайные оттенки синего
// если раскомментирован этот цикл, то после прохождения одного цикла вместо пяти в пределах
// строк скетча №№ 187 - 240 происходит возврат в начало всего скетча
uint32_t kk = micros();
while ( micros () - kk < 20000000)
{
leds [random8 ( NUM_LEDS)] = CRGB(random(0 , 100), random(0 , 100), 255);
leds [random8 ( NUM_LEDS)] = CRGB(0, 0, 0); // случайное гашение
FastLED.show();
delay( 5 );
}
}
{
for ( int i = 0; i < NUM_LEDS; i ++ )
{
leds[i] = CRGB( 255, 255, 0);
FastLED.show();
delay (50);
}
for ( int i = 0; i < NUM_LEDS; i ++ )
{
leds[i] = CRGB( 255, 0, 255);
FastLED.show();
delay (50);
}
}
// бегущие тройки разных цветов
{
int p = 0;
int q = 0;
int r = 0;
int s = 0;
do
{
for (int i = 0; i <= NUM_LEDS + 2; i ++ )
{
q = i - 1;
r = i - 2;
p = i - 3;
if (s < 1)
{
leds[i] = CRGB( 0, 255, 0);
leds[q] = CRGB( 0, 255, 0);
leds[r] = CRGB( 0, 255, 0);
leds [p] = CRGB ( 0, 0, 0);
}
else if (s < 2)
{
leds[i] = CRGB( 0, 0, 255);
leds[q] = CRGB( 0, 0, 255);
leds[r] = CRGB( 0, 0, 255);
leds [p] = CRGB ( 0, 0, 0);
}
else if (s < 3)
{
leds[i] = CRGB( 255, 255, 0);
leds[q] = CRGB( 255, 255, 0);
leds[r] = CRGB( 255, 255, 0);
leds [p] = CRGB ( 0, 0, 0);
}
else if (s < 4)
{
leds[i] = CRGB( 255, 0, 255);
leds[q] = CRGB( 255, 0, 255);
leds[r] = CRGB( 255, 0, 255);
leds [p] = CRGB ( 0, 0, 0);
}
else
{
leds[i] = CRGB( 255, 0, 0);
leds[q] = CRGB( 255, 0, 0);
leds[r] = CRGB( 255, 0, 0);
leds [p] = CRGB ( 0, 0, 0);
}
FastLED.show();
delay( 50 );
}
s++;
}
while (s < 5);
}
{
int y = 0;
do
{
// две бегущие навстречу тройки
int j = 0;
for (int i = 0; i <= NUM_LEDS; i ++ )
{
j = NUM_LEDS - i;
leds[i + 2] = CRGB( 255, 255, 255);
leds[i + 1 ] = CRGB( 0, 255, 0);
leds[i] = CRGB( 255, 0, 0);
leds[i - 1] = CRGB( 0, 0, 0);
leds[j - 3] = CRGB( 255, 0, 255);
leds[j - 2] = CRGB( 255, 255, 0);
leds[j - 1] = CRGB( 0, 0, 255);
leds[j ] = CRGB( 0, 0, 0);
FastLED.show();
delay(100 );
}
y++;
}
while ( y < 5);
}
{
int k = 0;
// заполнение одним бегущим LED
do
{
int de = 5;
for (int i = 0; i < NUM_LEDS - k; i ++ )
{
leds[i] = CRGB( 255, 0, 0); // красный
leds[i - 1] = CRGB( 0, 0, 0);
FastLED.show();
delay( de );
}
k++;
}
while (k < NUM_LEDS);
}
{
int k = 0;
// радуга от alexgyver
do
{
for (int i = 0; i < NUM_LEDS; i++ ) {
leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень)
// умножение i уменьшает шаг радуги
}
counter++; // counter меняется от 0 до 255 (тип данных byte)
FastLED.show();
delay(2 ); // скорость движения радуги
k++;
}
while (k < NUM_LEDS * 50);
}
{
int k = 0;
// заполнение одним бегущим LED
do
{
int de = 5;
for (int i = 0; i < NUM_LEDS - k; i ++ )
{
leds[i] = CRGB( 0, 255, 0); // зеленый
leds[i - 1] = CRGB( 0, 0, 0);
FastLED.show();
delay( de );
}
k++;
}
while (k < NUM_LEDS);
}
{
int k = 0;
// радуга от alexgyver
do
{
for (int i = 0; i < NUM_LEDS; i++ ) {
leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень)
// умножение i уменьшает шаг радуги
}
counter++; // counter меняется от 0 до 255 (тип данных byte)
FastLED.show();
delay(2 ); // скорость движения радуги
k++;
}
while (k < NUM_LEDS * 50);
}
{
int k = 0;
// заполнение одним бегущим LED
do
{
int de = 5;
for (int i = 0; i < NUM_LEDS - k; i ++ )
{
leds[i] = CRGB( 0, 0, 255); // синий
leds[i - 1] = CRGB( 0, 0, 0);
FastLED.show();
delay( de );
}
k++;
}
while (k < NUM_LEDS);
}
{
int k = 0;
// радуга от alexgyver
do
{
for (int i = 0; i < NUM_LEDS; i++ ) {
leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень)
// умножение i уменьшает шаг радуги
}
counter++; // counter меняется от 0 до 255 (тип данных byte)
FastLED.show();
delay(2 ); // скорость движения радуги
k++;
}
while (k < NUM_LEDS * 50);
}
{
int k = 0;
// заполнение одним бегущим LED
do
{
int de = 5;
for (int i = 0; i < NUM_LEDS - k; i ++ )
{
leds[i] = CRGB( 0, 255, 255); // голубой
leds[i - 1] = CRGB( 0, 0, 0);
FastLED.show();
delay( de );
}
k++;
}
while (k < NUM_LEDS);
}
{
int k = 0;
// радуга от alexgyver
do
{
for (int i = 0; i < NUM_LEDS; i++ ) {
leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень)
// умножение i уменьшает шаг радуги
}
counter++; // counter меняется от 0 до 255 (тип данных byte)
FastLED.show();
delay(2 ); // скорость движения радуги
k++;
}
while (k < NUM_LEDS * 50);
}
{
int k = 0;
// заполнение одним бегущим LED
do
{
int de = 5;
for (int i = 0; i < NUM_LEDS - k; i ++ )
{
leds[i] = CRGB( 255, 0, 255); // фиолетовый
leds[i - 1] = CRGB( 0, 0, 0);
FastLED.show();
delay( de );
}
k++;
}
while (k < NUM_LEDS);
}
{
int k = 0;
// радуга от alexgyver
do
{
for (int i = 0; i < NUM_LEDS; i++ ) {
leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень)
// умножение i уменьшает шаг радуги
}
counter++; // counter меняется от 0 до 255 (тип данных byte)
FastLED.show();
delay(2 ); // скорость движения радуги
k++;
}
while (k < NUM_LEDS * 50);
}
{
int k = 0;
// заполнение одним бегущим LED
do
{
int de = 5;
for (int i = 0; i < NUM_LEDS - k; i ++ )
{
leds[i] = CRGB( 255, 255, 0); //желтый
leds[i - 1] = CRGB( 0, 0, 0);
FastLED.show();
delay( de );
}
k++;
}
while (k < NUM_LEDS);
}
{
int k = 0;
// радуга от alexgyver
do
{
for (int i = 0; i < NUM_LEDS; i++ ) {
leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень)
// умножение i уменьшает шаг радуги
}
counter++; // counter меняется от 0 до 255 (тип данных byte)
FastLED.show();
delay(2 ); // скорость движения радуги
k++;
}
while (k < NUM_LEDS * 50);
}
}
Комментарии про зависание после цикла строк 170-240 не актуальны, строки съехали при редактировании. Глюк был после цикла под комментарием "// бегущие тройки разных цветов"C++:/ FastLED // куча эффектов для елки нон-стоп по кругу #define NUM_LEDS 50 #include "FastLED.h" #define PIN 6 CRGB leds[NUM_LEDS]; byte counter; void setup() { //Serial.begin(57600); FastLED.addLeds<WS2811, PIN, RGB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); FastLED.setBrightness(200); pinMode(13, OUTPUT); } void fadeall() { for (int i = 0; i < NUM_LEDS; i++) { leds[i].nscale8(250); } } void loop() { // эффект Cylon static uint8_t hue = 0; // Serial.print("x"); // First slide the led in one direction for (int i = 0; i < NUM_LEDS; i++) { // Set the i'th led to red leds[i] = CHSV(hue++, 255, 255); // Show the leds FastLED.show(); // now that we've shown the leds, reset the i'th led to black // leds[i] = CRGB::Black; fadeall(); // Wait a little bit before we loop around and do it again delay(50); } // Serial.print("x"); // Now go in the other direction. for (int i = (NUM_LEDS) - 1; i >= 0; i--) { // Set the i'th led to red leds[i] = CHSV(hue++, 255, 255); // Show the leds FastLED.show(); // now that we've shown the leds, reset the i'th led to black // leds[i] = CRGB::Black; fadeall(); // Wait a little bit before we loop around and do it again delay(50); } fill_solid( leds, NUM_LEDS, CRGB::Black); { // случайное включение и гашение LED uint32_t x = millis(); while (millis () - x < 15000) { leds [random8 ( NUM_LEDS)] = CRGB(random8( ), random8(), random8()); // полностью случайные цвета leds [random8( NUM_LEDS)] = CRGB(0, 0, 0); // случайное гашение FastLED.show(); delay( 50 ); } } { // переливы цвета int dk = 0; int dl = 1000; for ( int i = 0; i <= 255; i ++ ) { fill_solid( leds, NUM_LEDS, CRGB(255 - i, 0, i)); // красный - синий FastLED.show(); delay (dk); } delay (dl); for ( int i = 0; i <= 255; i ++ ) { fill_solid( leds, NUM_LEDS, CRGB(0, i, 255 - i)); // синий - зеленый FastLED.show(); delay (dk); } delay (dl); for ( int i = 0; i <= 255; i ++ ) { fill_solid( leds, NUM_LEDS, CRGB(0, 255 , i)); // зеленый - голубой FastLED.show(); delay (dk); } delay (dl); for ( int i = 0; i <= 255; i ++ ) { fill_solid( leds, NUM_LEDS, CRGB(i, 255 - i, 255)); // голубой - фиолетовый FastLED.show(); delay (dk); } delay (dl); for ( int i = 0; i <= 255; i ++ ) { fill_solid( leds, NUM_LEDS, CRGB(255, i, 255 - i)); // фиолетовый - желтый FastLED.show(); delay (dk); } delay (dl); for ( int i = 0; i <= 255; i ++ ) { fill_solid( leds, NUM_LEDS, CRGB(255, 255 - i, 0)); // желтый - красный FastLED.show(); delay (dk); } delay (dl); } // случайные оттенки красного // если раскомментирован этот цикл, то после прохождения одного цикла вместо пяти в пределах // строк скетча №№ 187 - 240 происходит возврат в начало всего скетча uint32_t z = micros(); while (micros () - z < 10000000) { leds [random8 ( NUM_LEDS)] = CRGB( 255, random(0 , 75), random(0 , 75)); leds [random8 ( NUM_LEDS)] = CRGB(0, 0, 0); // случайное гашение FastLED.show(); delay( 2 ); } { // сплошное заполнение цветом for ( int i = 0; i < NUM_LEDS; i ++ ) { leds[i] = CRGB( 0, 255, 0); FastLED.show(); delay (50); } } // случайные оттенки зеленого // если раскомментирован этот цикл, то после прохождения одного цикла вместо пяти в пределах // строк скетча №№ 187 - 240 происходит возврат в начало всего скетча uint32_t x = micros(); while (micros () - x < 10000000) { leds [random8 ( NUM_LEDS)] = CRGB(random(0, 75), 255, random(0 , 75)); leds [random8 ( NUM_LEDS)] = CRGB(0, 0, 0); // случайное гашение FastLED.show(); delay( 30 ); } { for (int i = 0; i < NUM_LEDS; i ++ ) { leds[i] = CRGB( 0, 255, 255); FastLED.show(); delay (50); } for ( int i = 0; i < NUM_LEDS; i ++ ) { leds[i] = CRGB( 255, 0, 0); FastLED.show(); delay (50); } for ( int i = 0; i < NUM_LEDS; i ++ ) { leds[i] = CRGB( 0, 0, 255); FastLED.show(); delay (50); } } { // случайные оттенки синего // если раскомментирован этот цикл, то после прохождения одного цикла вместо пяти в пределах // строк скетча №№ 187 - 240 происходит возврат в начало всего скетча uint32_t kk = micros(); while ( micros () - kk < 20000000) { leds [random8 ( NUM_LEDS)] = CRGB(random(0 , 100), random(0 , 100), 255); leds [random8 ( NUM_LEDS)] = CRGB(0, 0, 0); // случайное гашение FastLED.show(); delay( 5 ); } } { for ( int i = 0; i < NUM_LEDS; i ++ ) { leds[i] = CRGB( 255, 255, 0); FastLED.show(); delay (50); } for ( int i = 0; i < NUM_LEDS; i ++ ) { leds[i] = CRGB( 255, 0, 255); FastLED.show(); delay (50); } } // бегущие тройки разных цветов { int p = 0; int q = 0; int r = 0; int s = 0; do { for (int i = 0; i <= NUM_LEDS + 2; i ++ ) { q = i - 1; r = i - 2; p = i - 3; if (s < 1) { leds[i] = CRGB( 0, 255, 0); leds[q] = CRGB( 0, 255, 0); leds[r] = CRGB( 0, 255, 0); leds [p] = CRGB ( 0, 0, 0); } else if (s < 2) { leds[i] = CRGB( 0, 0, 255); leds[q] = CRGB( 0, 0, 255); leds[r] = CRGB( 0, 0, 255); leds [p] = CRGB ( 0, 0, 0); } else if (s < 3) { leds[i] = CRGB( 255, 255, 0); leds[q] = CRGB( 255, 255, 0); leds[r] = CRGB( 255, 255, 0); leds [p] = CRGB ( 0, 0, 0); } else if (s < 4) { leds[i] = CRGB( 255, 0, 255); leds[q] = CRGB( 255, 0, 255); leds[r] = CRGB( 255, 0, 255); leds [p] = CRGB ( 0, 0, 0); } else { leds[i] = CRGB( 255, 0, 0); leds[q] = CRGB( 255, 0, 0); leds[r] = CRGB( 255, 0, 0); leds [p] = CRGB ( 0, 0, 0); } FastLED.show(); delay( 50 ); } s++; } while (s < 5); } { int y = 0; do { // две бегущие навстречу тройки int j = 0; for (int i = 0; i <= NUM_LEDS; i ++ ) { j = NUM_LEDS - i; leds[i + 2] = CRGB( 255, 255, 255); leds[i + 1 ] = CRGB( 0, 255, 0); leds[i] = CRGB( 255, 0, 0); leds[i - 1] = CRGB( 0, 0, 0); leds[j - 3] = CRGB( 255, 0, 255); leds[j - 2] = CRGB( 255, 255, 0); leds[j - 1] = CRGB( 0, 0, 255); leds[j ] = CRGB( 0, 0, 0); FastLED.show(); delay(100 ); } y++; } while ( y < 5); } { int k = 0; // заполнение одним бегущим LED do { int de = 5; for (int i = 0; i < NUM_LEDS - k; i ++ ) { leds[i] = CRGB( 255, 0, 0); // красный leds[i - 1] = CRGB( 0, 0, 0); FastLED.show(); delay( de ); } k++; } while (k < NUM_LEDS); } { int k = 0; // радуга от alexgyver do { for (int i = 0; i < NUM_LEDS; i++ ) { leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень) // умножение i уменьшает шаг радуги } counter++; // counter меняется от 0 до 255 (тип данных byte) FastLED.show(); delay(2 ); // скорость движения радуги k++; } while (k < NUM_LEDS * 50); } { int k = 0; // заполнение одним бегущим LED do { int de = 5; for (int i = 0; i < NUM_LEDS - k; i ++ ) { leds[i] = CRGB( 0, 255, 0); // зеленый leds[i - 1] = CRGB( 0, 0, 0); FastLED.show(); delay( de ); } k++; } while (k < NUM_LEDS); } { int k = 0; // радуга от alexgyver do { for (int i = 0; i < NUM_LEDS; i++ ) { leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень) // умножение i уменьшает шаг радуги } counter++; // counter меняется от 0 до 255 (тип данных byte) FastLED.show(); delay(2 ); // скорость движения радуги k++; } while (k < NUM_LEDS * 50); } { int k = 0; // заполнение одним бегущим LED do { int de = 5; for (int i = 0; i < NUM_LEDS - k; i ++ ) { leds[i] = CRGB( 0, 0, 255); // синий leds[i - 1] = CRGB( 0, 0, 0); FastLED.show(); delay( de ); } k++; } while (k < NUM_LEDS); } { int k = 0; // радуга от alexgyver do { for (int i = 0; i < NUM_LEDS; i++ ) { leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень) // умножение i уменьшает шаг радуги } counter++; // counter меняется от 0 до 255 (тип данных byte) FastLED.show(); delay(2 ); // скорость движения радуги k++; } while (k < NUM_LEDS * 50); } { int k = 0; // заполнение одним бегущим LED do { int de = 5; for (int i = 0; i < NUM_LEDS - k; i ++ ) { leds[i] = CRGB( 0, 255, 255); // голубой leds[i - 1] = CRGB( 0, 0, 0); FastLED.show(); delay( de ); } k++; } while (k < NUM_LEDS); } { int k = 0; // радуга от alexgyver do { for (int i = 0; i < NUM_LEDS; i++ ) { leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень) // умножение i уменьшает шаг радуги } counter++; // counter меняется от 0 до 255 (тип данных byte) FastLED.show(); delay(2 ); // скорость движения радуги k++; } while (k < NUM_LEDS * 50); } { int k = 0; // заполнение одним бегущим LED do { int de = 5; for (int i = 0; i < NUM_LEDS - k; i ++ ) { leds[i] = CRGB( 255, 0, 255); // фиолетовый leds[i - 1] = CRGB( 0, 0, 0); FastLED.show(); delay( de ); } k++; } while (k < NUM_LEDS); } { int k = 0; // радуга от alexgyver do { for (int i = 0; i < NUM_LEDS; i++ ) { leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень) // умножение i уменьшает шаг радуги } counter++; // counter меняется от 0 до 255 (тип данных byte) FastLED.show(); delay(2 ); // скорость движения радуги k++; } while (k < NUM_LEDS * 50); } { int k = 0; // заполнение одним бегущим LED do { int de = 5; for (int i = 0; i < NUM_LEDS - k; i ++ ) { leds[i] = CRGB( 255, 255, 0); //желтый leds[i - 1] = CRGB( 0, 0, 0); FastLED.show(); delay( de ); } k++; } while (k < NUM_LEDS); } { int k = 0; // радуга от alexgyver do { for (int i = 0; i < NUM_LEDS; i++ ) { leds[i] = CHSV(counter + i * 8, 255, 255); // HSV. Увеличивать HUE (цвет) (оттенок, насыщенность , уровень) // умножение i уменьшает шаг радуги } counter++; // counter меняется от 0 до 255 (тип данных byte) FastLED.show(); delay(2 ); // скорость движения радуги k++; } while (k < NUM_LEDS * 50); } }
Я начал заниматься этим (программированием) примерно неделю назад. Так что вполне возможны какие-то подобные недочёты.У тебя осталось ещё несколько мест, где ты записываешь данные за пределы массива leds, тем самым перезаписывая другие переменные (включая, возможно, счётчик миллисов).
вот именно в этом цикле вы постиоянно пишете "мимо" массива leds, как вам указал @Александр Симонов. Это очень грубая ошибка, чреватая зависанием и перезагрузкой кода.Глюк был после цикла под комментарием "// бегущие тройки разных цветов"
это не оправдание, ошибки все равно надо исправлятьЯ начал заниматься этим (программированием) примерно неделю назад. Так что вполне возможны какие-то подобные недочёты.
Согласен с замечанием. Но я и не думал оправдываться. Просто свободное время - величина не бесконечная.вот именно в этом цикле вы постиоянно пишете "мимо" массива leds, как вам указал @Александр Симонов. Это очень грубая ошибка, чреватая зависанием и перезагрузкой кода.
Пока все подобные ошибки не будут исправлены - устойчивой работы кода ждать не стоит.
это не оправдание, ошибки все равно надо исправлять
Вы оба совершенно правы. Исключил оба "подозрительных" цикла, вернул millis() обратно вместо micros() и все заработало корректно. Они мне и самому глаз резали, хотя и работали. Буду думать как их грамотно заново создать. В любом случае спасибо за науку!вот именно в этом цикле вы постиоянно пишете "мимо" массива leds, как вам указал @Александр Симонов.
Сейчас полезу создание функций изучатьа я скажу как заново все делать
в цикл loop сделать так:
void loop()
{
effect_1();
effect_2();
effect_3();
...
}
и так далее.
По скольку переключения между эффектами нет,то можно так.
ну и ниже реализовывать (переписывать) эффекты по одному.