Tartalomjegyzék:

Kezdje karácsonyi fényjátékát egy gombbal: 5 lépés
Kezdje karácsonyi fényjátékát egy gombbal: 5 lépés

Videó: Kezdje karácsonyi fényjátékát egy gombbal: 5 lépés

Videó: Kezdje karácsonyi fényjátékát egy gombbal: 5 lépés
Videó: KIDS Christmas "STRIPES" Гетры крючком Учебник 2024, Július
Anonim
Kezdje karácsonyi fényjátékát egy gombbal
Kezdje karácsonyi fényjátékát egy gombbal

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

Bekötési rajz
Bekötési rajz
Bekötési rajz
Bekötési rajz
Bekötési rajz
Bekötési rajz
Bekötési rajz
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: