Оглавление:
- Шаг 1: Список деталей
- Шаг 2: Схема подключения
- Шаг 3: Базовая настройка Falcon Pi Player
- Шаг 4: более надежный сценарий
- Шаг 5: (Необязательно) Лицевая панель для кнопки
Видео: Начните рождественское световое шоу с кнопки: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
При запуске рождественского светового шоу, синхронизированного с музыкой, вы можете начать шоу, нажав кнопку. Это руководство применимо только для шоу, которое управляется с помощью Falcon Pi Player (FPP), запущенного на Raspberry Pi. Если вы используете FPP, вы, вероятно, используете контроллеры Falcon и xLights или LightORama для создания последовательности вашего шоу. Если ни одно из этих слов ничего не значит для вас, это руководство, вероятно, сейчас немного не по себе, и вам следует начать с чтения этой вики https://auschristmaslighting.com/wiki/ и присоединиться к группе Facebook, как показано ниже.
- xLights:
- Общие продвинутые рождественские огни:
- Плеер Falcon Pi:
- Обмен идеями корпуса / стойки:
- «Не относится конкретно к xLights или LOR»: Но
- Поставщики xLights Holiday Light:
- Сделай сам Рождество:
Шаг 1: Список деталей
Вам понадобятся следующие предметы:
- Кнопка. Я использовал вот этот, со светодиодной подсветкой вокруг него: [Amazon]
- Резистор. Желательно 200 Ом или больше (2 из них, если вы используете светодиодную кнопку) Стандартные 1/4 Вт или 1/8 Вт подойдут
- Соединительный провод. Датчик, который вы должны использовать, зависит от того, как далеко будет кнопка от вашего Pi. Я использовал провод 18awg примерно в 10 футах от моего Pi, и он работал безупречно.
- Способ подключения провода к контактам GPIO Pi. Вы можете использовать ленточный кабель с макетной платой или просто использовать несколько гнездовых разъемов, как я. Нам нужно всего 3 провода - земля, 5 В и данные для кнопки. [Amazon]
- (Необязательно) Водонепроницаемый разъем на каждом конце для облегчения обслуживания. Я использую 3-контактные разъемы морского класса: [Amazon]
- (Необязательно) Термоусаживаемые стыковые соединители [Amazon]
Шаг 2: Схема подключения
На рисунках показана схема подключения кнопки без включенного светодиода и кнопки со светодиодом. То, как я установил электрическую схему, позволяет вам управлять кнопкой и светом (постоянно горящими) всего с 3 проводами.
Для вывода GPIO выберите любой из выводов GPIO на пи. Также используйте контакты + 5V и Gnd. Возможно, вам удастся использовать вывод 3,3 В, но падение напряжения на нескольких футах провода может сделать сигнал ненадежным или недостаточным для включения светодиода.
ПРИМЕЧАНИЕ. 3-контактный разъем не пройдет через отверстие, которое необходимо просверлить для кнопки со светодиодной подсветкой кольца. Поэтому прикрепите разъем после того, как поместите кнопку в лицевую панель.
Шаг 3: Базовая настройка Falcon Pi Player
ПРИМЕЧАНИЕ. - FPP постоянно обновляется, и вполне возможно, что они улучшат поддержку сценариев или включат «кнопку для запуска» в качестве функции по умолчанию, которая требует меньше программирования.
Я следил за приведенным выше видео, чтобы изначально все настроить.
Я считаю видео скучными и медленными, поэтому вот их краткое содержание:
- Импортируйте вашу последовательность в fpp с помощью файлового менеджера
- Создайте список воспроизведения с последовательностью в нем. Для следующих шагов плейлист будет называться playme.
-
Откройте пустой файл блокнота и введите следующее:
- #! / bin / sh
- fpp -P playme
- Сохраните его как файл.sh на своем компьютере.
- Зайдите в файловый менеджер в FPP и загрузите свой файл скрипта. Перейдите на вкладку "Скрипты" и убедитесь, что она там есть.
- В разделе "Статус / Управление" перейдите в раздел "События".
- Создайте новое мероприятие. Идентификатор события 1/1, любое название события, последовательность эффектов НЕТ, сценарий события
- Перейдите в раздел «Настройка ввода / вывода» и нажмите «Триггеры GPIO».
- Переключите булавку, к которой прикреплена ваша кнопка. Если при нажатии кнопки он упадет, установите для события параметр «Падение», если он активен на высоком уровне, установите для события значение «Повышение».
- Нажмите кнопку «Перезагрузить», появится предупреждение, которое появится после внесения всех изменений.
После всего этого вы сможете нажать кнопку, чтобы начать шоу. Woohoo!
Однако у этого метода есть некоторые ограничения. Если вы снова нажмете кнопку во время воспроизведения списка воспроизведения, он либо 1) ничего не сделает, либо 2) приведет к сбою FPP и откажется делать что-либо с вашей кнопкой, пока вы не перезагрузите его. Так что, если вы просто используете кнопку как эффектный способ воспроизведения шоу по команде, описанный выше метод будет всем, что вам нужно.
Если вам нужно что-то еще, переходите к следующему шагу
Шаг 4: более надежный сценарий
Ниже приведен сценарий, к которому я в итоге пришел. Вы можете просмотреть скрипт на Github здесь: [Gist. Github]
- Если кто-то нажмет кнопку в «ночные» часы, он проиграет Tiger Rag (моя песня 1), а затем перейдет в режим ожидания, который повторяется бесконечно.
- Если нажать кнопку во время воспроизведения Tiger Rag, она запустит мою вторую песню, Hallelujah, а затем перейдет в режим ожидания на неопределенное время.
- Но если кто-то нажмет кнопку днем или очень поздно ночью, он проиграет Tiger Rag один раз, а затем выключит все огни.
Это позволяет кнопке работать в любое время суток, но не обязательно, чтобы свет был включен постоянно. Это также позволяет воспроизводить несколько песен с помощью одной кнопки, определяя, какая песня воспроизводится в данный момент, заканчивая эту песню и воспроизводя «следующую» песню.
Дополнительные ресурсы по написанию сценариев в FPP можно найти здесь: https://github.com/FalconChristmas/fpp-scripts Для более сложной логики просто введите в Google «bash script _», где подчеркивание - это то, что вы пытаетесь сделать. Вы можете протестировать свои сценарии с помощью оболочки FPP (имя пользователя fpp пароль falcon). Основные команды следующие.
Обратите внимание на заглавные буквы !!
- Заглавная -P проигрывает список воспроизведения один раз, строчная -p повторяет его.
- fpp -v 66 Установить громкость на 66%
- fpp -c stop Немедленно остановить показ
- fpp -C stop Это может быть остановка изящного отображения
- fpp -p thisPlaylistName Воспроизводит thisPlaylistName при повторении (так что вступительная песня воспроизводится один раз, тогда основной материал будет повторяться бесконечно.
- fpp -P thisPlaylistName Воспроизводит thisPlaylistName один раз
- eventScript "$ {MEDIADIR} / scripts / $ {thisScriptVariable}" Запускает сценарий. В случае слева это работает, если имя вашего скрипта сохранено в переменной где-то выше, например thisScriptVariable =”PlayTheSong.sh”
ButtonSuperScript.sh
#! / bin / sh |
########################################################### |
# Для запуска при нажатии кнопки. |
# У вас должно быть два плейлиста для каждой песни - один с |
# только песня как "Первая игра" и ничего в основном, |
# и еще один с песней в качестве первого воспроизведения и в режиме ожидания |
# последовательность как "Основная" последовательность. (По крайней мере, если вы хотите |
# делать то, что я делаю) |
# |
# Например, если ваша песня - Tiger Rag, у вас должна быть |
# плейлисты "TigerRag", "TigerRagStandby" и "Standby" |
# |
########################################################### |
# Плейлисты для запуска, если их количество от 6 до 11 |
NightSong1 = "TigerRagStandby" |
NightSong2 = "HallelujahStandby" |
NightStandby = "Ожидание" |
# Плейлисты для показа днем или после 11 |
DaySong1 = "TigerRag" |
DaySong2 = "Аллилуйя" |
DayStandby = "Ожидание" |
# Время включения и выключения в 24-часовом формате. Если хочешь минут, удачи |
В час = 17 |
Нерабочие часы = 23 |
########################################################### |
# Внутренности сценария. # |
########################################################### |
# Получить наш текущий статус (IDLE = 0, PLAYING = 1, Stop Gracefully = 2) |
СОСТОЯНИЕ = $ (fpp -s | cut -d ',' -f2) |
# Получить текущий плейлист и обрезать до 7 букв |
ПЛЕЙЛИСТ = $ (fpp -s | cut -d ',' -f4 | cut -c1-7) |
# Это будет "и то и другое", если песня воспроизводится, и "последовательность", если она находится в режиме ожидания. |
# используется, чтобы определить, запущена ли последовательность ожидания |
ОЖИДАНИЕ = $ (fpp -s | cut -d ',' -f5) |
# Первые 7 букв названий плейлистов для сравнения |
# Всего 7 букв, чтобы "Song1Standby" и "Song1" были идентичны |
# Хорошо, на самом деле это должны быть первые x букв, а x должно быть самым коротким названием песни, которое у вас есть |
StandbyPlaylist = $ (echo $ NightStandby | вырезать -c1-7) |
Song1Playlist = $ (echo $ NightSong1 | вырезать -c1-7) |
Song2Playlist = $ (echo $ NightSong2 | вырезать -c1-7) |
STARTITEM = "" |
# Получить текущий час по военному времени |
Текущий час = $ (дата + "% H") |
# Печатать статус некоторых вещей - "эхо" похоже на "печать" на большинстве языков |
# Полезно для проверки, правильно ли обрезаны или рассчитаны различные вещи |
echo CurrentHour равен $ CurrentHour |
echo Running плейлист: $ PLAYLIST |
echo Song2Playlist: $ Song2Playlist |
Статус эха: $ STATUS |
# Установите громкость на 80% ночью, иначе 100% |
# Так что если я сплю, то не так громко |
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; тогда |
# fpp -v 100 |
#еще |
# fpp -v 80 |
#fi |
# Убедитесь, что у нас есть что-то значимое |
если [-z "$ {STATUS}"]; то |
echo "Ошибка со значением статуса"> & 2 |
выход 1 |
фи |
# Действовать в соответствии с текущим статусом |
case $ {STATUS} в |
# ПРАЗДНЫЙ |
0) |
# Ночь - воспроизвести Song1 в режиме ожидания |
если [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; то |
эхо Играет NightSong1 |
fpp -c stop |
fpp -p "$ {NightSong1}" $ {STARTITEM} |
# Дневное время или очень поздно - проиграйте песню 1 один раз, а затем выключите свет |
еще |
эхо Играет DaySong1 |
fpp -c stop |
fpp -P "$ {DaySong1}" $ {STARTITEM} |
фи |
;; |
# ВОСПРОИЗВЕДЕНИЕ или ОСТАНОВКА (плавно происходит, если кнопка нажата, когда запланированный список воспроизведения заканчивается) |
1 | 2) |
# Режим ожидания работает - это работает, потому что режим ожидания - это моя единственная последовательность, не связанная с мультимедиа. |
если ["$ STANDBYSTRING" == "последовательность"]; то |
# Ночь - воспроизвести Song1 в режиме ожидания |
если [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; то |
echo Играет NightSong1 в ночное время |
fpp -c stop |
fpp -p "$ {NightSong1}" |
# Днем или очень поздно - поиграйте один раз в тигровую тряпку и выключите свет |
еще |
echo PlayingDaySong1 из игры |
fpp -c stop |
fpp -P "$ {DaySong1}" |
фи |
# Чтобы поддерживать больше песен, скопируйте этот раздел и измените "Song2Playlist" в последнем разделе на Song # Playlist |
# Song1 работает |
elif ["$ PLAYLIST" == "$ Song1Playlist"]; затем |
# Ночное время - сыграй в Аллилуйя в режиме ожидания |
если [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; то |
echo Играет HallelujahStandby from Tiger Rag работает |
fpp -c stop |
fpp -p "$ {NightSong2}" |
# Дневное время или очень поздно - сыграйте Song2 один раз, а затем выключите свет |
еще |
echo Играет Аллилуйя один раз из Tiger Rag. |
fpp -c stop |
fpp -P "$ {DaySong2}" |
фи |
# ПОСЛЕДНЯЯ ПЕСНЯ ЗАПУСКАЕТСЯ - ИГРАТЬ В РЕЖИМЕ ОЖИДАНИЯ |
elif ["$ PLAYLIST" == "$ Song2Playlist"]; затем |
# Ночь - воспроизведение в режиме ожидания по петле |
если [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; то |
эхо Воспроизведение в режиме ожидания при повторе |
fpp -c stop |
fpp -p "$ {NightStandby}" |
# Дневное время или очень поздно - играть в режиме ожидания один раз |
еще |
эхо Воспроизведение в режиме ожидания Один раз |
fpp -c stop |
fpp -P "$ {DayStandby}" |
фи |
еще |
echo По какой-то причине выполнен последний elsecase. |
fpp -c stop |
fpp -P "$ {DaySong1}" |
фи |
;; |
esac |
просмотреть rawButtonSuperScript.sh, размещенный с ❤ на GitHub
Шаг 5: (Необязательно) Лицевая панель для кнопки
У меня есть доступ к лазерному резчику в Clemson через Makerspace, поэтому я быстро набросал дизайн для резки + травления. Посередине есть отверстие для моей кнопки, надпись «Push Me» написана рождественским шрифтом, а вокруг кнопки - снежинка. Я выкрасил немного дерева в белый цвет, а затем покрыл его малярным скотчем (чтобы лазерный резак не обжигал детали, которые я не хочу травить). Файл, который я использовал, прилагается.
Рекомендуемые:
Рождественское световое шоу синхронно с музыкой!: 4 шага
Рождественское световое шоу, синхронизированное с музыкой! В этой инструкции я покажу вам, как сделать рождественское световое шоу, синхронизированное с рождественской музыкой, с использованием пикселей RGB. Пусть это имя вас не пугает! Научиться это делать несложно. Я предупреждаю вас, что это может быть довольно
Рождественское световое шоу RGB Pixel, часть 1: 7 шагов
Rgb Pixel Christmas Light Show Часть 1: В этом руководстве я собираюсь показать вам, как построить пиксельное световое шоу RGB. Есть МНОГО, что нужно прикрыть. На самом деле я, вероятно, разделю это примерно на 3-5 разных инструкций. Этот будет об основах. Вы много читаете
Рождественское световое шоу RGB Pixel, часть 2: Xlights: 7 шагов
Rgb Pixel Christmas Light Show Часть 2: Xlights: В этой инструкции я покажу вам, как создать последовательность вашей первой песни. Теперь, если вы не видели часть 1, я рекомендую вам проверить ее здесь. Теперь, когда вы строите и программируете рождественское световое шоу, 75% времени вы будете в своем секвенсоре
Рождественское световое шоу RGB Pixel, часть 3: Falcon Player (fpp): 8 шагов
Рождественское световое шоу Rgb Pixel, часть 3: Falcon Player (fpp): В этой статье я покажу вам, как настроить Falcon player, который является шоу-плеером, на Raspberry Pi. Если вы хотите увидеть первую часть этой серии, нажмите здесь и нажмите здесь, чтобы увидеть часть 2 с xlights. Так что же такое соколист? Это в основном так
ЗАМЕНА ЗАДНЕЙ КНОПКИ ЗАДНЕЙ КНОПКИ ЗАДНЕЙ КНОПКИ RENAULT SCENIC / MEGANE: 3 шага
ЗАМЕНА ЗАДНЕЙ КНОПКИ ЗАДНЕЙ КНОПКИ RENAULT SCENIC / MEGANE BOOT BOOT TILGATE LOCK: Плохое уплотнительное кольцо, удерживающее кнопку багажника на месте, изнашивается, что приводит к потере кнопки багажника на вашем автомобиле. Единственное решение Renaults - это полная замена механизма блокировки загрузки, которая выйдет из строя снова и будет стоить