Innholdsfortegnelse:

Start julelysshowet med en knapp: 5 trinn
Start julelysshowet med en knapp: 5 trinn

Video: Start julelysshowet med en knapp: 5 trinn

Video: Start julelysshowet med en knapp: 5 trinn
Video: Рождественский видеоблог о путешествиях | Миртл-Бич, Южная Каролина (США) 🎄 2024, Juli
Anonim
Start julelysshowet ditt med en knapp
Start julelysshowet ditt med en knapp

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

Koblingsskjema
Koblingsskjema
Koblingsskjema
Koblingsskjema
Koblingsskjema
Koblingsskjema
Koblingsskjema
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.

Anbefalt: