Оглавление:

Начните рождественское световое шоу с кнопки: 5 шагов
Начните рождественское световое шоу с кнопки: 5 шагов

Видео: Начните рождественское световое шоу с кнопки: 5 шагов

Видео: Начните рождественское световое шоу с кнопки: 5 шагов
Видео: Танец заключенных в память о Майкле Джексоне 2024, Июль
Anonim
Начните рождественское световое шоу с кнопки
Начните рождественское световое шоу с кнопки

При запуске рождественского светового шоу, синхронизированного с музыкой, вы можете начать шоу, нажав кнопку. Это руководство применимо только для шоу, которое управляется с помощью 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» написана рождественским шрифтом, а вокруг кнопки - снежинка. Я выкрасил немного дерева в белый цвет, а затем покрыл его малярным скотчем (чтобы лазерный резак не обжигал детали, которые я не хочу травить). Файл, который я использовал, прилагается.

Рекомендуемые: