Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Vykdydami Kalėdų šviesos šou, sinchronizuotą su muzika, galbūt norėsite jį pradėti paspausdami mygtuką. Ši pamoka taikoma tik šou, kuris valdomas naudojant „Falcon Pi Player“(FPP), veikiantį su „Raspberry Pi“. Jei naudojate FPP, tikriausiai naudojate „Falcon“valdiklius ir „xLights“arba „LightORama“, kad sektumėte savo laidą. Jei nė vienas iš šių žodžių jums nieko nereiškia, ši pamoka tikriausiai yra šiek tiek virš jūsų galvos ir turėtumėte pradėti skaitydami šį wiki https://auschristmaslighting.com/wiki/ ir prisijungdami prie „Facebook“grupės, kaip nurodyta žemiau
- „xLights“:
- Bendrosios pažangios Kalėdų lemputės:
- „Falcon Pi Player“:
- Priedo/pasiūlymo idėjos dalijimasis:
- „Nesusiję su„ xLights “ar LOR“:
- „xLights Holiday Light“pardavėjai:
- „Pasidaryk pats“Kalėdos:
1 žingsnis: dalių sąrašas
Jums reikės šių elementų:
- Mygtukas. Aš naudoju šį su LED žiedo lempute: [Amazon]
- Rezistorius. Pageidautina 200Ω ar daugiau (2 iš jų, jei naudojate LED mygtuką) Standartinis 1/4W arba 1/8W tinka
- Jungties laidas. Manometras, kurį turėtumėte naudoti, priklauso nuo to, kiek mygtukas bus nuo jūsų „Pi“. Aš naudoju 18awg vielą maždaug 10 pėdų atstumu nuo „Pi“ir ji veikė nepriekaištingai
- Būdas prijungti laidą prie „Pi“GPIO kaiščių. Galite naudoti juostinį kabelį su pertraukos duonos plokšte arba tiesiog naudoti kai kurias moterų jungtis, kaip aš. Mums reikia tik 3 laidų - įžeminimo, 5 V ir mygtuko duomenų. [„Amazon“]
- (Neprivaloma) Vandeniui atspari jungtis kiekviename gale, kad būtų lengva prižiūrėti. Aš naudoju 3 kontaktų jūrinio lygio jungtis: [Amazon]
- (Neprivaloma) Termiškai susitraukiančios užpakalinės jungtys [„Amazon“]
2 žingsnis: laidų schema
Nuotraukose parodyta mygtuko be pridėto šviesos diodo prijungimo schema ir mygtukas su šviesos diodu. Elektros instaliacijos schemos nustatymo būdas leidžia jums paspausti mygtuką ir lemputę (nuolat degti) tik 3 laidais.
Norėdami naudoti GPIO kaištį, pasirinkite bet kurį GPIO kaištį ant pi. Taip pat naudokite +5V ir Gnd kaiščius. Tikriausiai galėtumėte išsisukti naudodami 3,3 V kaištį, tačiau dėl įtampos kritimo keliose pėdose laido signalas gali tapti nepatikimas arba jo gali nepakakti šviesos diodui uždegti.
PASTABA: 3 kontaktų jungtis netilps per skylę, kurią reikia išgręžti mygtukui su LED žiedo lempute. Taigi pritvirtinkite jungtį įdėję mygtuką į priekinę plokštę.
3 veiksmas: pagrindinė „Falcon Pi Player“sąranka
PASTABA - FPP nuolat atnaujinamas ir visiškai įmanoma, kad jie patobulins savo scenarijų palaikymą arba kad kaip numatytąją funkciją, kuriai reikia mažiau programavimo, bus įtrauktas mygtukas „pradėti“.
Aš sekiau aukščiau pateiktą vaizdo įrašą, kad iš pradžių viską sutvarkyčiau.
Manau, kad vaizdo įrašai yra nuobodūs ir lėti, todėl čia yra jų santrauka:
- Importuokite seką į „fpp“naudodami failų tvarkyklę
- Sukurkite grojaraštį su seka. Tolesniems veiksmams grojaraštis bus vadinamas „playme“
-
Atidarykite tuščią užrašų knygelės failą ir įveskite:
- #!/bin/sh
- fpp -P žaidimas
- Išsaugokite jį kaip.sh failą savo kompiuteryje
- Eikite į FPP failų tvarkyklę ir įkelkite savo scenarijaus failą. Eikite į skirtuką „Scenarijai“ir įsitikinkite, kad jis yra
- Skiltyje Būsena/valdymas eikite į Įvykiai
- Sukurkite naują įvykį. Įvykio ID 1/1, įvykio pavadinimas bet koks, efekto seka NĖRA, Įvykio scenarijus
- Eikite į įvesties/išvesties sąranką ir spustelėkite GPIO aktyvikliai
- Perjunkite kaištį, prie kurio pritvirtintas mygtukas. Jei paspaudus mygtuką jis sumažės, tada įjunkite įvykį į kritimo parinktį, jei jis yra aktyvus aukštas, tada įjunkite įvykį į kylantį.
- Spustelėkite mygtuką Perkrauti įspėjimu, kuris pasirodys atlikus visus pakeitimus
Atlikę visa tai, turėtumėte sugebėti paspausti mygtuką, kad pasirodymas prasidėtų. Oho!
Tačiau šis metodas turi tam tikrų apribojimų. Jei grojaraščio kūrimo metu dar kartą paspausite mygtuką, jis 1) nieko nedarys arba 2) sugadins FPP ir atsisakys nieko daryti su mygtuku, kol jo iš naujo nepaleisite. Taigi, jei jūs tiesiog naudojate mygtuką kaip dramatišką būdą, kaip rodyti komandą, aukščiau pateiktas metodas bus viskas, ko jums reikia.
Jei jums reikia kažko daugiau, pereikite prie kito žingsnio
4 žingsnis: tvirtesnis scenarijus
Žemiau yra scenarijus, kurį galiausiai pasiekiau. Scenarijų „Github“galite peržiūrėti čia: [Gist. Github]
- Jei kas nors paspaudžia mygtuką „nakties“valandomis, jis paleis „Tiger Rag“(mano daina1) ir tada pereis prie budėjimo sekos, kuri tęsiasi be galo.
- Jei grojant „Tiger Rag“paspaudžiamas mygtukas, ji pradeda mano antrąją dainą „Hallelujah“ir tada neribotą laiką pereina į budėjimo seką.
- Bet jei kas nors paspaus mygtuką dieną ar labai vėlai naktį, jis vieną kartą paleis „Tiger Rag“ir tada išjungs visas šviesas.
Tai leidžia mygtukui veikti bet kuriuo paros metu, tačiau lemputės neturi būti įjungtos visą laiką. Tai taip pat leidžia iš vieno mygtuko paleisti kelias dainas, nustatant, kuri daina šiuo metu grojama, baigiant tą dainą ir grojant „kitą“dainą.
Daugiau FPP scenarijų šaltinių rasite čia: https://github.com/FalconChristmas/fpp-scriptsDėl sudėtingesnės logikos tiesiog google „bash script _“, kur pabraukimas yra tai, ką bandote padaryti. Galite išbandyti savo scenarijus naudodami „FPP Shell“(vartotojo vardas fpp password falcon). Pagrindinės komandos yra šios.
Atkreipkite dėmesį į didžiąsias raides !!
- „Capital -P“groja grojaraštį vieną kartą, mažosios raidės „p“pakartos.
- fpp -v 66 Nustatykite garsumą iki 66%
- fpp -c stop Nedelsdami nutraukite pasirodymą
- fpp -C stop Tai gali būti stop rodyti grakščiai
- fpp -p thisPlaylistName Paleidžia šįPlaylistName kartojant (taigi įvadinė daina groja vieną kartą, tada pagrindiniai dalykai bus kartojami neribotą laiką.
- fpp -P thisPlaylistName Paleidžia šį grojaraščio pavadinimą vieną kartą
- eventScript "$ {MEDIADIR}/scripts/$ {thisScriptVariable}" Vykdo scenarijų. Kairėje pusėje tai tinka, jei jūsų scenarijaus pavadinimas yra išsaugotas kažkur aukščiau esančiame kintamajame, pvz., „ThisScriptVariable =“PlayTheSong.sh “
ButtonSuperScript.sh
#!/bin/sh |
########################################################### |
#Norėdami paleisti, jei paspaudžiamas mygtukas. |
#Turėtumėte turėti du grojaraščius kiekvienai dainai - vieną su |
# tik daina kaip „Pirmasis grojimas“ir nieko pagrindinio, |
# ir dar vienas su pirmąja daina ir jūsų budėjimo režimu |
# seka kaip „Pagrindinė“seka. (Bent jau jei nori |
# daryti tai, ką aš darau) |
# |
#Pvz., Jei jūsų daina yra „Tiger Rag“, turėtumėte tai padaryti |
# grojaraščiai „TigerRag“, „TigerRagStandby“ir „Standby“ |
# |
########################################################### |
# Grojaraščiai, kuriuos reikia paleisti, jei jis yra nuo 6 iki 11 |
NightSong1 = "TigerRagStandby" |
NightSong2 = "HallelujahBendby" |
NightStandby = "Budėjimo režimas" |
# Grojaraščiai, kurie bus rodomi dienos metu arba po 11 |
DaySong1 = "TigerRag" |
DaySong2 = "Aleliuja" |
DayStandby = "Budėjimo režimas" |
#Įjungimo ir išjungimo laikas per 24 valandas. Jei norite minučių, sėkmės |
OnHour = 17 |
Išjungta valanda = 23 |
########################################################### |
# Rašto esmė. # |
########################################################### |
# Gaukite dabartinę būseną (IDLE = 0, PLAYING = 1, Gracingly Stop = 2) |
BŪSENA = $ (fpp -s | cut -d ',' -f2) |
#Gaukite bėgimo grojaraštį ir supjaustykite iki 7 raidžių |
PLAYLIST = $ (fpp -s | cut -d ',' -f4 | cut -c1-7) |
#Tai bus „ir“, jei ji groja dainą, ir „seka“, kai ji veikia budėjimo režimu |
#naudojamas nustatyti, ar veikia budėjimo seka |
STANDBYSTRING = $ (fpp -s | cut -d ',' -f5) |
#Pirmosios 7 grojaraščių pavadinimų raidės palyginimui |
#Tik 7 raidės, kad „Song1Stendby“ir „Song1“būtų identiški |
#Gerai, todėl iš tikrųjų tai turėtų būti pirmosios x raidės, o x - trumpiausias dainos pavadinimas |
„StandbyPlaylist“= $ (echo $ NightStandby | cut -c1-7) |
Song1Playlist = $ (echo $ NightSong1 | cut -c1-7) |
„Song2Playlist“= $ (echo $ NightSong2 | cut -c1-7) |
STARTITEM = "" |
#Gaukite dabartinę valandą kariniu laiku |
CurrentHour = $ (data +"%H") |
#Atspausdinkite kai kurių dalykų būseną - „aidas“daugelyje kalbų yra tarsi „spausdinimas“ |
#Naudinga išbandyti, jei įvairūs dalykai buvo tinkamai apipjaustyti ar apskaičiuoti |
echo CurrentHour yra $ CurrentHour |
„echo Running“grojaraštis yra: $ PLAYLIST |
echo Song2Playlist yra: $ Song2Playlist |
echo būsena yra: $ STATUS |
#Naktį nustatykite garsumą iki 80%, kitu atveju - 100% |
#Taigi, jei aš miegu, jis nebūtų toks garsus |
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; tada |
# fpp -v 100 |
#Kitas |
# fpp -v 80 |
#fi |
# Patikrinkite, ar gavome ką nors prasmingo |
jei [-z "$ {STATUS}"]; tada |
echo "Klaida su būsenos verte"> ir 2 |
išeiti 1 |
fi |
# Veikite pagal dabartinę būseną |
atvejis $ {STATUS} in |
# IDLE |
0) |
#Naktis - grokite „Song1“budėjimo režimu |
jei [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; tada |
aidas Grojant NightSong1 |
fpp -c sustojimas |
fpp -p "$ {NightSong1}" $ {STARTITEM} |
#Diena arba tikrai vėlu - vieną kartą paleiskite 1 dainą, tada išjunkite šviesą |
Kitas |
echo Playing DaySong1 |
fpp -c sustojimas |
fpp -P "$ {DaySong1}" $ {STARTITEM} |
fi |
;; |
# ŽAISMAS arba SUSTABDYMAS NEMOKAMAI (gražiai nutinka, jei paspaudžiamas mygtukas, kai baigiasi suplanuotas grojaraštis) |
1 | 2) |
#Budėjimo režimas veikia - tai veikia, nes budėjimo režimas yra mano vienintelė ne medijos seka |
jei ["$ STANDBYSTRING" == "seka"]; tada |
#Naktis - grokite „Song1“budėjimo režimu |
jei [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; tada |
echo „NightSong1“grojimas nakties metu |
fpp -c sustojimas |
fpp -p "$ {NightSong1}" |
#Dienos laikas arba tikrai vėlai - vieną kartą pažaisk tigro skudurą, tada išjunk šviesą |
Kitas |
echo PlayingDaySong1 nuo grojimo |
fpp -c sustojimas |
fpp -P "$ {DaySong1}" |
fi |
#Jei norite palaikyti daugiau dainų, nukopijuokite šį skyrių ir pakeiskite „Song2Playlist“paskutiniame skyriuje į „Song#Playlist“ |
#1 daina veikia |
elif ["$ PLAYLIST" == "$ Song1Playlist"]; tada |
#Naktis - žaiskite „Hallelujah“su budėjimo režimu |
jei [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; tada |
echo Playing „HallelujahStendby“iš „Tiger Rag“veikia |
fpp -c sustojimas |
fpp -p "$ {NightSong2}" |
#Dienos laikas arba tikrai vėlu - vieną kartą paleiskite „Song2“, tada išjunkite šviesą |
Kitas |
echo Groja Hallelujah kartą iš Tiger Rag |
fpp -c sustojimas |
fpp -P "$ {DaySong2}" |
fi |
#PASKUTINĖ DAINA VEIKIA - ŽAISKITE PRODUKTU |
elif ["$ PLAYLIST" == "$ Song2Playlist"]; tada |
#Naktis - paleiskite budėjimo režimą |
jei [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; tada |
echo Pakartotinai grojant budėjimo režimu |
fpp -c sustojimas |
fpp -p "$ {NightStandby}" |
#Diena arba tikrai vėlu - vieną kartą paleiskite budėjimo režimą |
Kitas |
echo Vieną kartą grojant budėjimo režimu |
fpp -c sustojimas |
fpp -P "$ {DayStandby}" |
fi |
Kitas |
aidas Kažkodėl paskutinė įvykdyta kita byla. |
fpp -c sustojimas |
fpp -P "$ {DaySong1}" |
fi |
;; |
esac |
peržiūrėti „rawButtonSuperScript.sh“, kurį su „❤“priglobia „GitHub“
5 veiksmas: (pasirinktinai) mygtuko priekinė plokštė
Turiu prieigą prie lazerinio pjaustytuvo „Clemson“per „Makerspace“, todėl greitai nubraižiau pjovimo ir išgraviravimo dizainą. Viduryje yra skylė mano mygtukui, žodžiai sako „Push Me“kalėdiniu šriftu, o snaigė aplink mygtuką. Aš nupurškiau medieną baltai, o po to užklijavau maskavimo juosta (kad lazerinis pjaustytuvas nesudegintų dalių, kurių nenoriu išgraviruoti). Mano naudojamas failas pridedamas.