Kazalo:

Začnite božično svetlobno predstavo z gumbom: 5 korakov
Začnite božično svetlobno predstavo z gumbom: 5 korakov

Video: Začnite božično svetlobno predstavo z gumbom: 5 korakov

Video: Začnite božično svetlobno predstavo z gumbom: 5 korakov
Video: Брайан Китинг и Ли Кронин: Жизнь во Вселенной 2024, Julij
Anonim
Začnite božično svetlobno predstavo z gumbom
Začnite božično svetlobno predstavo z gumbom

Ko izvajate božično svetlobno oddajo, sinhronizirano z glasbo, jo boste morda želeli začeti s pritiskom na gumb. Ta vadnica je uporabna samo za predstavo, ki jo nadzira Falcon Pi Player (FPP), ki deluje na Raspberry Pi. Če uporabljate FPP, potem verjetno uporabljate krmilnike Falcon in uporabljate xLights ali LightORama za zaporedje oddaje. Če vam nobena od teh besed ne pomeni nič, vam bo ta vadba za zdaj verjetno malo nad glavo in začnite tako, da preberete ta wiki https://auschristmaslighting.com/wiki/ in se pridružite skupini Facebook, kot je spodaj

  • xLights:
  • Splošne napredne božične luči:
  • Predvajalnik Falcon Pi:
  • Skupna raba idej za ohišje/rekvizite:
  • "Ni posebej povezano z xLights ali LOR":
  • Prodajalci xLights Holiday Light:
  • Božič naredi sam:

1. korak: Seznam delov

Potrebovali boste naslednje predmete:

  • Gumb. Uporabil sem tega z LED obročko okoli njega: [Amazon]
  • Upor. Prednostno 200Ω ali več (2 od teh, če uporabljate gumb LED) Standard 1/4W ali 1/8W je v redu
  • Priključna žica. Merilnik, ki ga morate uporabiti, je odvisen od tega, kako daleč bo gumb od vašega Pi. Uporabil sem žico 18awg približno 10 čevljev od mojega Pi in delovala je brezhibno
  • Način za povezavo žice s Pi -jevimi zatiči GPIO. S prelomno ploščo lahko uporabite tračni kabel ali pa uporabite nekaj ženskih priključkov, kot sem jaz. Potrebujemo le 3 žice - ozemljitev, 5V in podatke za gumb. [Amazon]
  • (Izbirno) Vodotesni priključek na vsakem koncu za enostavno vzdrževanje. Uporabljam 3-pinske priključke za pomorsko kakovost: [Amazon]
  • (Izbirno) Konektorji za toplotno skrčljive zadnjice [Amazon]

2. korak: Shema ožičenja

Žični diagram
Žični diagram
Žični diagram
Žični diagram
Žični diagram
Žični diagram
Žični diagram
Žični diagram

Slike prikazujejo shemo ožičenja za gumb brez priložene LED in gumb z LED. Način nastavitve sheme ožičenja vam omogoča, da zaženete gumb in lučko (neprekinjeno prižgano) s samo tremi žicami.

Za pin GPIO izberite katerega koli od zatičev GPIO na pi. Uporabite tudi zatiča +5V in Gnd. Verjetno bi se lahko izognili uporabi 3.3V vtiča, toda padec napetosti na več metrih žice lahko povzroči, da je signal nezanesljiv ali pa ne bo dovolj, da prižge LED.

OPOMBA: 3-polni konektor ne bo šel skozi luknjo, ki jo morate izvrtati za gumb z LED obročko. Konektor torej pritrdite, potem ko gumb vstavite v sprednjo ploščo.

3. korak: Osnovne nastavitve predvajalnika Falcon Pi Player

OPOMBA - FPP se nenehno posodablja in povsem mogoče je, da bodo izboljšali podporo za skripte ali da bodo kot privzeto funkcijo, ki zahteva manj programiranja, vključili "gumb za zagon".

Sledil sem zgornjemu videoposnetku, ker sem sprva vse nastavil.

Videoposnetki se mi zdijo dolgočasni in počasni, zato je povzetek tega:

  • Uvozite svoje zaporedje v fpp z upraviteljem datotek
  • Ustvarite seznam predvajanja z zaporedjem. Za naslednje korake se bo seznam predvajanja imenoval "playme"
  • Odprite prazno datoteko beležnice in vnesite naslednje:

    • #!/bin/sh
    • fpp -P playme
  • Shranite ga kot datoteko.sh v računalniku
  • Pojdite v upravitelj datotek v FPP in naložite datoteko skripta. Pojdite na zavihek "Skripti" in se prepričajte, da je tam
  • V razdelku Stanje/nadzor pojdite na Dogodki
  • Ustvarite nov dogodek. ID dogodka 1/1, ime dogodka ne glede na to, zaporedje učinkov NIČ, skript dogodka
  • Pojdite pod Nastavitve vhoda/izhoda in kliknite Sprožilci GPIO
  • Preklopite pin, na katerega je pritrjen vaš gumb. Če se bo ob pritisku na gumb znižalo, potem dogodek postavite na možnost Padajoče, če je aktivno visoko, postavite dogodek na Vzpon.
  • Kliknite gumb Ponovni zagon ob opozorilu, ki se prikaže, ko izvedete vse spremembe

