Цветомузыка на Arduino. Задания на доработку

Slenk

★★★★★★✩
21 Янв 2020
382
595
35
Краснодар
Скажите пожалуйста, можно ли сделать как нибудь так, чтобы режимы все или частично или выборочно шли по порядку, в настройках желательно чтобы можно было выбирать время идущего режима и ещё что-то, просто надоедает один и тот же режим и щёлкать самому не хочется.. :)
Как--нибудь можно) Я на днях писал об этом у себя в теме. Но никто ничего не ответил, поэтому подвижек пока нет.
 
  • Лойс +1
Реакции: Vasyatko

PerHakS

✩✩✩✩✩✩✩
7 Дек 2020
13
3
Как--нибудь можно) Я на днях писал об этом у себя в теме. Но никто ничего не ответил, поэтому подвижек пока нет.
Да на любую кнопку можете сделать, на ту чтобы было легче написать и чтобы потом с нею было меньше проблем и багов, по поводу каких режимов то можно нппрмер чтобы шли по очереди 4-9 или просто отдельно 2 режим(там их так много подрежимов) ну и чтобы можно было задавать время которое будет они будут идти с пульта или же в самой прошивке, можно рандомно можно и по порядку( без разницы, главное что лагов и багов не было, делайте как проще или лучше) ещё интересно какой саб будете делать, какому оформлению отдадите предпочтение и какие нюансы у вас там с ним будут ))
 
  • Лойс +1
Реакции: Vasyatko и Fil61

LordZET

✩✩✩✩✩✩✩
1 Мар 2022
16
3
54
Хочу заменить ИК пульт на RF.
В скече закоментил все что касается IR пульта и вставил то что нужно для RF используя rc-switch библиотеку. С памятью проблем нет, но:
Отрисовка на ленту происходит по условию (по команде) — когда НЕТ сигнала с IR приемника, а в rc-switch нет такой команды.
C++:
      if (!IRLremote.receiving())    // если на ИК приёмник не приходит сигнал (без этого НЕ РАБОТАЕТ!)
        FastLED.show();         // отправить значения на ленту
Отключаю отрисовку на ленту, включаю вывод параметров на порт — работает. Включаю отрисовку без условий, пропадает даже вывод на порт.
Если есть кто заинтересован в данном проекте, выложу скетч и прочее.
 
Изменено:

Slenk

★★★★★★✩
21 Янв 2020
382
595
35
Краснодар
@LordZET, тоже были мысли прикрутить RF пульт. Но так и не заказал его. Если не забуду или не забью, то на днях попробую (какой-то пульт есть, просто сюда он не подойдет, а для проверки хватит). Если сходу получится завезти, то прикручу к своей прошивке, если нет, то сильно копаться не буду. Если у Вас получится - выкладывайте, прикручу себе тоже.

@LordZET, попробовал, ровно тот же эффект, что у Вас. Есть гайверовская библиотека для 433 https://github.com/GyverLibs/Gyver433 у меня завести её не получилось, вообще ноль реакции, хотя rc-switch работает без проблем. Может у Вас получится, с ней по идее должно заработать. Если получится - расскажите.
 

Hivin

✩✩✩✩✩✩✩
17 Апр 2025
8
0
Доброго дня уважаемые форумчане. Есть большая нужда изменять кнопкой количество светодиодов в ленте в цветомузыке Гайвера версия 2,1. Не пинайте сильно палками за такой вопрос ..Дело в том , что я работаю в деревенском детском саду электриком, и директор попросила меня оформить как то актовый зал светом. Я не нашёл ни чего лучше , чем собрать эту цветомузыку. В итоге по центру сцены висит профиль 4 метра и по бокам 4 полосы по 1-му метру. Все бы хорошо, но каждый раз подключать комп , что бы поменять количество светодиодов уже надоело, а програмно я это осилить не могу. Буду благодарен если кто то сможет мне помочь в этой ситуации.
 

Divin

★★★✩✩✩✩
30 Янв 2021
449
195
@Hivin, прошивка WLED, поможет справится с вашей задачей, только вместо ардуины поставит есп8266 или есп32 , стоят недорого и легко коммутировать а тут никак кнопкой не поменять
 

Hivin

