Cuprins:

Începeți spectacolul de lumină de Crăciun cu un buton: 5 pași
Începeți spectacolul de lumină de Crăciun cu un buton: 5 pași

Video: Începeți spectacolul de lumină de Crăciun cu un buton: 5 pași

Video: Începeți spectacolul de lumină de Crăciun cu un buton: 5 pași
Video: Au Uitat Să Oprească Camera De FILMAT! Momente Incredibile Filmate În LIVE 2024, Noiembrie
Anonim
Începeți spectacolul de lumină de Crăciun cu un buton
Începeți spectacolul de lumină de Crăciun cu un buton

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

Schema de conexiuni
Schema de conexiuni
Schema de conexiuni
Schema de conexiuni
Schema de conexiuni
Schema de conexiuni
Schema de conexiuni
Schema de conexiuni

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: