|
Переключение эффектов кнопкой
|
|
| Admin | Дата: Пятница, 02.02.2018, 01:44 | Сообщение # 1 |
|
Admin
Группа: Заблокированные
Сообщений: 329
Статус: Offline
|
|
| |
| |
| grunge934 | Дата: Пятница, 02.02.2018, 01:44 | Сообщение # 2 |
|
Рядовой
Группа: Пользователи
Сообщений: 18
Статус: Offline
| мне управление с кнопки нужно для декоративного светильника, для вифи у меня есть и сборка и код, но вот для кнопки у меня проблемы с кодом, а точнее не могу записаить примеры из других скечей, поэтому и ищу, где можно взять
|
| |
| |
| Admin | Дата: Пятница, 02.02.2018, 01:44 | Сообщение # 3 |
|
Admin
Группа: Заблокированные
Сообщений: 329
Статус: Offline
| Не знаю в чем у вас проблеммы. Самый простой код. Нажали кнопку - включилось. Еще раз нажали - выключилось.
Код if (digitalRead(Key) == LOW){ digitalWrite(PIN, ! digitalRead(PIN)); } Для защиты от дребезга контактов можно просто вставить задержку.
|
| |
| |
| grunge934 | Дата: Пятница, 02.02.2018, 01:45 | Сообщение # 4 |
|
Рядовой
Группа: Пользователи
Сообщений: 18
Статус: Offline
| смотри, есть готовый скетч с примерами, там выбраны несколько режимов, которые посменно работают, мне необходимо, что бы эта смена проходила по нажатию кнопки
|
| |
| |
| Admin | Дата: Пятница, 02.02.2018, 01:45 | Сообщение # 5 |
|
Admin
Группа: Заблокированные
Сообщений: 329
Статус: Offline
| Так бы сразу и написал :))))) Вот так перебираются эффекты по кругу кнопкой.
Код if (digitalRead(Key) == LOW){ delay(300); a ++; if (a > 301) { a = 0; } setEffects(); } а это переменная которая определяет какой эффект выбран. по нажатию кнопки мы увеличиваем ее на 1 проверяем что бы значение не превысило количество эффектов. если превысило присваиваем начальное значение вызываем функцию запуска нужного эффекта.
В твоем скетче возможно нужен несколько другой алгоритм. зависит от кода.
|
| |
| |
| grunge934 | Дата: Пятница, 02.02.2018, 01:45 | Сообщение # 6 |
|
Рядовой
Группа: Пользователи
Сообщений: 18
Статус: Offline
| слушай, если я скину ссылку на скеч, и укажу какие именно мне нужны эфеткты, ты подскажешь мне как именно исправить?
|
| |
| |
| Admin | Дата: Пятница, 02.02.2018, 01:45 | Сообщение # 7 |
|
Admin
Группа: Заблокированные
Сообщений: 329
Статус: Offline
| Можно попробовать.
|
| |
| |
| grunge934 | Дата: Пятница, 02.02.2018, 01:45 | Сообщение # 8 |
|
Рядовой
Группа: Пользователи
Сообщений: 18
Статус: Offline
| https://github.com/AlexGyver/WS2812_FX вот тут скечи, в WS2812_FX (в этом скече) приведены примеры, вотмне надо что бы примеры переключались кнопкой. у него в коде выделено несколько примеров, которые идут по кругу, я вот и хочу выбрать свои примеры, выбрать их и переключать, возможно такое?
|
| |
| |
| Admin | Дата: Пятница, 02.02.2018, 01:45 | Сообщение # 9 |
|
Admin
Группа: Заблокированные
Сообщений: 329
Статус: Offline
| Ну и наворочено :))))) На мой вгляд библиотека от адафрута попроще будет. Все эффекты написаны в виде функций. Для выбора эффекта присвоть переменной "newmode" номер нужного эффекта. Вызвать функцию "change_mode". Убираете ненужные эффекты и настройки. Изменяете нумерацию что бы шла по порядку. Добавляете опрос кнопки. Только есть нюанс. Если код кнопки в основном цыкле, переключения не будет пока не отработает функция эффекта. Вот как то так.
|
| |
| |
| grunge934 | Дата: Пятница, 02.02.2018, 01:46 | Сообщение # 10 |
|
Рядовой
Группа: Пользователи
Сообщений: 18
Статус: Offline
| ок, а как сделать, что бы взять несколько эфектов и сделать смену при нажатии кнопки? и сколько будет стоить скеч?
|
| |
| |
| Admin | Дата: Пятница, 02.02.2018, 01:46 | Сообщение # 11 |
|
Admin
Группа: Заблокированные
Сообщений: 329
Статус: Offline
| В скетче WS2812_FX_rndChange_light Все намного проще
Сюда записываете номера нужных эффектов. Можно записать все, кроме 2х байтовых
Код byte fav_modes[] = {2, 11, 14, 25, 27, 30, 41};
Добавляете переменную, например "а"
Вот эту часть кода
Код i f (millis() - last_change > change_time) { change_time = random(5000, 20000); // получаем новое случайное время до следующей смены режима ledMode = fav_modes[random(0, num_modes - 1)]; // получаем новый случайный номер следующего режима change_mode(ledMode); // меняем режим через change_mode (там для каждого режима стоят цвета и задержки) last_change = millis(); }
Меняете на
Код if (digitalRead(Key) == LOW){ a ++; if (a > num_modes) { a = 0; } ledMode = fav_modes[a]; change_mode(ledMode); }
Нажимаете и удерживаете кнопку до смены эффекта.
На счет цены незнаю. Для комфортной работы скетча его нужно переписать заново :))))
|
| |
| |
| grunge934 | Дата: Суббота, 03.02.2018, 22:49 | Сообщение # 12 |
|
Рядовой
Группа: Пользователи
Сообщений: 18
Статус: Offline
| Спасибо, утром попробую, а то сегодня уже голова не варит, целый день убил, что бы lsd дисплей запустить, еле библиотеку нашёл Добавлено (03.02.2018, 23:45) --------------------------------------------- что то я не нашёл куда добавить эту часть кода Код byte fav_modes[] = {2, 11, 14, 25, 27, 30, 41}; и куда переменную записать? Добавлено (03.02.2018, 23:49) --------------------------------------------- походу я туп в этом) сколько стоить будет написать скеч, где примеры будут нак в примерах библиотеке неопиксель? что бы они переключались кнопкой. Скажи своюю цену пожалуйста
|
| |
| |
| Admin | Дата: Воскресенье, 04.02.2018, 00:24 | Сообщение # 13 |
|
Admin
Группа: Заблокированные
Сообщений: 329
Статус: Offline
| Ты хочеш скетч где примеры неопиксель переключаются кнопкой ? С библиотекой неопиксель от адафрута идет такой пример. Называется buttoncycler. Посмотри, может разберешся. Если не получится, будем решать.
|
| |
| |
| grunge934 | Дата: Воскресенье, 04.02.2018, 10:40 | Сообщение # 14 |
|
Рядовой
Группа: Пользователи
Сообщений: 18
Статус: Offline
| я видел его, прикол в том, что время маленькое там у эфектов, и переключаются они лишь при полном прохождении предыдущего Добавлено (04.02.2018, 11:40) --------------------------------------------- Да и примеров там мало
|
| |
| |
| Admin | Дата: Воскресенье, 04.02.2018, 14:05 | Сообщение # 15 |
|
Admin
Группа: Заблокированные
Сообщений: 329
Статус: Offline
| Это не полнлценный скетч а пример как пишутся эффекты и как их можно переключать. WS2812_FX имеет больше эффектов в скетче. Но проблеммы при переключении кнопкой будут теже самые.
|
| |
| |