✩✩✩✩✩✩✩
17 Апр 2025
8
0
@wulf, Проект строился за бюджет дет сада, и как всегда не хвавтило денег на еще один комплект , вот и приходится на одну Ардуинку перебрасывать то одну линию, то вторую.. Директриса обещала выделить пару копеек на второй комплект, так обещания и зависли. Вот и маюсь. Я понимаю выглядит смешно, а мне на мои 0,25 ставки своими не раскинешься. Руками я на радость детишкам делаю много, а вот финансово не могу, хоть и всё это стоит копейки.
 

poty

★★★★★★✩
19 Фев 2020
3,445
981
@Hivin, не очень понимаю, что Вы хотите сделать?
Почему не подключить оба куска сразу (либо параллельно, либо последовательно)? При параллельном подключении нужно выставить количество светодиодов по самой длинной ленте, при последовательном - суммарное количество светодиодов (может не хватить памяти, в зависимости от общего количества).
Большая часть эффектов будет работать и без изменения количества светодиодов, не нужно перешивать Ардуино.
Если оба этих предложения Вам не подходят, то нужно точно знать на базе какой версии прошивки Вы построили свою ЦМУ? И какой алгоритм переключения Вы предполагаете?
 

Hivin

✩✩✩✩✩✩✩
17 Апр 2025
8
0
@poty, Добрый день. В первом своем посте я написал, что версия 2,1 и мне надо сделать так, чтоб я мог включать либо длинную ленту над всей сценой, либо с двух сторон короткие 4 Куска расположенные на неком расстоянии друг от друга.Это было задумано так изначально и зависит какую линию включать от того , что происходит на сцене. Всё , что мне надо это иметь возможность переключать 2 ленты разной длины. Можно сделать многое и по разному, но есть задача, которую хочется решить малой кровью и если не получится, то будет принято другое решение.
 

Divin

★★★✩✩✩✩
30 Янв 2021
449
195
@Hivin, сколько светодиодов у вас суммарно, не длинна ленты, а количество светодиодов и что значит для вас"малой кровью" ? Замена МК и его перепрошивка это непосильная задача?
 

Hivin

✩✩✩✩✩✩✩
17 Апр 2025
8
0
@Divin, Добрый день. Надо подключать одну линию на 240 диодов и две по 120..Задача:сделать переключение между линиями одной кнопкой, то есть либо работают 240 в одной полосе , либо две линии по 120. (2-е По 4 полосы по 30 диодов). Для меня подключить комп и изменить пару строк в прошивке , или сменить прошивку это малой кровью, покупка контролёров , перепайка всего это конечно можно, но я пришёл сюда не за этим. Да, совсем забыл упомянуть, 4 полосы по тому, что я изменил немного прошивку и добавил ещё один цвет . В результате каждая полоска в малой линии светит своим цветом.
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,445
981
@Hivin, 1х240 и 2х120 - эквивалентная конфигурация, не требующая никаких перестроек. Однако, у Вас появились изменения в скетче, тогда становится непонятным, как разбираться в этом? Или другими словами: какой код не работает?
 

Hivin

✩✩✩✩✩✩✩
17 Апр 2025
8
0
День добрый, не совсем одинаковая конфигурация. В одной я использую ленту целиком, во второй я использую каждую короткую ленту как целую ( не половинку) добавка одного цвета ни как не влияет на указатель в коде на количества светодиодов.
Если идти по скетчу , то вначале мы задаём параметры, один из которых и есть количество светодиодов, дальше всякие драблы с подключениями библиотек, а уж в самом конце идёт разбивка на каналы и в общем то мы эту часть можем вообще изъять из скетча это выкинет лишь три режима, но при этом задача стоит даже оставшиеся режимы иметь возможность делить на разное количество светодиодов. Вся загвоздка в том, что количество светодиодов опрашивается в самом начале библиотекой и я не знаю как прописать кнопку раньше этой библиотеки, а после библиотеки любые изменения по количеству светодиодов приводит к ошибке , оно и понятно.
 
Изменено:

Bruzzer

★★★✩✩✩✩
23 Май 2020
581
175
Для меня подключить комп и изменить пару строк в прошивке ...
Вы можете написать, какие пару строк вы меняете при смене прошивки. Не словами, а вставить строки из кода. Было - Стало. И не примерно, а именно так как у вас работает.

Ваши подробные описания для меня не понятны. (например из предыдущего сообщения).
 

Hivin

✩✩✩✩✩✩✩
17 Апр 2025
8
0
Я извиняюсь вы хотите помочь мне или у вас интерес как добавить цвет? Любой кто хоть немножко может прочитать код хоть через строчку отлично видит где что и как работает . Деления на частоты для 3.4.5.режимов идёт практически в самом конце примерно с 360 строки сейчас не за компом, приду домой смогу сказать точней. И для каждого режима тупо скопировать и вставить строку организации цвета изменив лишь переход на частоту и цвет проблем нет. До этого момента код родной И не надо мне говорить , что это очень важно для того , чтоб поменять количество светодиодов, оно должно поменяться ещё даже не в 50-ой строке . Давайте будем честными друг к другу, если вам надо добавить цвет так и скажите, Ия с вами возможно поделюсь тем как это сделал я, возможно я сделал и криво , но оно работает.
 

Hivin

✩✩✩✩✩✩✩
17 Апр 2025
8
0
Оформи код соответствующим тэгом, см. Правила
Я наверное как то не правильно выражаюсь среди знатаков програмирования, за что прошу прощения. Эта моя третья самоделка на ардуино и я практически ни чего не понимаю в програмировании. Попытаюсь обьяснить чего мне надо по другому. Вот кусок стандартного кода прошивки 2,1.