Ko vse to naredite, bi morali pritisniti gumb, da se predstava začne. Woohoo!

Vendar ima ta metoda nekaj omejitev. Če med predvajanjem seznama predvajanja znova pritisnete gumb, bodisi 1) ne bo storil ničesar ali 2) bo zrušil FPP in noče storiti ničesar s svojim gumbom, dokler ga ne znova zaženete. Torej, če gumb uporabljate le kot dramatičen način predvajanja predstave po ukazu, bo zgornja metoda vse, kar potrebujete.

Če potrebujete nekaj več, pojdite na naslednji korak

4. korak: Bolj trden scenarij

Spodaj je scenarij, do katerega sem na koncu prišel. Skript si lahko ogledate v Githubu tukaj: [Gist. Github]

  • Če nekdo pritisne gumb v "nočnih" urah, se bo predvajal Tiger Rag (moja pesem1), nato pa preklopil v stanje pripravljenosti, ki se neskončno ponavlja.
  • Če pritisnete gumb, medtem ko igra Tiger Rag, se začne moja druga pesem, Hallelujah, nato pa se bo za nedoločen čas pomaknil v stanje pripravljenosti.
  • Če pa nekdo pritisne gumb podnevi ali zelo pozno ponoči, bo enkrat zaigral Tiger Rag in nato ugasnil vse luči.

To omogoča, da gumb deluje kadar koli v dnevu, vendar lučk ni treba stalno prižgati. Omogoča tudi predvajanje več skladb z enim gumbom, tako da ugotovi, katera skladba se trenutno predvaja, konča to pesem in predvaja "naslednjo" pesem.

Več virov za skriptiranje v FPP-ju najdete tukaj: https://github.com/FalconChristmas/fpp-scripts Za bolj zapleteno logiko poiščite google “bash script _”, kjer je podčrtavanje tisto, kar poskušate narediti. Skripte lahko preizkusite z lupino FPP (uporabniško ime fpp geslo falcon) Osnovni ukazi so naslednji.

Bodite pozorni na uporabo velikih črk !!

  • Veliko -P bo enkrat predvajalo seznam predvajanja, majhne črke -p bodo ponavljale.
  • fpp -v 66 Nastavite glasnost na 66%
  • fpp -c stop Takoj ustavite oddajo
  • fpp -C stop To je lahko stop show graciozno
  • fpp -p thisPlaylistName Predvaja thisPlaylistName ob ponavljanju (tako se uvodna pesem predvaja enkrat, nato pa se bodo glavne stvari ponavljale v nedogled.
  • fpp -P thisPlaylistName Predvaja to imePlaylistName enkrat
  • eventScript "$ {MEDIADIR}/scripts/$ {thisScriptVariable}" Zažene skript. V primeru na levi strani deluje, če imate ime skripta shranjeno v spremenljivki nekje zgoraj, na primer thisScriptVariable =”PlayTheSong.sh”

ButtonSuperScript.sh

#!/bin/sh
###########################################################
#Zaženite, če pritisnete gumb.
#Za vsako skladbo bi morali imeti dva seznama predvajanja - enega z
# samo pesem kot "prva predstava" in nič glavnega,
# in še ena s pesmijo kot prvo predvajanje in v pripravljenosti
# zaporedje kot "Glavno" zaporedje. (Vsaj če želite
# narediti točno to, kar počnem)
#
#Na primer, če je vaša pesem Tiger Rag, bi morali
# seznama predvajanja "TigerRag", "TigerRagStandby" in "Standby"
#
###########################################################
# Seznami predvajanja, ki se izvajajo, če je med 6 in 11
NightSong1 = "TigerRagStandby"
NightSong2 = "HallelujahStandby"
NightStandby = "V pripravljenosti"
# Seznami predvajanja, ki se izvajajo čez dan ali po 11
DaySong1 = "TigerRag"
DaySong2 = "Aleluja"
DayStandby = "V pripravljenosti"
#Časi vklopa in izklopa v 24 urah. Če želite minute, veliko sreče
Na uro = 17
OffHour = 23
###########################################################
# Čreva scenarija. #
###########################################################
# Pridobite naše trenutno stanje (IDLE = 0, PLAYING = 1, Gracefully Stop = 2)
STATUS = $ (fpp -s | cut -d ',' -f2)
#Pridobite tekoči seznam predvajanja in ga obrežite na 7 črk
PLAYLIST = $ (fpp -s | cut -d ',' -f4 | cut -c1-7)
#To bo "oboje", če predvaja pesem, in "zaporedje", če je v stanju pripravljenosti
#Uporablja se za ugotavljanje, ali se izvaja zaporedje pripravljenosti
STANDBYSTRING = $ (fpp -s | cut -d ',' -f5)
#Prvih 7 črk imen seznamov predvajanja za primerjavo
#Samo 7 črk, tako da sta "Song1Standby" in "Song1" enaka
#V redu, torej bi morale biti prve črke x in x najkrajše ime pesmi, ki ga imate
StandbyPlaylist = $ (echo $ NightStandby | cut -c1-7)
Song1Playlist = $ (echo $ NightSong1 | cut -c1-7)
Song2Playlist = $ (echo $ NightSong2 | cut -c1-7)
STARTITEM = ""
#Pridobite trenutno uro v vojaškem času
Trenutna ura = $ (datum +"%H")
#Natisnite stanje nekaterih stvari - "echo" je kot "print" v večini jezikov
#Uporabno za preskušanje, če so različne stvari obrezane ali pravilno izračunane
echo CurrentHour je $ CurrentHour
echo Tekoči seznam predvajanja je: $ PLAYLIST
echo Song2Playlist je: $ Song2Playlist
echo Status je: $ STATUS
#Ponoči nastavite glasnost na 80%, sicer 100%
#Torej, če spim, ni tako glasno
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; potem
# fpp -v 100
#sicer
# fpp -v 80
#fi
# Preverite, ali imamo kaj smiselnega
če [-z "$ {STATUS}"]; potem
echo "Napaka z vrednostjo stanja"> & 2
izhod 1
fi
# Ukrepajte glede na trenutno stanje
etui $ {STATUS} v
# NEDEJAVEN
0)
#Night time - predvajanje skladbe1 v stanju pripravljenosti
če [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; potem
echo Predvajanje NightSong1
fpp -c stop
fpp -p "$ {NightSong1}" $ {STARTITEM}
#Dnevni čas ali res pozno - enkrat predvajajte pesem 1, nato ugasnite luči
drugače
echo Predvajanje DaySong1
fpp -c stop
fpp -P "$ {DaySong1}" $ {STARTITEM}
fi
;;
# PREDVAJANJE ali ZAUSTAVITEV POMEMBNO (graciozno se zgodi, če pritisnete gumb, ko se konča razpored predvajanja)
1 | 2)
#Standby teče - to deluje, ker je stanje pripravljenosti moje edino zaporedje, ki ni medijsko
če ["$ STANDBYSTRING" == "zaporedje"]; potem
#Night time - predvajanje skladbe1 v stanju pripravljenosti
če [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; potem
echo Predvajanje NightSong1 ponoči
fpp -c stop
fpp -p "$ {NightSong1}"
#Dnevni čas ali res pozno - enkrat se igrajte s tigrasto krpo, nato ugasnite luči
drugače
echo PlayingDaySong1 od predvajanja
fpp -c stop
fpp -P "$ {DaySong1}"
fi
#Če želite podpreti več pesmi, kopirajte ta razdelek in spremenite "Song2Playlist" v zadnjem razdelku v Song#Playlist
#Song1 se izvaja
elif ["$ PLAYLIST" == "$ Song1Playlist"]; nato
#Night time - igrajte Hallelujah v pripravljenosti
če [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; potem
echo Igranje AlelujaStandby iz Tiger Rag teče
fpp -c stop
fpp -p "$ {NightSong2}"
#Dnevni čas ali res pozno - enkrat predvajajte Song2 in nato ugasnite luči
drugače
echo Igranje Aleluje enkrat iz Tiger Rag teče
fpp -c stop
fpp -P "$ {DaySong2}"
fi
#LAST SONG TEČE - IGRAJTE V STANJU
elif ["$ PLAYLIST" == "$ Song2Playlist"]; nato
#Night time - predvajajte stanje pripravljenosti v zanki
če [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; potem
echo Predvajanje v pripravljenosti ob ponavljanju
fpp -c stop
fpp -p "$ {NightStandby}"
#Dan ali res pozno - enkrat v pripravljenosti
drugače
echo Enkratna predvajanje v stanju pripravljenosti
fpp -c stop
fpp -P "$ {DayStandby}"
fi
drugače
echo Iz nekega razloga je bila izvedena zadnja druga črka.
fpp -c stop
fpp -P "$ {DaySong1}"
fi
;;
esac

oglejte si rawButtonSuperScript.sh, ki ga gosti ❤ GitHub

5. korak: (izbirno) sprednja plošča za gumb

Imam dostop do laserskega rezalnika v Clemsonu skozi Makerspace, zato sem hitro skiciral načrt za rezanje+jedkanje. V sredini je luknja za moj gumb, besede v božični pisavi pravijo "Potisni me", okoli gumba pa snežinka. Nekaj lesa sem razpršila v belo barvo in ga nato prekrila z maskirnim trakom (da laserski rezalnik ne bi opekel delov, ki jih ne želim jedkati). Datoteka, ki sem jo uporabil, je priložena.

Priporočena: