Tartalomjegyzék:
- Szerző John Day [email protected].
- Public 2024-01-30 09:42.
- Utoljára módosítva 2025-01-23 14:48.
Zenével szinkronizált karácsonyi fényjáték futtatásakor érdemes elindítani a műsort egy gomb megnyomásával. Ez az oktatóanyag csak a Raspberry Pi -n futó Falcon Pi Player (FPP) segítségével vezérelt műsorokra vonatkozik. Ha FPP -t futtat, akkor valószínűleg Falcon vezérlőket használ, és xLights vagy LightORama segítségével sorolja a műsort. Ha ezek közül a szavak közül egyik sem jelent semmit, akkor ez az oktatóanyag valószínűleg egy kicsit a feje fölött van, és először is ezt a wikit kell elolvasnia: https://auschristmaslighting.com/wiki/, és csatlakozhat az alábbi Facebook -csoporthoz
- xLights:
- Általános fejlett karácsonyi fények:
- Falcon Pi Player:
- Melléklet/ötletmegosztás:
- "Nem kifejezetten az xLights vagy a LOR -hoz kapcsolódó":
- xLights Holiday Light gyártók:
- Karácsony: Csináld magad:
1. lépés: Alkatrészlista
A következő elemekre lesz szüksége:
- Egy gomb. Ezt használtam, körülötte egy LED -es gyűrűs lámpával: [Amazon]
- Egy ellenállás. Lehetőleg 200Ω vagy nagyobb (ebből 2, ha a LED gombot használja) Standard 1/4W vagy 1/8W megfelelő
- Csatlakozó vezeték. A használandó mérőeszköz attól függ, hogy a gomb milyen messze lesz a Pi -től. 18awg vezetéket használtam körülbelül 10 méterre a Pi -mtől, és hibátlanul működött
- Egy vezeték csatlakoztatásának módja a Pi GPIO csapjaihoz. Használhat szalagkábelt a töréses kenyértáblával, vagy használhat néhány női csatlakozót, mint én. Csak 3 vezetékre van szükségünk - földelésre, 5 V -ra és a gomb adataira. [Amazon]
- (Opcionális) Vízálló csatlakozó mindkét végén a könnyű karbantartás érdekében. 3 tűs tengeri minőségű csatlakozókat használok: [Amazon]
- (Opcionális) Hőre zsugorodó csatlakozó [Amazon]
2. lépés: bekötési rajz
A képeken látható a bekapcsolt LED nélküli gomb és a LED -el ellátott gomb bekötési rajza. A kapcsolási rajz beállítása lehetővé teszi egy gomb és egy lámpa (folyamatosan világító) futtatását mindössze 3 vezetékkel.
A GPIO tűhöz válassza ki a piio bármelyik GPIO csapját. Használja a +5V és a Gnd csapokat is. Valószínűleg megúszhatná a 3,3 V -os tű használatát, de a feszültségcsökkenés több láb vezetéken keresztül megbízhatatlanná teheti a jelet, vagy nem elegendő a LED kigyulladásához.
MEGJEGYZÉS: A 3 tűs csatlakozó nem illeszkedik a lyukba, amelyet a LED-gyűrűs lámpával ellátott gombhoz kell fúrni. Tehát csatlakoztassa a csatlakozót, miután a gombot az előlapba helyezte.
3. lépés: A Falcon Pi Player alapbeállítása
MEGJEGYZÉS - Az FPP -t folyamatosan frissítik, és teljesen lehetséges, hogy javítani fogják a szkriptek támogatását, vagy hogy a "nyomógombot az indításhoz" alapértelmezett funkcióként tartalmazzák, amely kevesebb programozást igényel.
Követtem a fenti videót, mert először mindent beállítottam.
A videókat unalmasnak és lassúnak találom, ezért itt egy összefoglaló:
- Importálja a sorozatot az fpp -be a fájlkezelő segítségével
- Hozzon létre egy lejátszási listát a benne lévő sorozattal. A következő lépésekhez a lejátszási listát "playme" -nek fogják hívni
-
Nyisson meg egy üres jegyzettömb fájlt, és írja be a következőt:
- #!/bin/sh
- fpp -P játék
- Mentse el.sh fájlként a számítógépére
- Nyissa meg az FPP fájlkezelőjét, és töltse fel a szkriptfájlt. Lépjen a "Scripts" fülre, és győződjön meg róla, hogy ott van
- Az Állapot/vezérlés alatt lépjen az Események menüpontra
- Hozzon létre egy új eseményt. Eseményazonosító 1/1, Esemény neve bármilyen, Hatássorozat NINCS, Eseményszkript
- Lépjen a Bemenet/kimenet beállítása pontra, és kattintson a GPIO -triggerek elemre
- Váltsa át a gombot, amelyhez a gomb csatlakozik. Ha alacsony lesz, amikor megnyomja a gombot, majd tegye az eseményt a Falling opcióra, ha aktív magas, akkor tegye az eseményt Rising -ra.
- Kattintson az Újraindítás gombra a figyelmeztetés alapján, amely az összes módosítás elvégzése után megjelenik
Mindezek elvégzése után képesnek kell lennie arra, hogy megnyomja a gombot a műsor elindításához. Ju Hú!
Ennek a módszernek azonban vannak bizonyos korlátai. Ha ismét megnyomja a gombot a lejátszási lista lejátszása közben, akkor vagy 1) nem tesz semmit, vagy 2) összeomlik az FPP, és nem hajlandó semmit tenni a gombbal, amíg újra nem indítja. Tehát ha csak egy gombot használ drámai módon, amikor a műsort parancsra játssza, akkor a fenti módszerre lesz szüksége.
Ha még valamire szüksége van, folytassa a következő lépéssel
4. lépés: Robusztusabb szkript
Az alábbiakban a forgatókönyv, amelyre végül eljutottam. A forgatókönyvet a Githubon itt tekintheti meg: [Gist. Github]
- Ha valaki megnyomja a gombot az „éjszakai” órákban, akkor a Tigris rongyot (az én dalom1) játssza le, majd a készenléti szekvenciára lép, amely végtelen ideig folytatódik.
- Ha megnyomja a gombot, miközben Tiger Rag játszik, akkor elindul a második dalom, a Hallelujah, majd a végtelenségig készenléti üzemmódba kerül.
- De ha valaki nappal vagy nagyon késő este megnyomja a gombot, akkor egyszer a Tigris rongyot játssza le, majd kapcsolja ki az összes lámpát.
Ez lehetővé teszi, hogy a gomb a nap bármely szakában működjön, de a lámpáknak nem kell folyamatosan világítaniuk. Ezenkívül lehetővé teszi több dal lejátszását 1 gombbal, azonosítva, hogy melyik dalt játssza le, fejezze be a dalt, és játssza le a "következő" dalt.
További forrásokat találhat az FPP-ben történő szkripteléshez: https://github.com/FalconChristmas/fpp-scriptsBonyolultabb logika érdekében csak google „bash script _”, ahol az aláhúzás az, amivel próbálkozik. A szkripteket az FPP Shell (felhasználónév fpp jelszó sólyom) segítségével tesztelheti. Az alapvető parancsok a következők.
Figyeljen a nagybetűkre !!
- A Capital -P egyszer játssza le a lejátszási listát, a kisbetűs -p megismétli.
- fpp -v 66 Állítsa a hangerőt 66% -ra
- fpp -c stop Azonnal állítsa le a műsort
- fpp -C stop Ez lehet stop show kecsesen
- fpp -p thisPlaylistName Ismétléskor lejátssza ezt a lejátszási listanevet (így az intro dal egyszer el fog játszódni, majd a fő dolgok korlátlan ideig ismétlődnek.
- fpp -P thisPlaylistName Egyszer lejátssza ezt a lejátszási listanevet
- eventScript "$ {MEDIADIR}/scripts/$ {thisScriptVariable}" Futtat egy szkriptet. A bal oldali esetben akkor működik, ha a szkriptnevet valahol fent lévő változóba mentette, mint például ez aScriptVariable =”PlayTheSong.sh”
ButtonSuperScript.sh
| #!/bin/sh |
| ########################################################### |
| #A gomb megnyomásakor futtatható. |
| #Minden zeneszámhoz két lejátszási listát kell rendelnie - egyet |
| # csak a dal, mint az „első játszma”, és semmi a fő, |
| # és egy másik, a dallal első lejátszásként és a készenléti móddal |
| # szekvencia, mint "Main" sorozat. (Legalábbis ha akarod |
| # hogy pontosan azt tegyem, amit én) |
| # |
| #Például, ha a dalod Tigris rongy, akkor meg kell tenned |
| # lejátszási lista "TigerRag", "TigerRagStandby" és "Standby" |
| # |
| ########################################################### |
| # Futtatható lejátszási listák, ha 6 és 11 között van |
| NightSong1 = "TigerRagStandby" |
| NightSong2 = "Hallelujah Standby" |
| NightStandby = "Készenlét" |
| # Napközben vagy 11 után futó lejátszási listák |
| DaySong1 = "TigerRag" |
| DaySong2 = "Halleluja" |
| DayStandby = "Készenlét" |
| #Be- és kikapcsolási idők 24 órában. Ha perceket akarsz, sok sikert |
| OnHour = 17 |
| OffHour = 23 |
| ########################################################### |
| # A forgatókönyv zsigere. # |
| ########################################################### |
| # Szerezze meg jelenlegi állapotunkat (IDLE = 0, JÁTÉK = 1, Kecses megállás = 2) |
| STATUS = $ (fpp -s | cut -d ',' -f2) |
| #Szerezze be a futó lejátszási listát, és vágja le 7 betűre |
| PLAYLIST = $ (fpp -s | cut -d ',' -f4 | cut -c1-7) |
| #Ez "mindkettő" lesz, ha dalt játszik le, és "sorozat", ha készenléti állapotban van |
| #annak meghatározására szolgál, hogy a készenléti sorozat fut -e |
| STANDBYSTRING = $ (fpp -s | cut -d ',' -f5) |
| #A lejátszási listák nevének első 7 betűje összehasonlításképpen |
| #Csak 7 betű, hogy a "Song1Standby" és a "Song1" azonosak legyenek |
| #Rendben, tehát valójában az első x betűnek és az x -nek a legrövidebb dalnévnek kell lennie |
| Készenléti lejátszási lista = $ (echo $ NightStandby | cut -c1-7) |
| Song1Playlist = $ (echo $ NightSong1 | cut -c1-7) |
| Song2Playlist = $ (echo $ NightSong2 | cut -c1-7) |
| STARTITEM = "" |
| #Szerezd meg az aktuális órát katonai időben |
| CurrentHour = $ (dátum +"%H") |
| #Nyomtassa ki néhány dolog állapotát - az "echo" a legtöbb nyelven olyan, mint a "nyomtatás" |
| #Hasznos tesztelésre, ha különböző dolgokat helyesen vágtak le vagy számítottak ki |
| echo CurrentHour a $ CurrentHour |
| echo A lejátszási lista: $ PLAYLIST |
| echo Song2Playlist: $ Song2Playlist |
| echo állapota: $ STATUS |
| #Állítsa a hangerőt éjszaka 80% -ra, különben 100% -ra |
| #Hogy ha alszom, ne legyen olyan hangos |
| #if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; azután |
| # fpp -v 100 |
| #más |
| # fpp -v 80 |
| #fi |
| # Ellenőrizze, hogy kaptunk -e valami értelmeset |
| ha [-z "$ {STATUS}"]; akkor |
| echo "Hiba az állapotértékkel"> & 2 |
| kilépés 1 |
| fi |
| # Cselekedjen az aktuális állapot szerint |
| $ {STATUS} |
| # IDLE |
| 0) |
| #Éjszaka - a Song1 lejátszása készenléti állapotban |
| ha [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; akkor |
| echo A NightSong lejátszása1 |
| fpp -c stop |
| fpp -p "$ {NightSong1}" $ {STARTITEM} |
| #Nappal vagy nagyon későn - játssza le egyszer az 1. dalt, majd kapcsolja le a villanyt |
| más |
| echo Playing DaySong1 |
| fpp -c stop |
| fpp -P "$ {DaySong1}" $ {STARTITEM} |
| fi |
| ;; |
| # JÓTALAN JÁTSZANI vagy LEÁLLÍTANI (kecses történik, ha megnyomja a gombot az ütemezett lejátszási lista befejezésekor) |
| 1 | 2) |
| #A készenléti állapot fut - ez azért működik, mert a készenléti mód az egyetlen nem médiaszekvenciám |
| ha ["$ STANDBYSTRING" == "sorozat"]; akkor |
| #Éjszaka - a Song1 lejátszása készenléti állapotban |
| ha [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; akkor |
| echo A NightSong1 lejátszása éjszaka |
| fpp -c stop |
| fpp -p "$ {NightSong1}" |
| #Nappal vagy nagyon későn - játssz egyszer tigris rongyot, majd kapcsold le a villanyt |
| más |
| echo PlayingDaySong1 a lejátszástól |
| fpp -c stop |
| fpp -P "$ {DaySong1}" |
| fi |
| #A további dalok támogatásához másolja ezt a részt, és módosítsa a "Song2Playlist" lehetőséget az utolsó részben a Song#Playlist -re |
| #A Song1 fut |
| elif ["$ PLAYLIST" == "$ Song1Playlist"]; akkor |
| #Éjszaka - játssza le a Hallelujah -t készenléti állapotban |
| ha [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; akkor |
| echo Playing HallelujahStandby a Tiger Rag -tól |
| fpp -c stop |
| fpp -p "$ {NightSong2}" |
| #Nappal vagy nagyon későn - játssza le egyszer a Song2 -t, majd kapcsolja le a villanyt |
| más |
| echo A Hallelujah lejátszása egyszer a Tiger Rag -ból fut |
| fpp -c stop |
| fpp -P "$ {DaySong2}" |
| fi |
| #UTOLSÓ DAL FUT - JÁTÉK KÉSZENLÉT |
| elif ["$ PLAYLIST" == "$ Song2Playlist"]; akkor |
| #Éjszaka - készenléti állapot lejátszása hurkon |
| ha [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; akkor |
| echo Készenléti állapot lejátszása ismétléskor |
| fpp -c stop |
| fpp -p "$ {NightStandby}" |
| #Nappal vagy nagyon későn - egyszer játssza le a készenléti állapotot |
| más |
| echo Készenléti állapot lejátszása egyszer |
| fpp -c stop |
| fpp -P "$ {DayStandby}" |
| fi |
| más |
| echo Valamilyen oknál fogva az utolsó esetet hajtották végre. |
| fpp -c stop |
| fpp -P "$ {DaySong1}" |
| fi |
| ;; |
| esac |
Tekintse meg a rawButtonSuperScript.sh webhelyet, amelyet a GitHub ❤ üzemeltet
5. lépés: (Nem kötelező) előlap a gombhoz
Hozzáférésem van a Clemson -i lézervágóhoz a Makerspace -en keresztül, ezért gyorsan felvázoltam egy tervet a vágáshoz+maratáshoz. A közepén lyuk van a gombom számára, a szavak karácsonyi betűtípussal "Push Me", a hó körül pedig hópehely található. Fehérre szórtam néhány fát, majd maszkolószalaggal letakartam (hogy a lézervágó ne perzselje azokat a részeket, amelyeket nem szeretnék maratni). Az általam használt fájl csatolva van.
Ajánlott:
DIY ventilátor ON -OFF gombbal - M5StickC ESP32: 8 lépés
DIY ventilátor ON -OFF gombbal - M5StickC ESP32: Ebben a projektben megtanuljuk, hogyan kell használni a FAN L9110 modult M5StickC ESP32 kártyával
Gombbal működtetett léptetővezérlő: 4 lépés
Gombbal működtetett léptetővezérlő:
4 számjegyű 7 szegmenses időzítő Reset gombbal: 5 lépés
4 számjegyű, 7 szegmensű időzítő Reset gombbal: Ez az utasítás megtanítja Önt, hogyan hozzon létre visszaszámlálót egy 4 számjegyű, 7 szegmenses kijelző segítségével, amelyet egy gombbal lehet alaphelyzetbe állítani. Ez az útmutató tartalmazza a szükséges anyagokat, a megfelelő kábelezést és letölthető fájl a kódról, amely
Jeep módosítás - gyorsítás egy gombbal: 7 lépés
A Jeep módosítása - gyorsítás egy gombbal: NYILATKOZAT: A Barstow School és az FRC Team 1939 vagy bármely tagja nem felelős a személyi sérülésekért vagy a tárgyakban, beleértve az autót, a módosítások okozta károkért. Bármilyen módosítás érvényteleníti a garanciális garanciát
Karácsonyi doboz: Arduino/ioBridge internetvezérelt karácsonyi fények és zenei műsor: 7 lépés
Karácsonyi doboz: Arduino/ioBridge internetvezérelt karácsonyi fények és zenei műsor: A karácsonyi doboz projektem egy internet által vezérelt karácsonyi fényekből és zenei műsorból áll. Egy karácsonyi dal kérhető on-line, amelyet sorba állítanak, és a kért sorrendben játsszák le. A zenét FM -rádión továbbítják