#define NUM_LEDS (120 ) // количество светодиодов (данная версия поддерживает до 410 штук)
#define CURRENT_LIMIT 4500 // лимит по току в МИЛЛИАМПЕРАХ, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
byte BRIGHTNESS = 245; // яркость по умолчанию (0 - 255)
// ----- пины подключения
#define SOUND_R A2 // аналоговый пин вход аудио, правый канал
#define SOUND_L A1 // аналоговый пин вход аудио, левый канал
#define SOUND_R_FREQ A3 // аналоговый пин вход аудио для режима с частотами (через кондер)
#define BTN_PIN 3 // кнопка переключения режимов (PIN --- КНОПКА --- GND)
#if defined(AVR_ATmega32U4) // Пины для Arduino Pro Micro (смотри схему для Pro Micro на странице проекта!!!)
#define MLED_PIN 17 // пин светодиода режимов на ProMicro, т.к. обычный не выведен.
#define MLED_ON LOW
#define LED_PIN 9 // пин DI светодиодной ленты на ProMicro, т.к. обычный не выведен.
#else // Пины для других плат Arduino (по умолчанию)
#define MLED_PIN 13 // пин светодиода режимов
#define MLED_ON HIGH
#define LED_PIN 12 // пин DI светодиодной ленты
#endif
#define POT_GND A0 // пин земля для потенциометра
#define IR_PIN 2 // пин ИК приёмника
// ----- настройки радуги
float RAINBOW_STEP = 5.00; // шаг изменения цвета радуги
// ----- отрисовка
#define MODE 0 // режим при запуске
#define MAIN_LOOP 5 // период основного цикла отрисовки (по умолчанию 5)
// ----- сигнал
#define MONO 1 // 1 - только один канал (ПРАВЫЙ!!!!! SOUND_R!!!!!), 0 - два канала
#define EXP 1.4 // степень усиления сигнала (для более "резкой" работы) (по умолчанию 1.4)
#define POTENT 0 // 1 - используем потенциометр, 0 - используется внутренний источник опорного напряжения 1.1 В
byte EMPTY_BRIGHT = 0; // яркость "не горящих" светодиодов (0 - 255)
#define EMPTY_COLOR HUE_PURPLE // цвет "не горящих" светодиодов. Будет чёрный, если яркость 0
// ----- нижний порог шумов
uint16_t LOW_PASS = 100; // нижний порог шумов режим VU, ручная настройка
uint16_t SPEKTR_LOW_PASS = 40; // нижний порог шумов режим спектра, ручная настройка
#define AUTO_LOW_PASS 0 // разрешить настройку нижнего порога шумов при запуске (по умолч. 0)
#define EEPROM_LOW_PASS 1 // порог шумов хранится в энергонезависимой памяти (по умолч. 1)
#define LOW_PASS_ADD 13 // "добавочная" величина к нижнему порогу, для надёжности (режим VU)
#define LOW_PASS_FREQ_ADD 3 // "добавочная" величина к нижнему порогу, для надёжности (режим частот)
// ----- режим шкала громкости
float SMOOTH = 0.3; // коэффициент плавности анимации VU (по умолчанию 0.5)
#define MAX_COEF 1.8 // коэффициент громкости (максимальное равно срднему * этот коэф) (по умолчанию 1.8)
// ----- режим цветомузыки
float SMOOTH_FREQ = 0.8; // коэффициент плавности анимации частот (по умолчанию 0.8)
float MAX_COEF_FREQ = 1.2; // коэффициент порога для "вспышки" цветомузыки (по умолчанию 1.5)
#define SMOOTH_STEP 20 // шаг уменьшения яркости в режиме цветомузыки (чем больше, тем быстрее гаснет)
#define LOW_COLOR HUE_RED // цвет низких частот
#define MID_COLOR HUE_GREEN // цвет средних
#define MID_COLOR_1 HUE_YELLOW // цвет средних
#define HIGH_COLOR HUE_BLUE // цвет высоких
// ----- режим стробоскопа
uint16_t STROBE_PERIOD = 140; // период вспышек, миллисекунды
#define STROBE_DUTY 20 // скважность вспышек (1 - 99) - отношение времени вспышки ко времени темноты
#define STROBE_COLOR HUE_YELLOW // цвет стробоскопа
#define STROBE_SAT 0 // насыщенность. Если 0 - цвет будет БЕЛЫЙ при любом цвете (0 - 255)
byte STROBE_SMOOTH = 200; // скорость нарастания/угасания вспышки (0 - 255)
// ----- режим подсветки
byte LIGHT_COLOR = 0; // начальный цвет подсветки
byte LIGHT_SAT = 255; // начальная насыщенность подсветки
byte COLOR_SPEED = 100;
int RAINBOW_PERIOD = 1;
float RAINBOW_STEP_2 = 0.5;
// ----- режим бегущих частот
byte RUNNING_SPEED = 11;
// ----- режим анализатора спектра
byte HUE_START = 0;
byte HUE_STEP = 5;
#define LIGHT_SMOOTH 2
/*
Цвета для HSV
HUE_RED
HUE_ORANGE
HUE_YELLOW
HUE_GREEN
HUE_AQUA
HUE_BLUE
HUE_PURPLE
HUE_PINK
*/
// ----- КНОПКИ ПУЛЬТА WAVGAT -----
#if REMOTE_TYPE == 1
#define BUTT_UP 0xF39EEBAD
#define BUTT_DOWN 0xC089F6AD
#define BUTT_LEFT 0xE25410AD
#define BUTT_RIGHT 0x14CE54AD
#define BUTT_OK 0x297C76AD
#define BUTT_1 0x4E5BA3AD
#define BUTT_2 0xE51CA6AD
#define BUTT_3 0xE207E1AD
#define BUTT_4 0x517068AD
#define BUTT_5 0x1B92DDAD
#define BUTT_6 0xAC2A56AD
#define BUTT_7 0x5484B6AD
#define BUTT_8 0xD22353AD
#define BUTT_9 0xDF3F4BAD
#define BUTT_0 0xF08A26AD
#define BUTT_STAR 0x68E456AD
#define BUTT_HASH 0x151CD6AD
#endif
// ----- КНОПКИ ПУЛЬТА KEYES -----
#if REMOTE_TYPE == 2
#define BUTT_UP 0xE51CA6AD
#define BUTT_DOWN 0xD22353AD
#define BUTT_LEFT 0x517068AD
#define BUTT_RIGHT 0xAC2A56AD
#define BUTT_OK 0x1B92DDAD
#define BUTT_1 0x68E456AD
#define BUTT_2 0xF08A26AD
#define BUTT_3 0x151CD6AD
#define BUTT_4 0x18319BAD
#define BUTT_5 0xF39EEBAD
#define BUTT_6 0x4AABDFAD
#define BUTT_7 0xE25410AD
#define BUTT_8 0x297C76AD
#define BUTT_9 0x14CE54AD
#define BUTT_0 0xC089F6AD
#define BUTT_STAR 0xAF3F1BAD
#define BUTT_HASH 0x38379AD
#endif
// ----- КНОПКИ СВОЕГО ПУЛЬТА -----
#if REMOTE_TYPE == 3
#define BUTT_UP 0xE51CA6AD
#define BUTT_DOWN 0xD22353AD
#define BUTT_LEFT 0x517068AD
#define BUTT_RIGHT 0xAC2A56AD
#define BUTT_OK 0x1B92DDAD
#define BUTT_1 0x68E456AD
#define BUTT_2 0xF08A26AD
#define BUTT_3 0x151CD6AD
#define BUTT_4 0x18319BAD
#define BUTT_5 0xF39EEBAD
#define BUTT_6 0x4AABDFAD
#define BUTT_7 0xE25410AD
#define BUTT_8 0x297C76AD
#define BUTT_9 0x14CE54AD
#define BUTT_0 0xC089F6AD
#define BUTT_STAR 0xAF3F1BAD // *
#define BUTT_HASH 0x38379AD // #
#endif

