Как реализовать смену режимов светодиодной подсветки (адресной светодиодной ленты) без использования пультов и компьютера?

Good_win

✩✩✩✩✩✩✩
20 Ноя 2018
10
6
Доброго времени суток.
Планирую сделать подсветку с использованием адресной светодиодной ленты (общая длина 30-40 см). Подключить ленту планирую по следующей схеме.
проект.jpg
Но не представляю, как реализовать возможность смены цветов и режимов работы ленты без подключения компьютера.
Хотелось бы осуществить сие чудо с помощь 1 кнопок. (по принципу новогодней гирлянды).
 
Изменено:

Wan-Derer

★★★★★✩✩
Команда форума
31 Июл 2018
2,002
406
Москва
wan-derer.ru
@Good_win, ловишь нажатие кнопки, заносить в переменную номер режима, в соответствии с номером формируешь картину
 

Good_win

✩✩✩✩✩✩✩
20 Ноя 2018
10
6
@Good_win, ловишь нажатие кнопки, заносить в переменную номер режима, в соответствии с номером формируешь картину
Добрый день.
Спасибо за совет.
А как "ловить нажатие кнопки"? Подключить ардуино к компьютеру и открыть программу для прошивки?
 

Good_win

✩✩✩✩✩✩✩
20 Ноя 2018
10
6
Подскажите, пожалуйста, как интегрировать "кнопку" в библиотеку FastLED


начало кода для ленты
/*
Скетч создан на основе FASTSPI2 EFFECTS EXAMPLES автора teldredge (www.funkboxing.com)
А также вот этой статьи https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#cylon
Доработан, переведён и разбит на файлы 2017 AlexGyver
Отправляем в монитор порта номер режима, он активируется
*/

#include "FastLED.h" // библиотека для работы с лентой

#define LED_COUNT 6 // число светодиодов в кольце/ленте
#define LED_DT 13 // пин, куда подключен DIN ленты

int max_bright = 20; // максимальная яркость (0 - 255)
int ledMode = 3;
/*
Стартовый режим
0 - все выключены
1 - все включены
3 - кольцевая радуга
888 - демо-режим
*/

// цвета мячиков для режима
byte ballColors[3][3] = {
{0xff, 0, 0},
{0xff, 0xff, 0xff},
{0 , 0 , 0xff}
};

// ---------------СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ-----------------
int BOTTOM_INDEX = 0; // светодиод начала отсчёта
int TOP_INDEX = int(LED_COUNT / 2);
int EVENODD = LED_COUNT % 2;
struct CRGB leds[LED_COUNT];
int ledsX[LED_COUNT][3]; //-ARRAY FOR COPYING WHATS IN THE LED STRIP CURRENTLY (FOR CELL-AUTOMATA, MARCH, ETC)

int thisdelay = 20; //-FX LOOPS DELAY VAR
int thisstep = 10; //-FX LOOPS DELAY VAR
int thishue = 0; //-FX LOOPS DELAY VAR
int thissat = 255; //-FX LOOPS DELAY VAR

int thisindex = 0;
int thisRED = 0;
int thisGRN = 0;
int thisBLU = 0;

int idex = 0; //-LED INDEX (0 to LED_COUNT-1
int ihue = 0; //-HUE (0-255)
int ibright = 0; //-BRIGHTNESS (0-255)
int isat = 0; //-SATURATION (0-255)
int bouncedirection = 0; //-SWITCH FOR COLOR BOUNCE (0-1)
float tcount = 0.0; //-INC VAR FOR SIN LOOPS
int lcount = 0; //-ANOTHER COUNTING VAR
// ---------------СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ-----------------

void setup()
{
Serial.begin(9600); // открыть порт для связи
LEDS.setBrightness(max_bright); // ограничить максимальную яркость

LEDS.addLeds<WS2811, LED_DT, GRB>(leds, LED_COUNT); // настрйоки для нашей ленты (ленты на WS2811, WS2812, WS2812B)
one_color_all(0, 0, 0); // погасить все светодиоды
LEDS.show(); // отослать команду
}

void loop() {

if (Serial.available() > 0) { // если что то прислали
ledMode = Serial.parseInt(); // парсим в тип данных int
change_mode(ledMode); // меняем режим через change_mode (там для каждого режима стоят цвета и задержки)
}
switch (ledMode) {
case 999: break; // пазуа
case 2: rainbow_fade(); break; // плавная смена цветов всей ленты
case 3: rainbow_loop(); break; // крутящаяся"
конец кода. (лента работает)


А вот как заставить работать это с кнопкой... Нажал кнопку, режим сменился.

начало
/*
Пример использования библиотеки GyverButton, 1- 2- 3- нажатие
*/

#define PIN 3 // кнопка подключена сюда (PIN --- КНОПКА --- GND)

#include "GyverButton.h"
GButton butt1(PIN);

void setup() {
Serial.begin(9600);
}

void loop() {
butt1.tick(); // обязательная функция отработки. Должна постоянно опрашиваться

if (butt1.isSingle()) Serial.println("Single"); // проверка на один клик

конц.
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@Good_win,
Подскажите, пожалуйста, как интегрировать "кнопку" в библиотеку FastLED
Никак.
Точнее зачем?
А вот как заставить работать это с кнопкой... Нажал кнопку, режим сменился.
Научись сначала работать с кнопкой.
Напиши код где нажатие кнопки изменяет переменную на переменная + 1.
Когда качнешь этот скилл прикрутишь этот код к скетчу и присвоишь значение этой переменной ledMode.
И всё это заработает.