Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Når du kjører et julelysshow synkronisert med musikk, vil du kanskje starte showet ved å trykke på en knapp. Denne opplæringen gjelder bare for et show som styres gjennom Falcon Pi Player (FPP) som kjører på en Raspberry Pi. Hvis du kjører FPP, bruker du sannsynligvis Falcon -kontrollere og bruker xLights eller LightORama til å sekvensere showet ditt. Hvis ingen av disse ordene betyr noe for deg, er denne opplæringen sannsynligvis litt over hodet ditt for nå, og du bør begynne med å lese denne wikien https://auschristmaslighting.com/wiki/ og bli med i en Facebook -gruppe som nedenfor
- xLights:
- Generelle avanserte julelys:
- Falcon Pi Player:
- Vedlegg/deling av ideer:
- "Ikke spesifikt xLights eller LOR -relatert":
- xLights Holiday Light -leverandører:
- Gjør det selv jul:
Trinn 1: Deleliste
Du trenger følgende ting:
- En knapp. Jeg brukte denne med et LED -ringlys rundt: [Amazon]
- En motstand. Fortrinnsvis 200Ω eller mer (2 av disse hvis du bruker LED -knappen) Standard 1/4W eller 1/8W er greit
- Kontaktledning. Måleren du bør bruke, avhenger av hvor langt knappen vil være fra din Pi. Jeg brukte 18awg wire i omtrent 10 fot fra Pi -en min, og det fungerte feilfritt
- En måte å koble en ledning til Pi's GPIO -pinner. Du kan bruke en båndkabel med brødbrettet, eller du kan bare bruke noen kvinnelige kontakter som jeg gjorde. Vi trenger bare 3 ledninger - Jord, 5V og data for knapp. [Amazon]
- (Valgfritt) En vanntett kontakt i hver ende for enkelt vedlikehold. Jeg bruker 3-pinners marine grade kontakter: [Amazon]
- (Valgfritt) Varmekrympekontakter [Amazon]
Trinn 2: Koblingsskjema
Bildene viser et koblingsskjema for en knapp uten en inkludert LED, og en knapp med en LED. Måten jeg konfigurerte koblingsskjemaet på lar deg kjøre en knapp og et lys (kontinuerlig på) med bare 3 ledninger.
For GPIO -pinnen, velg hvilken som helst GPIO -pinne på pien. Bruk også +5V og Gnd -pinnene. Du kan sannsynligvis slippe unna med å bruke 3.3V -pinnen, men spenningsfallet over flere meter ledning kan gjøre signalet upålitelig eller ikke være nok til å lyse LED -en.
MERK: 3-pinners kontakten passer ikke gjennom hullet du trenger å bore for en knapp med LED-ringelyset. Så fest kontakten etter at du har satt knappen i frontplaten.
Trinn 3: Grunnleggende oppsett av Falcon Pi Player
MERK - FPP oppdateres stadig, og det er fullt mulig at de vil forbedre skriptstøtten eller at de vil inkludere "trykknapp for å starte" som en standardfunksjon som krever mindre programmering.
Jeg fulgte videoen ovenfor for først å få alt satt opp.
Jeg synes videoer er kjedelige og trege, så her er et sammendrag av det:
- Importer sekvensen til fpp ved hjelp av filbehandleren
- Lag en spilleliste med sekvensen i den. I de neste trinnene vil spillelisten bli kalt "playme"
-
Åpne en tom notisblokkfil og skriv inn følgende:
- #!/bin/sh
- fpp -P playme
- Lagre den som en.sh -fil på datamaskinen
- Gå til filbehandleren i FPP og last opp skriptfilen. Gå til fanen "Skript" og kontroller at den er der
- Gå til Hendelser under Status/kontroll
- Lag et nytt arrangement. Hendelses -ID 1/1, Hendelsesnavn uansett, Effektsekvens INGEN, Hendelseskript
- Gå under Input/Output Setup og klikk på GPIO -utløsere
- Veksle knappenålen knappen er festet til. Hvis det vil gå lavt når du trykker på knappen, setter du hendelsen på Falling -alternativet, hvis det er aktivt høyt, setter du hendelsen på Rising.
- Klikk på Reboot -knappen med advarselen som dukker opp etter at du har gjort alle endringene
Etter å ha gjort alt dette, bør du kunne trykke på knappen for å starte showet ditt. Woohoo!
Imidlertid har denne metoden noen begrensninger. Hvis du trykker på knappen igjen mens spillelisten er i gang, vil den enten 1) ikke gjøre noe eller 2) krasje FPP og nekte å gjøre noe med knappen før du starter den på nytt. Så hvis du bare bruker en knapp som en dramatisk måte å spille showet ditt på kommando, vil metoden ovenfor være alt du trenger.
Hvis du trenger noe mer, fortsett til neste trinn
Trinn 4: Et mer robust skript
Nedenfor er manuset som jeg til slutt kom frem til. Du kan se manuset på Github her: [Gist. Github]
- Hvis noen trykker på knappen i løpet av "natt" -timene, vil den spille Tiger Rag (min sang 1) og deretter gå til standby -sekvensen som sløyfes uendelig.
- Hvis knappen trykkes mens Tiger Rag spiller, starter den andre sangen min, Hallelujah, og går deretter til standby -sekvensen på ubestemt tid.
- Men hvis noen trykker på knappen på dagtid eller veldig sent på kvelden, vil den spille Tiger Rag en gang og deretter slå av alle lysene.
Dette gjør at knappen kan fungere når som helst på dagen, men lysene trenger ikke å være på hele tiden. Det gjør det også mulig å spille flere sanger fra en knapp ved å identifisere hvilken sang som spilles for øyeblikket, avslutte sangen og spille den "neste" sangen.
Du kan finne flere ressurser for skripting i FPP her: https://github.com/FalconChristmas/fpp-scriptsFor mer komplisert logikk bare google "bash script _" der understreking er det du prøver å gjøre. Du kan teste skriptene dine ved å bruke FPP Shell (brukernavn fpp passord falcon) De grunnleggende kommandoene er som følger.
Vær oppmerksom på store bokstaver !!
- Capital -P spiller en spilleliste en gang, små -p gjentar den.
- fpp -v 66 Sett volum til 66%
- fpp -c stop Stopp showet umiddelbart
- fpp -C stop Dette kan være stop show grasiøst
- fpp -p thisPlaylistName Spiller dettePlaylistName ved gjentagelse (så intro -sangen spilles av en gang, så vil hovedtingen gjentas på ubestemt tid.
- fpp -P thisPlaylistName Spiller dettePlaylistName én gang
- eventScript "$ {MEDIADIR}/scripts/$ {thisScriptVariable}" Kjører et skript. I tilfellet til venstre fungerer det for hvis du har skriptnavnet ditt lagret i en variabel et sted ovenfor, for eksempel thisScriptVariable =”PlayTheSong.sh”
ButtonSuperScript.sh
#!/bin/sh |
########################################################### |
#Å kjøres hvis du trykker på knappen. |
#Du bør ha to spillelister for hver sang - en med |
# bare sangen som det "første skuespillet" og ingenting i hovedsak, |
# og en annen med sangen som første spill og ventemodus |
# sekvens som "Hovedsekvens". (I hvert fall hvis du vil |
# for å gjøre akkurat det jeg gjør) |
# |
#For eksempel, hvis sangen din er Tiger Rag, burde du ha det |
# spillelister "TigerRag", "TigerRagStandby" og "Standby" |
# |
########################################################### |
# Spillelister som skal kjøres hvis de er mellom 6 og 11 |
NightSong1 = "TigerRagStandby" |
NightSong2 = "Hallelujah Standby" |
NightStandby = "Standby" |
# Spillelister som skal kjøres i løpet av dagen eller etter 11 |
DaySong1 = "TigerRag" |
DaySong2 = "Hallelujah" |
DayStandby = "Standby" |
#Av og på-tider i 24-timers tid. Hvis du vil ha minutter, lykke til |
OnHour = 17 |
OffHour = 23 |
########################################################### |
# Modet til manuset. # |
########################################################### |
# Få vår nåværende status (IDLE = 0, PLAYING = 1, stopper grasiøst = 2) |
STATUS = $ (fpp -s | cut -d ',' -f2) |
#Få spillelisten som kjører, og trim til 7 bokstaver |
SPILLELISTE = $ (fpp -s | cut -d ',' -f4 | cut -c1-7) |
#Dette vil være "både" hvis den spiller en sang, og "sekvens" hvis den er standby |
#brukes til å avgjøre om standby -sekvensen kjører |
STANDBYSTRING = $ (fpp -s | cut -d ',' -f5) |
#Første 7 bokstaver med navn på spillelister for sammenligning |
#Bare 7 bokstaver slik at "Song1Standby" og "Song1" er identiske |
#Ok, så egentlig burde det være første x bokstaver og x skal være det korteste sangnavnet du har |
StandbyPlaylist = $ (echo $ NightStandby | cut -c1-7) |
Song1Playlist = $ (echo $ NightSong1 | cut -c1-7) |
Song2Playlist = $ (echo $ NightSong2 | cut -c1-7) |
STARTITEM = "" |
#Få den nåværende timen i militær tid |
CurrentHour = $ (dato +"%H") |
#Skriv ut statusen til noen ting - "ekko" er som "skrive ut" på de fleste språk |
#Nyttig for å teste om forskjellige ting er trimmet eller beregnet riktig |
echo CurrentHour er $ CurrentHour |
ekko Kjører spilleliste er: $ PLAYLIST |
echo Song2Playlist er: $ Song2Playlist |
ekko Status er: $ STATUS |
#Sett volumet til 80% om natten, 100% ellers |
Så at hvis jeg sover, er det ikke så høyt |
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; deretter |
# fpp -v 100 |
#ellers |
# fpp -v 80 |
#fi |
# Sjekk at vi har noe meningsfylt |
hvis [-z "$ {STATUS}"]; da |
ekko "Feil med statusverdi"> & 2 |
avkjørsel 1 |
fi |
# Handle om gjeldende status |
sak $ {STATUS} in |
# TOMGANG |
0) |
#Natt - spill Song1 med standby |
hvis [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; da |
ekko Playing NightSong1 |
fpp -c stopp |
fpp -p "$ {NightSong1}" $ {STARTITEM} |
#Dag eller virkelig sent - spill sang 1 en gang og slå av lyset |
ellers |
ekko Playing DaySong1 |
fpp -c stopp |
fpp -P "$ {DaySong1}" $ {STARTITEM} |
fi |
;; |
# SPILLER ELLER STOPPER GRACEFULLY (grasiøst skjer hvis du trykker på knappen når en planlagt spilleliste slutter) |
1 | 2) |
#Standby kjører - dette fungerer fordi standby er min eneste ikke -mediasekvens |
hvis ["$ STANDBYSTRING" == "sekvens"]; da |
#Natt - spill Song1 med standby |
hvis [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; da |
echo Playing NightSong1 for natten |
fpp -c stopp |
fpp -p "$ {NightSong1}" |
#Dagstid eller virkelig sent - spill tigerfilt en gang og slå av lyset |
ellers |
ekko PlayingDaySong1 fra å spille |
fpp -c stopp |
fpp -P "$ {DaySong1}" |
fi |
#For å støtte flere sanger, kopier du denne delen og endrer "Song2Playlist" i siste seksjon til Song#Playlist |
#Sang1 kjører |
elif ["$ PLAYLIST" == "$ Song1Playlist"]; deretter |
#Natt - spill Halleluja med standby |
hvis [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; da |
ekko Playing Hallelujah Standby fra Tiger Rag er i gang |
fpp -c stopp |
fpp -p "$ {NightSong2}" |
#Dag eller virkelig sent - spill Song2 en gang og slå av lyset |
ellers |
ekko Å spille Hallelujah en gang fra Tiger Rag er i gang |
fpp -c stopp |
fpp -P "$ {DaySong2}" |
fi |
#SISTE SANG KJØRER - SPILL STANDBY |
elif ["$ PLAYLIST" == "$ Song2Playlist"]; deretter |
#Natt - spill standby på loop |
hvis [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; da |
ekko Spiller standby ved gjentagelse |
fpp -c stopp |
fpp -p "$ {NightStandby}" |
#Dag eller virkelig sent - spill standby en gang |
ellers |
ekko Spiller Standby en gang |
fpp -c stopp |
fpp -P "$ {DayStandby}" |
fi |
ellers |
ekko Av en eller annen grunn ble den siste elsekasen utført. |
fpp -c stopp |
fpp -P "$ {DaySong1}" |
fi |
;; |
esac |
se rawButtonSuperScript.sh hostet av ❤ av GitHub
Trinn 5: (Valgfritt) Frontplate for knappen
Jeg har tilgang til en laserskærer på Clemson gjennom Makerspace, så jeg tegnet raskt opp et design for å kutte+etse. Det er et hull i midten for knappen min, ordene sier "Push Me" i en julefont og et snøfnugg rundt knappen. Jeg sprayet litt trehvitt og dekket det deretter med maskeringstape (slik at laserskjæreren ikke svir deler jeg ikke vil ha etset). Filen jeg brukte er vedlagt.