Съдържание:

Започнете коледното си светлинно шоу с бутон: 5 стъпки
Започнете коледното си светлинно шоу с бутон: 5 стъпки

Видео: Започнете коледното си светлинно шоу с бутон: 5 стъпки

Видео: Започнете коледното си светлинно шоу с бутон: 5 стъпки
Видео: WORLD BATH BOMB DAY - LIVE CELEBRATION 2024, Юли
Anonim
Започнете коледното си светлинно шоу с бутон
Започнете коледното си светлинно шоу с бутон

Когато провеждате коледно светлинно шоу, синхронизирано с музика, може да искате да започнете шоуто, като натиснете бутон. Този урок е приложим само за шоу, което се контролира чрез Falcon Pi Player (FPP), работещ на Raspberry Pi. Ако използвате FPP, вероятно използвате контролери Falcon и използвате xLights или LightORama, за да подредите шоуто си. Ако никоя от тези думи не означава нищо за вас, този урок вероятно е малко над главата ви за сега и трябва да започнете, като прочетете тази уики https://auschristmaslighting.com/wiki/ и се присъедините към група във Facebook, както е показано по -долу

  • xLights:
  • Общи усъвършенствани коледни светлини:
  • Falcon Pi Player:
  • Споделяне на корпус/поддръжка на идеи:
  • „Не е специално свързано с xLights или LOR“:
  • Доставчиците на xLights Holiday Light:
  • Направи си сам Коледа:

Стъпка 1: Списък на частите

Ще ви трябват следните елементи:

  • Бутон. Използвах този с LED пръстенова светлина около него: [Amazon]
  • Резистор. За предпочитане 200Ω или повече (2 от тях, ако използвате LED бутона) Стандартните 1/4W или 1/8W са добре
  • Съединителен проводник. Манометърът, който трябва да използвате, зависи от това колко далеч ще бъде бутонът от вашия Pi. Използвах 18awg проводник на около 10 фута от моя Pi и той работи безупречно
  • Начин за свързване на проводник към GPIO щифтовете на Pi. Можете да използвате лентов кабел с пробивната платка или просто да използвате някои женски конектори, както направих аз. Нуждаем се само от 3 проводника - заземяване, 5V и данни за бутона. [Amazon]
  • (По избор) Водоустойчив конектор от всеки край за лесна поддръжка. Използвам 3-пинови конектори за морски клас: [Amazon]
  • (По избор) Съединители за термосвиваеми дупета [Amazon]

Стъпка 2: Схема на свързване

Електрическа схема
Електрическа схема
Електрическа схема
Електрическа схема
Електрическа схема
Електрическа схема
Електрическа схема
Електрическа схема

Снимките показват електрическа схема за бутон без включен светодиод и бутон със светодиод. Начинът, по който настройвам електрическата схема, ви позволява да стартирате бутон и лампа (непрекъснато включена) само с 3 проводника.

За GPIO щифта изберете някой от GPIO щифтовете на pi. Използвайте и щифтовете +5V и Gnd. Вероятно бихте могли да се измъкнете с помощта на 3.3V щифт, но спадът на напрежението на няколко фута проводник може да направи сигнала ненадежден или да не е достатъчен, за да светне светодиода.

ЗАБЕЛЕЖКА: 3-пиновият конектор няма да попадне през отвора, който трябва да пробиете за бутон с LED пръстена. Така че прикрепете конектора, след като поставите бутона в лицевата си част.

Стъпка 3: Основна настройка на Falcon Pi Player

ЗАБЕЛЕЖКА - FPP непрекъснато се актуализира и е напълно възможно те да подобрят своята поддръжка на скриптове или да включат „бутон за стартиране“като функция по подразбиране, която изисква по -малко програмиране.

Следвах горното видео за първоначално настройване на всичко.

Намирам видеоклиповете за скучни и бавни, затова ето резюме за него:

  • Импортирайте последователността си във fpp с помощта на файловия мениджър
  • Създайте плейлист с последователността в него. За следващите стъпки плейлистът ще се нарича "playme"
  • Отворете празен файл с бележник и въведете следното:

    • #!/bin/sh
    • fpp -P playme
  • Запазете го като.sh файл на вашия компютър
  • Отидете до файловия мениджър в FPP и качете вашия скриптов файл. Отидете в раздела „Скриптове“и се уверете, че е там
  • Под Състояние/Контрол отидете на Събития
  • Създайте ново събитие. Идентификатор на събитие 1/1, име на събитието независимо, Поредица от ефекти НЯМА, Сценарий на събитието
  • Отидете под Настройки за вход/изход и щракнете върху GPIO тригери
  • Превключете щифта, към който е прикрепен бутонът. Ако той ще се понижи, когато натиснете бутона, след това поставете събитието в опцията Falling, ако е активно високо, поставете събитието в Rising.
  • Щракнете върху бутона Рестартиране до предупреждението, което се появява, след като направите всички промени

След като направите всичко това, трябва да можете да натиснете бутона, за да започне шоуто ви. Ууууу!

Този метод обаче има някои ограничения. Ако натиснете бутона отново, докато плейлистът върви, той или 1) няма да направи нищо, или 2) ще срине FPP и ще откаже да направи каквото и да е с вашия бутон, докато не го рестартирате. Така че, ако просто използвате бутон като драматичен начин да играете шоуто си по команда, горният метод ще бъде всичко, от което се нуждаете.

Ако имате нужда от нещо повече, преминете към следващата стъпка

Стъпка 4: По -здрав скрипт

По -долу е скриптът, до който в крайна сметка стигнах. Можете да видите скрипта в Github тук: [Gist. Github]

  • Ако някой натисне бутона по време на „нощни“часове, той ще свири Tiger Rag (моята песен1) и след това ще премине към последователността в режим на готовност, която се върти безкрайно.
  • Ако бутонът е натиснат, докато Tiger Rag свири, той стартира втората ми песен, Hallelujah, и след това ще премине към последователността в режим на готовност за неопределено време.
  • Но ако някой натисне бутона през деня или много късно през нощта, той ще свири Tiger Rag веднъж и след това ще изключи всички светлини.

Това позволява на бутона да работи по всяко време на деня, но не е необходимо светлините да светят през цялото време. Той също така позволява да се пускат няколко песни от 1 бутон, като идентифицира коя песен се изпълнява в момента, завършва тази песен и възпроизвежда „следващата“песен.

Можете да намерите повече ресурси за скриптове във FPP тук: https://github.com/FalconChristmas/fpp-scripts За по-сложна логика просто потърсете в Google „bash script _“, където подчертаването е това, което се опитвате да направите. Можете да тествате вашите скриптове с помощта на FPP Shell (потребителско име fpp парола falcon) Основните команди са както следва.

Обърнете внимание на главни букви !!

  • Capital -P ще възпроизведе плейлист веднъж, малки букви -p ще го повторят.
  • fpp -v 66 Задайте силата на звука на 66%
  • fpp -c стоп Спиране на предаването незабавно
  • fpp -C stop Това може да е stop show изящно
  • fpp -p thisPlaylistName Възпроизвежда thisPlaylistName при повторение (така че песента за въвеждане се изпълнява веднъж, след това основните неща ще се повтарят за неопределено време.
  • fpp -P thisPlaylistName Играе това име на плейлист веднъж
  • eventScript "$ {MEDIADIR}/scripts/$ {thisScriptVariable}" Изпълнява скрипт. В случая вляво, той работи, ако името на скрипта ви е записано в променлива някъде по -горе, например thisScriptVariable =”PlayTheSong.sh”

ButtonSuperScript.sh

#!/bin/sh
###########################################################
#За да се стартира, ако бутонът е натиснат.
#Трябва да имате два плейлисти за всяка песен - една с
# само песента като "Първа игра" и нищо основно,
# и друга с песента като първа игра и вашия режим на готовност
# последователност като последователност "Main". (Поне ако искате
# да направя точно това, което правя)
#
#Например, ако песента ви е Tiger Rag, трябва да имате
# плейлисти „TigerRag“, „TigerRagStandby“и „Standby“
#
###########################################################
# Плейлисти за изпълнение, ако е между 6 и 11
NightSong1 = "TigerRagStandby"
NightSong2 = "HallelujahStandby"
NightStandby = "В режим на готовност"
# Плейлисти, които да се изпълняват през деня или след 11
DaySong1 = "TigerRag"
DaySong2 = "Алилуя"
DayStandby = "В режим на готовност"
#Време за включване и изключване за 24 часа. Ако искате минути, късмет
На час = 17
OffHour = 23
###########################################################
# Кишки на сценария. #
###########################################################
# Вземете текущото ни състояние (IDLE = 0, PLAYING = 1, Спиране изящно = 2)
СТАТУТ = $ (fpp -s | cut -d ',' -f2)
#Вземете текущия плейлист и отрежете до 7 букви
ПЛЕЙЛИСТ = $ (fpp -s | cut -d ',' -f4 | cut -c1-7)
#Това ще бъде "и двете", ако свири песен, и "последователност", ако е в режим на готовност
#Използва се, за да се определи дали последователността в режим на готовност работи
STANDBYSTRING = $ (fpp -s | cut -d ',' -f5)
#Първи 7 букви от имена на плейлисти за сравнение
#Само 7 букви, така че "Song1Standby" и "Song1" да са идентични
#Добре, така че всъщност трябва да са първите x букви и x трябва да е най -краткото име на песента, което имате
StandbyPlaylist = $ (echo $ NightStandby | изрязване -c1-7)
Song1Playlist = $ (ехо $ NightSong1 | изрязване -c1-7)
Song2Playlist = $ (ехо $ NightSong2 | изрязване -c1-7)
STARTITEM = ""
#Вземете текущия час във военно време
CurrentHour = $ (дата +"%H")
#Отпечатайте състоянието на някои неща - "echo" е като "print" на повечето езици
#Полезно за тестване, ако различни неща са подрязани или изчислени правилно
echo CurrentHour е $ CurrentHour
echo Изпълняващият се плейлист е: $ PLAYLIST
echo Song2Playlist е: $ Song2Playlist
echo Състояние е: $ STATUS
#Задайте силата на звука на 80% през нощта, 100% в противен случай
#Така че, ако спя, не е толкова силно
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; тогава
# fpp -v 100
#иначе
# fpp -v 80
#fi
# Проверете дали имаме нещо смислено
if [-z "$ {STATUS}"]; тогава
echo "Грешка със стойност на състоянието"> & 2
изход 1
fi
# Действайте по текущото състояние
случай $ {STATUS} в
# ПРАЗЕН
0)
#Нощно време - възпроизвеждане на Song1 с готовност
ако [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; тогава
ехо Възпроизвеждане на NightSong1
fpp -c стоп
fpp -p "$ {NightSong1}" $ {STARTITEM}
#Ден или наистина късно - пуснете песен 1 веднъж, след което изключете светлините
иначе
ехо Възпроизвеждане на DaySong1
fpp -c стоп
fpp -P "$ {DaySong1}" $ {STARTITEM}
fi
;;
# ИЗВЪРШВАНЕ или ПРЕКРАТЯВАНЕ ГРАЦИОННО (изящно се случва, ако бутонът е натиснат, когато планираният плейлист приключва)
1 | 2)
#Standby работи - това работи, защото режимът на готовност е единствената ми не -медийна последователност
if ["$ STANDBYSTRING" == "последователност"]; тогава
#Нощно време - възпроизвеждане на Song1 в режим на готовност
ако [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; тогава
echo Възпроизвеждане на NightSong1 за нощно време
fpp -c стоп
fpp -p "$ {NightSong1}"
#Ден или наистина късно - играйте веднъж на тигрова парцал и след това изключете светлините
иначе
echo PlayingDaySong1 от игра
fpp -c стоп
fpp -P "$ {DaySong1}"
fi
#За да поддържате още песни, копирайте този раздел и променете „Song2Playlist“в последния раздел на Song#Playlist
#Song1 работи
elif ["$ PLAYLIST" == "$ Song1Playlist"]; след това
#Нощно време - играйте Алилуя с готовност
ако [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; тогава
echo Играе Алилуя Станбирът от Tiger Rag работи
fpp -c стоп
fpp -p "$ {NightSong2}"
#Ден или наистина късно - пуснете Song2 веднъж, след което изключете светлините
иначе
echo Играе Алилуя веднъж от Тигър парцал работи
fpp -c стоп
fpp -P "$ {DaySong2}"
fi
#ПОСЛЕДНАТА ПЕСЕН ТЕЧЕ - ИГРАЙТЕ В ОЧАКВАНЕ
elif ["$ PLAYLIST" == "$ Song2Playlist"]; след това
#Нощно време - възпроизвеждане в режим на готовност в цикъл
ако [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; тогава
echo Възпроизвеждане в режим на готовност при повторение
fpp -c стоп
fpp -p "$ {NightStandby}"
#Ден или наистина късно - играйте веднъж в режим на готовност
иначе
echo Възпроизвеждане в режим на готовност веднъж
fpp -c стоп
fpp -P "$ {DayStandby}"
fi
иначе
echo По някаква причина последният изпълнен друг регистър.
fpp -c стоп
fpp -P "$ {DaySong1}"
fi
;;
esac

вижте rawButtonSuperScript.sh, хостван с ❤ от GitHub

Стъпка 5: (По избор) Лицева плоча за бутона

Имам достъп до лазерен нож в Клемсън през Makerspace, затова бързо скицирах дизайн за изрязване+гравиране. В средата има дупка за моя бутон, думите казват „Натисни ме“в коледен шрифт и снежинка около бутона. Напръсках малко дърво в бяло и след това го покрих с маскираща лента (така че лазерният нож да не изгори части, които не искам да се гравират). Файлът, който използвах, е прикачен.

Препоръчано: