Cuprins:
- Pasul 1: Lista pieselor
- Pasul 2: Schema de cablare
- Pasul 3: Configurarea de bază a playerului Falcon Pi
- Pasul 4: un scenariu mai robust
- Pasul 5: (Opțional) Faceplate pentru buton
Video: Începeți spectacolul de lumină de Crăciun cu un buton: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Când rulați un spectacol de lumină de Crăciun sincronizat cu muzică, vă recomandăm să începeți spectacolul apăsând un buton. Acest tutorial se aplică numai pentru o emisiune care este controlată prin Falcon Pi Player (FPP) care rulează pe un Raspberry Pi. Dacă rulați FPP, atunci probabil că utilizați controlere Falcon și utilizați xLights sau LightORama pentru a vă secvența spectacolul. Dacă niciunul dintre aceste cuvinte nu înseamnă nimic pentru dvs., acest tutorial este probabil puțin peste cap pentru moment și ar trebui să începeți citind acest wiki https://auschristmaslighting.com/wiki/ și să vă alăturați unui grup de Facebook ca mai jos
- xLights:
- Lămpi de Crăciun avansate generale:
- Player Falcon Pi:
- Partajare idei de incinte / prop:
- „Nu este specific xLights sau LOR Related”:
- Furnizori de xLights Holiday Light:
- Crăciunul Do It Yourself:
Pasul 1: Lista pieselor
Veți avea nevoie de următoarele elemente:
- Un buton. L-am folosit pe acesta cu o lumină cu inel LED în jurul său: [Amazon]
- Un rezistor. De preferință 200Ω sau mai mare (2 dintre acestea dacă utilizați butonul LED) Standard 1 / 4W sau 1 / 8W este bine
- Firul conectorului. Manometrul pe care ar trebui să îl utilizați depinde de cât de departe va fi butonul de Pi. Am folosit sârmă de 18awg la aproximativ 10 picioare de Pi-ul meu și a funcționat perfect
- O modalitate de a conecta un fir la pinii GPIO ai lui Pi. Puteți utiliza un cablu panglică cu panoul de separare sau puteți utiliza doar niște conectori de sex feminin, așa cum am făcut eu. Avem nevoie doar de 3 fire - masă, 5V și date pentru buton. [Amazon]
- (Opțional) Un conector impermeabil la fiecare capăt pentru o întreținere ușoară. Folosesc conectori marini cu 3 pini: [Amazon]
- (Opțional) Conectori termocontractabili [Amazon]
Pasul 2: Schema de cablare
Imaginile prezintă o schemă de cablare pentru un buton fără LED inclus și un buton cu LED. Modul în care am configurat schema de cabluri vă permite să rulați un buton și o lumină (aprinsă continuu) cu doar 3 fire.
Pentru pinul GPIO, alegeți oricare dintre pinii GPIO de pe pi. Folosiți și pinii + 5V și Gnd. Probabil ați putea scăpa de utilizarea pinului de 3,3 V, dar căderea de tensiune pe câțiva metri de sârmă ar putea face ca semnalul să nu fie fiabil sau să nu fie suficient pentru a aprinde LED-ul.
NOTĂ: Conectorul cu 3 pini nu se va potrivi prin orificiul pe care trebuie să-l găuriți pentru un buton cu lumina inelară LED. Așadar, atașați conectorul după ce ați introdus butonul în față.
Pasul 3: Configurarea de bază a playerului Falcon Pi
NOTĂ - FPP este în permanență actualizat și este total posibil ca aceștia să își îmbunătățească suportul de scriptare sau să includă „butonul pentru a porni” ca caracteristică implicită care necesită mai puțină programare.
Am urmărit videoclipul de mai sus pentru că am pregătit inițial totul.
Găsesc videoclipuri plictisitoare și lente, așa că iată un rezumat al acestuia:
- Importați secvența în fpp folosind managerul de fișiere
- Creați o listă de redare cu secvența din ea. Pentru următorii pași, lista de redare va fi numită „playme”
-
Deschideți un fișier de notepad gol și tastați următoarele:
- #! / bin / sh
- fpp -P playme
- Salvați-l ca fișier.sh pe computer
- Accesați managerul de fișiere din FPP și încărcați fișierul script. Accesați fila „Scripturi” și asigurați-vă că este acolo
- Sub Stare / Control, accesați Evenimente
- Creați un eveniment nou. ID eveniment 1/1, numele evenimentului oricare ar fi, Efect Sequence NONE, Script eveniment
- Mergeți sub Configurare intrare / ieșire și faceți clic pe declanșatoare GPIO
- Comutați pinul la care este atașat butonul. Dacă va scădea când apăsați butonul, atunci puneți evenimentul pe opțiunea Falling, dacă este activă, atunci puneți evenimentul pe Rising.
- Faceți clic pe butonul Reboot după avertismentul care apare după ce faceți toate modificările
După ce ați făcut toate acestea, ar trebui să puteți apăsa butonul pentru a începe spectacolul. Woo hoo!
Cu toate acestea, această metodă are unele limitări. Dacă apăsați butonul din nou în timp ce lista de redare funcționează, fie 1) nu va face nimic, fie 2) va bloca FPP și va refuza să facă orice cu butonul până când îl reporniți. Deci, dacă folosiți doar un buton ca mod dramatic de redare a spectacolului la comandă, metoda de mai sus va fi tot ce aveți nevoie.
Dacă mai aveți nevoie de ceva, continuați cu pasul următor
Pasul 4: un scenariu mai robust
Mai jos este scenariul la care am ajuns în cele din urmă. Puteți vizualiza scenariul pe Github aici: [Gist. Github]
- Dacă cineva apasă butonul în timpul orelor de „noapte”, acesta va reda Tiger Rag (melodia mea 1) și apoi va merge la secvența de așteptare care se bucură infinit.
- Dacă butonul este apăsat în timp ce se joacă Tiger Rag, atunci începe a doua melodie, Aleluia, și apoi va trece la secvența de așteptare la nesfârșit.
- Dar dacă cineva apasă butonul în timpul zilei sau foarte târziu noaptea, acesta va juca Tiger Rag o dată și apoi va stinge toate luminile.
Aceasta permite butonului să funcționeze în orice moment al zilei, dar luminile nu trebuie să fie aprinse tot timpul. De asemenea, permite redarea mai multor melodii de la un buton prin identificarea melodiei care se joacă în prezent, încheierea acelei melodii și redarea melodiei „următoare”.
Puteți găsi mai multe resurse pentru scripturi în FPP aici: https://github.com/FalconChristmas/fpp-scripts Pentru o logică mai complicată, doar google „script bash _” unde sublinierea este ceea ce încercați să faceți. Puteți testa scripturile folosind FPP Shell (nume de utilizator fpp password falcon) Comenzile de bază sunt după cum urmează.
Fii atent la capitalizare !!
- Capital -P va reda o listă de redare o dată, minusculă -p va repeta.
- fpp -v 66 Setați volumul la 66%
- fpp -c stop Opriți spectacolul imediat
- fpp -C stop Acesta ar putea fi stop show grațios
- fpp -p thisPlaylistName Joacă thisPlaylistName la repetare (deci piesa introductivă se redă o singură dată, apoi lucrurile principale vor fi repetate la nesfârșit.
- fpp -P thisPlaylistName Redă odată thisPlaylistName
- eventScript "$ {MEDIADIR} / scripts / $ {thisScriptVariable}" Rulează un script. În cazul din stânga, funcționează dacă aveți numele scriptului salvat într-o variabilă undeva deasupra, cum ar fi thisScriptVariable =”PlayTheSong.sh”
ButtonSuperScript.sh
#! / bin / sh |
########################################################### |
#Să fie rulat dacă butonul este apăsat. |
# Ar trebui să aveți două liste de redare pentru fiecare melodie - una cu |
# doar melodia ca „Prima piesă” și nimic în principal, |
# și altul cu melodia ca primă piesă și standby-ul tău |
# secvență ca secvența „Principală”. (Cel puțin dacă vrei |
# să fac exact ceea ce fac) |
# |
# De exemplu, dacă melodia ta este Tiger Rag, ar trebui să o ai |
# liste de redare „TigerRag”, „TigerRagStandby” și „Standby” |
# |
########################################################### |
# Liste de redare pentru a rula dacă este între 6 și 11 |
NightSong1 = "TigerRagStandby" |
NightSong2 = "HallelujahStandby" |
NightStandby = "Standby" |
# Liste de redare pentru a rula în timpul zilei sau după 11 |
DaySong1 = "TigerRag" |
DaySong2 = "Aleluia" |
DayStandby = "Așteptare" |
# Ore de pornire și oprire în 24 de ore. Dacă vrei minute, mult succes |
OnHour = 17 |
OffHour = 23 |
########################################################### |
# Curajul scenariului. # |
########################################################### |
# Obțineți starea noastră actuală (IDLE = 0, JOACĂ = 1, Oprire grațioasă = 2) |
STATUS = $ (fpp -s | cut -d ',' -f2) |
# Obțineți lista de redare care rulează și tăiați la 7 litere |
PLAYLIST = $ (fpp -s | cut -d ',' -f4 | cut -c1-7) |
# Aceasta va fi „ambele” dacă redă o melodie și „secvența” dacă este în așteptare |
#utilizat pentru a determina dacă secvența de așteptare rulează |
STANDBYSTRING = $ (fpp -s | cut -d ',' -f5) |
#Primele 7 litere ale numelor listelor de redare pentru comparație |
# Doar 7 litere, astfel încât „Song1Standby” și „Song1” să fie identice |
# Bine, deci ar trebui să fie primele x litere și x ar trebui să fie cel mai scurt nume al melodiei pe care o aveți |
StandbyPlaylist = $ (echo $ NightStandby | cut -c1-7) |
Song1Playlist = $ (echo $ NightSong1 | cut -c1-7) |
Song2Playlist = $ (echo $ NightSong2 | cut -c1-7) |
STARTITEM = "" |
# Obțineți ora curentă în timpul militar |
Ora curentă = $ (dată + „% H”) |
#Printați starea unor lucruri - „ecou” este ca „tipărire” în majoritatea limbilor |
#Util pentru testare dacă diverse lucruri sunt tăiate sau calculate corect |
ecou CurrentHour este $ CurrentHour |
echo Rularea listei de redare este: $ PLAYLIST |
echo Song2Playlist este: $ Song2Playlist |
echo Status este: $ STATUS |
#Setați volumul la 80% noaptea, 100% în caz contrar |
#Deci, dacă dorm, nu este la fel de tare |
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; atunci |
# fpp -v 100 |
#else |
# fpp -v 80 |
#fi |
# Verificați dacă avem ceva semnificativ |
dacă [-z "$ {STATUS}"]; atunci |
ecou „Eroare cu valoarea de stare”> & 2 |
ieșirea 1 |
fi |
# Acționați asupra stării actuale |
caz $ {STATUS} în |
# IDLE |
0) |
# Noapte - redați Song1 cu standby |
dacă [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; atunci |
ecou Redarea NightSong1 |
fpp -c stop |
fpp -p "$ {NightSong1}" $ {STARTITEM} |
# Timp de zi sau foarte târziu - redați melodia 1 o dată, apoi stingeți luminile |
altceva |
ecou Playing DaySong1 |
fpp -c stop |
fpp -P "$ {DaySong1}" $ {STARTITEM} |
fi |
;; |
# JOACĂ sau OPRIRE GRACIOS (grațios se întâmplă dacă butonul este apăsat când se încheie o listă de redare programată) |
1 | 2) |
#Standby rulează - funcționează deoarece standby-ul este singura mea secvență non-media |
dacă ["$ STANDBYSTRING" == "secvență"]; atunci |
# Noapte - redați Song1 cu standby |
dacă [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; atunci |
ecou Redarea NightSong1 pentru noapte |
fpp -c stop |
fpp -p "$ {NightSong1}" |
# Timp de zi sau foarte târziu - joacă o cârpă de tigru o dată, apoi stinge luminile |
altceva |
ecou PlayingDaySong1 de la redare |
fpp -c stop |
fpp -P "$ {DaySong1}" |
fi |
#Pentru a susține mai multe melodii, copiați această secțiune și schimbați „Song2Playlist” din ultima secțiune la Song # Playlist |
# Cântecul 1 rulează |
elif ["$ PLAYLIST" == "$ Song1Playlist"]; apoi |
# Noapte - joacă Hallelujah cu standby |
dacă [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; atunci |
ecou Redarea Hallelujah Standby de la Tiger Rag rulează |
fpp -c stop |
fpp -p "$ {NightSong2}" |
# Timp de zi sau foarte târziu - redați Song2 o dată, apoi stingeți luminile |
altceva |
ecou Jucând Hallelujah o dată din Tiger Rag rulează |
fpp -c stop |
fpp -P „$ {DaySong2}” |
fi |
# ULTIMUL CÂNTEC RUNNING - JOACĂ STANDBY |
elif ["$ PLAYLIST" == "$ Song2Playlist"]; apoi |
# Noapte - joacă modul de așteptare pe buclă |
dacă [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; atunci |
ecou Redarea în standby la repetare |
fpp -c stop |
fpp -p "$ {NightStandby}" |
# Timpul zilei sau foarte târziu - redați o dată în regim de așteptare |
altceva |
ecou Redarea în standby o dată |
fpp -c stop |
fpp -P „$ {DayStandby}” |
fi |
altceva |
ecou Din anumite motive, ultimul elsecase executat. |
fpp -c stop |
fpp -P "$ {DaySong1}" |
fi |
;; |
esac |
vizualizați rawButtonSuperScript.sh găzduit cu ❤ de GitHub
Pasul 5: (Opțional) Faceplate pentru buton
Am acces la un dispozitiv de tăiat cu laser la Clemson prin Makerspace, așa că am schițat rapid un design pentru tăiere + gravare. Există o gaură în mijloc pentru butonul meu, cuvintele spun „Push Me” într-un font de Crăciun și un fulg de zăpadă în jurul butonului. Am vopsit cu pulverizare alb din lemn și apoi l-am acoperit cu bandă de mascare (astfel încât tăietorul cu laser să nu ardă părțile pe care nu le vreau gravate). Fișierul pe care l-am folosit este atașat.
Recomandat:
Spectacol de lumină de Crăciun sincronizat cu muzica !: 4 pași
Spectacol de lumină de Crăciun sincronizat cu muzica !: În acest instructable, vă voi arăta cum să faceți un spectacol de lumină de Crăciun sincronizat cu muzică de Crăciun folosind pixeli RGB. Nu lăsați acest nume să vă sperie! Nu este prea greu să înveți cum să faci asta. Cu toate acestea, vă voi avertiza că acest lucru poate fi destul de
Respirarea pomului de Crăciun - Controler de lumină de Crăciun Arduino: 4 pași
Respirarea pomului de Crăciun - Controlerul de lumină de Crăciun Arduino: Nu este o veste bună faptul că cutia de control pentru bradul meu artificial de 9 ft pre-aprins s-a spart înainte de Crăciun , și producătorul nu oferă piese de schimb. Acest lucru de nepătruns arată cum să-ți faci propriul driver și controler de lumină LED să folosească Ar
Buton Amazon Dash Buton silențios: 10 pași (cu imagini)
Buton Amazon Dash Buton silențios: Privind constant pe fereastră, astfel încât să puteți intercepta vizitatorii înainte de a suna la sonerie? V-ați săturat că câinii și bebelușul înnebunesc oricând sună? Nu doriți să cheltuiți o avere pe un „inteligent” soluție? Efectuarea unui sunet silențios este la fel de
Lumina de Crăciun pentru muzică de Crăciun: 4 pași
Christmas Music Cheer Light: Crăciun fericit! Vrei să ai un pom de Crăciun care să poată interacționa cu tine?
Arduino Crăciun Crăciun !: 5 pași (cu imagini)
Arduino Christmas Cheer !: Tiss the season to stick Arduino’s in places festive, and what better place than a Christmas tree! În acest proiect, vom realiza un pom de Crăciun care poate cânta o grămadă de cântece diferite de Crăciun și se poate aprinde împreună cu mu