// ------------------------------ ДЛЯ РАЗРАБОТЧИКОВ --------------------------------
#define MODE_AMOUNT 9 // количество режимов
#define STRIPE NUM_LEDS / 5 //разбиваем ленту на 5 равных частей

В первой строчке мы видим переменную с указанием количества светодиодов, в последней то место где идет первый опрос этой переменной .Вопрос возможно ли в этот кусок кода куда нибуть вставить код управления кнопкой , который сможет изменять цифру указвающую количество светодиодов в первой строке. Напоминаю что для этой программы подключена библиотека управления кнопками от всеми уважаемого Алекса Гайвера , что по идеи может превратить этот код в одну строчку.
Если это возможно , то хоть направьте в каком направлении двигаться, или хоть как помогите с кодом .Если это невозможно , то я закрываю тему. Всем откликнувшимся спасибо.
 
Изменено:

VictorArx

★★✩✩✩✩✩
22 Мар 2021
580
94
@Hivin, на этом форуме мне тоже помогали бескорыстно .Так нужно оформлять код.
C++:
#define NUM_LEDS (120 ) // количество светодиодов (данная версия поддерживает до 410 штук)
#define CURRENT_LIMIT 4500 // лимит по току в МИЛЛИАМПЕРАХ, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
byte BRIGHTNESS = 245; // яркость по умолчанию (0 - 255)
// ----- пины подключения
#define SOUND_R A2 // аналоговый пин вход аудио, правый канал
#define SOUND_L A1 // аналоговый пин вход аудио, левый канал
#define SOUND_R_FREQ A3 // аналоговый пин вход аудио для режима с частотами (через кондер)
#define BTN_PIN 3 // кнопка переключения режимов (PIN --- КНОПКА --- GND)
#if defined(AVR_ATmega32U4) // Пины для Arduino Pro Micro (смотри схему для Pro Micro на странице проекта!!!)
#define MLED_PIN 17 // пин светодиода режимов на ProMicro, т.к. обычный не выведен.
#define MLED_ON LOW
#define LED_PIN 9 // пин DI светодиодной ленты на ProMicro, т.к. обычный не выведен.
#else // Пины для других плат Arduino (по умолчанию)
#define MLED_PIN 13 // пин светодиода режимов
#define MLED_ON HIGH
#define LED_PIN 12 // пин DI светодиодной ленты
#endif
#define POT_GND A0 // пин земля для потенциометра
#define IR_PIN 2 // пин ИК приёмника
// ----- настройки радуги
float RAINBOW_STEP = 5.00; // шаг изменения цвета радуги
// ----- отрисовка
#define MODE 0 // режим при запуске
#define MAIN_LOOP 5 // период основного цикла отрисовки (по умолчанию 5)
// ----- сигнал
#define MONO 1 // 1 - только один канал (ПРАВЫЙ!!!!! SOUND_R!!!!!), 0 - два канала
#define EXP 1.4 // степень усиления сигнала (для более "резкой" работы) (по умолчанию 1.4)
#define POTENT 0 // 1 - используем потенциометр, 0 - используется внутренний источник опорного напряжения 1.1 В
byte EMPTY_BRIGHT = 0; // яркость "не горящих" светодиодов (0 - 255)
#define EMPTY_COLOR HUE_PURPLE // цвет "не горящих" светодиодов. Будет чёрный, если яркость 0
// ----- нижний порог шумов
uint16_t LOW_PASS = 100; // нижний порог шумов режим VU, ручная настройка
uint16_t SPEKTR_LOW_PASS = 40; // нижний порог шумов режим спектра, ручная настройка
#define AUTO_LOW_PASS 0 // разрешить настройку нижнего порога шумов при запуске (по умолч. 0)
#define EEPROM_LOW_PASS 1 // порог шумов хранится в энергонезависимой памяти (по умолч. 1)
#define LOW_PASS_ADD 13 // "добавочная" величина к нижнему порогу, для надёжности (режим VU)
#define LOW_PASS_FREQ_ADD 3 // "добавочная" величина к нижнему порогу, для надёжности (режим частот)
// ----- режим шкала громкости
float SMOOTH = 0.3; // коэффициент плавности анимации VU (по умолчанию 0.5)
#define MAX_COEF 1.8 // коэффициент громкости (максимальное равно срднему * этот коэф) (по умолчанию 1.8)
// ----- режим цветомузыки
float SMOOTH_FREQ = 0.8; // коэффициент плавности анимации частот (по умолчанию 0.8)
float MAX_COEF_FREQ = 1.2; // коэффициент порога для "вспышки" цветомузыки (по умолчанию 1.5)
#define SMOOTH_STEP 20 // шаг уменьшения яркости в режиме цветомузыки (чем больше, тем быстрее гаснет)
#define LOW_COLOR HUE_RED // цвет низких частот
#define MID_COLOR HUE_GREEN // цвет средних
#define MID_COLOR_1 HUE_YELLOW // цвет средних
#define HIGH_COLOR HUE_BLUE // цвет высоких
// ----- режим стробоскопа
uint16_t STROBE_PERIOD = 140; // период вспышек, миллисекунды
#define STROBE_DUTY 20 // скважность вспышек (1 - 99) - отношение времени вспышки ко времени темноты
#define STROBE_COLOR HUE_YELLOW // цвет стробоскопа
#define STROBE_SAT 0 // насыщенность. Если 0 - цвет будет БЕЛЫЙ при любом цвете (0 - 255)
byte STROBE_SMOOTH = 200; // скорость нарастания/угасания вспышки (0 - 255)
// ----- режим подсветки
byte LIGHT_COLOR = 0; // начальный цвет подсветки
byte LIGHT_SAT = 255; // начальная насыщенность подсветки
byte COLOR_SPEED = 100;
int RAINBOW_PERIOD = 1;
float RAINBOW_STEP_2 = 0.5;
// ----- режим бегущих частот
byte RUNNING_SPEED = 11;
// ----- режим анализатора спектра
byte HUE_START = 0;
byte HUE_STEP = 5;
#define LIGHT_SMOOTH 2
/*
Цвета для HSV
HUE_RED
HUE_ORANGE
HUE_YELLOW
HUE_GREEN
HUE_AQUA
HUE_BLUE
HUE_PURPLE
HUE_PINK
*/
// ----- КНОПКИ ПУЛЬТА WAVGAT -----
#if REMOTE_TYPE == 1
#define BUTT_UP 0xF39EEBAD
#define BUTT_DOWN 0xC089F6AD
#define BUTT_LEFT 0xE25410AD
#define BUTT_RIGHT 0x14CE54AD
#define BUTT_OK 0x297C76AD
#define BUTT_1 0x4E5BA3AD
#define BUTT_2 0xE51CA6AD
#define BUTT_3 0xE207E1AD
#define BUTT_4 0x517068AD
#define BUTT_5 0x1B92DDAD
#define BUTT_6 0xAC2A56AD
#define BUTT_7 0x5484B6AD
#define BUTT_8 0xD22353AD
#define BUTT_9 0xDF3F4BAD
#define BUTT_0 0xF08A26AD
#define BUTT_STAR 0x68E456AD
#define BUTT_HASH 0x151CD6AD
#endif
// ----- КНОПКИ ПУЛЬТА KEYES -----
#if REMOTE_TYPE == 2
#define BUTT_UP 0xE51CA6AD
#define BUTT_DOWN 0xD22353AD
#define BUTT_LEFT 0x517068AD
#define BUTT_RIGHT 0xAC2A56AD
#define BUTT_OK 0x1B92DDAD
#define BUTT_1 0x68E456AD
#define BUTT_2 0xF08A26AD
#define BUTT_3 0x151CD6AD
#define BUTT_4 0x18319BAD
#define BUTT_5 0xF39EEBAD
#define BUTT_6 0x4AABDFAD
#define BUTT_7 0xE25410AD
#define BUTT_8 0x297C76AD
#define BUTT_9 0x14CE54AD
#define BUTT_0 0xC089F6AD
#define BUTT_STAR 0xAF3F1BAD
#define BUTT_HASH 0x38379AD
#endif
// ----- КНОПКИ СВОЕГО ПУЛЬТА -----
#if REMOTE_TYPE == 3
#define BUTT_UP 0xE51CA6AD
#define BUTT_DOWN 0xD22353AD
#define BUTT_LEFT 0x517068AD
#define BUTT_RIGHT 0xAC2A56AD
#define BUTT_OK 0x1B92DDAD
#define BUTT_1 0x68E456AD
#define BUTT_2 0xF08A26AD
#define BUTT_3 0x151CD6AD
#define BUTT_4 0x18319BAD
#define BUTT_5 0xF39EEBAD
#define BUTT_6 0x4AABDFAD
#define BUTT_7 0xE25410AD
#define BUTT_8 0x297C76AD
#define BUTT_9 0x14CE54AD
#define BUTT_0 0xC089F6AD
#define BUTT_STAR 0xAF3F1BAD // *
#define BUTT_HASH 0x38379AD // #
#endif

// ------------------------------ ДЛЯ РАЗРАБОТЧИКОВ --------------------------------
#define MODE_AMOUNT 9 // количество режимов
#define STRIPE NUM_LEDS / 5 //разбиваем ленту на 5 равных частей
 
  • Лойс +1
Реакции: Hivin

Hivin

✩✩✩✩✩✩✩
17 Апр 2025
8
0
Спасибо ! Извените за тупой вопрос , чтоб больше так не делать подскажите куда нажать , чтоб было так красиво?
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
581
175
@Hivin,
Если выбор режима производить при включении устройства, и делать это по состоянию пина 0 или 1, то примерно так
ПС Это разовый совет. Дальше участвовать в обсуждении не буду.
C++:
// ----- настройки ленты
//#define NUM_LEDS 60        // количество светодиодов (данная версия поддерживает до 410 штук)
#define NUM_LEDS_1 60
#define NUM_LEDS_2 100
#define MAX_NUM_LEDS NUM_LEDS_2
int NUM_LEDS;  //
#define CURRENT_LIMIT 3000  // лимит по току в МИЛЛИАМПЕРАХ, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
.
.
// ------------------------------ ДЛЯ РАЗРАБОТЧИКОВ --------------------------------
#define MODE_AMOUNT 9      // количество режимов

//#define STRIPE NUM_LEDS / 5
int STRIPE;
//float freq_to_stripe = NUM_LEDS / 40; // /2 так как симметрия, и /20 так как 20 частот
float freq_to_stripe;
.
.
//int MAX_CH = NUM_LEDS / 2;
int MAX_CH;
.
. аналогично для всех других зависимых величин
//CRGB leds[NUM_LEDS];
CRGB leds[MAX_NUM_LEDS]; // MAX_NUM_LEDS - максимальное значение  из  NUM_LEDS_1     NUM_LEDS_2

// ------------------------------ ДЛЯ РАЗРАБОТЧИКОВ --------------------------------

void setup() {
  Serial.begin(9600);
  if (замкнут контакт 1) {
    NUM_LEDS = NUM_LEDS_1;
  }
  else {
    NUM_LEDS = NUM_LEDS_2;
  }
  STRIPE = NUM_LEDS / 5;
  MAX_CH = NUM_LEDS / 2;
  freq_to_stripe = NUM_LEDS / 40;
  . аналогично для других зависимых величин
  .

  FastLED.addLeds<WS2811, LED_PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  if (CURRENT_LIMIT > 0) FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT);
  FastLED.setBrightness(BRIGHTNESS);
 
  • Лойс +1
Реакции: Hivin