Sommario:

Inizia il tuo spettacolo di luci di Natale con un pulsante: 5 passaggi
Inizia il tuo spettacolo di luci di Natale con un pulsante: 5 passaggi

Video: Inizia il tuo spettacolo di luci di Natale con un pulsante: 5 passaggi

Video: Inizia il tuo spettacolo di luci di Natale con un pulsante: 5 passaggi
Video: Il mio inatteso Principe di Natale - Film Ita Completo 2024, Luglio
Anonim
Inizia il tuo spettacolo di luci di Natale con un pulsante
Inizia il tuo spettacolo di luci di Natale con un pulsante

Quando esegui uno spettacolo di luci natalizie sincronizzato con la musica, potresti voler avviare lo spettacolo premendo un pulsante. Questo tutorial è applicabile solo a uno spettacolo controllato tramite Falcon Pi Player (FPP) in esecuzione su un Raspberry Pi. Se stai eseguendo FPP, probabilmente stai usando i controller Falcon e usando xLights o LightORama per mettere in sequenza il tuo spettacolo. Se nessuna di queste parole significa qualcosa per te, questo tutorial è probabilmente un po' sopra la tua testa per ora e dovresti iniziare leggendo questo wiki https://auschristmaslighting.com/wiki/ e unendoti a un gruppo Facebook come di seguito

  • xLights:
  • Luci di Natale avanzate generali:
  • Giocatore Falcon Pi:
  • Condivisione di idee di allegato/prop:
  • "Non specificamente xLights o correlato a LOR":
  • Venditori di luci natalizie xLights:
  • Natale fai da te:

Passaggio 1: elenco delle parti

Avrai bisogno dei seguenti elementi:

  • Un bottone. Ho usato questo con una luce ad anello a LED intorno: [Amazon]
  • Un resistore. Preferibilmente 200 o più (2 di questi se si utilizza il pulsante LED) Standard 1/4 W o 1/8 W va bene
  • Cavo del connettore. L'indicatore che dovresti usare dipende da quanto sarà lontano il pulsante dal tuo Pi. Ho usato un cavo da 18 awg per circa 10 piedi dal mio Pi e ha funzionato perfettamente
  • Un modo per collegare un cavo ai pin GPIO del Pi. Puoi usare un cavo a nastro con la breadboard breakout, oppure puoi semplicemente usare alcuni connettori femmina come ho fatto io. Abbiamo solo bisogno di 3 fili: terra, 5V e dati per il pulsante. [Amazzonia]
  • (Opzionale) Un connettore impermeabile su ciascuna estremità per una facile manutenzione. Uso connettori marini a 3 pin: [Amazon]
  • (Opzionale) Connettori di testa termoretraibili [Amazon]

Passaggio 2: schema elettrico

Schema elettrico
Schema elettrico
Schema elettrico
Schema elettrico
Schema elettrico
Schema elettrico
Schema elettrico
Schema elettrico

Le immagini mostrano uno schema elettrico per un pulsante senza LED incluso e un pulsante con LED. Il modo in cui ho impostato lo schema elettrico consente di far funzionare un pulsante e una luce (continuamente accesi) con soli 3 fili.

Per il pin GPIO, scegli uno dei pin GPIO sul pi. Usa anche i pin +5V e Gnd. Probabilmente potresti cavartela usando il pin da 3,3 V, ma la caduta di tensione su diversi piedi di filo potrebbe rendere il segnale inaffidabile o non essere sufficiente per accendere il LED.

NOTA: il connettore a 3 pin non entrerà nel foro necessario per praticare un pulsante con la luce anulare a LED. Quindi collegare il connettore dopo aver inserito il pulsante nel frontalino.

Passaggio 3: configurazione di base del lettore Falcon Pi

NOTA - FPP viene costantemente aggiornato ed è del tutto possibile che migliorino il supporto per gli script o che includano il "pulsante per iniziare" come funzionalità predefinita che richiede meno programmazione.

Ho seguito il video sopra per aver inizialmente impostato tutto.

Trovo i video noiosi e lenti, quindi ecco un riassunto:

  • Importa la tua sequenza in fpp usando il file manager
  • Crea una playlist con la sequenza al suo interno. Per i passaggi successivi la playlist si chiamerà "playme"
  • Apri un file di blocco note vuoto e digita quanto segue:

    • #!/bin/sh
    • fpp -P playme
  • Salvalo come file.sh sul tuo computer
  • Vai al file manager in FPP e carica il tuo file di script. Vai alla scheda "Script" e assicurati che sia lì
  • Sotto Stato/Controllo vai su Eventi
  • Crea un nuovo evento. ID evento 1/1, nome evento qualunque, sequenza effetto NESSUNO, script evento
  • Vai in Input/Output Setup e fai clic su trigger GPIO
  • Attiva o disattiva il pin a cui è collegato il pulsante. Se scenderà quando premi il pulsante, metti l'evento sull'opzione Falling, se è attivo alto, metti l'evento su Rising.
  • Fai clic sul pulsante Riavvia in corrispondenza dell'avviso visualizzato dopo aver apportato tutte le modifiche

Dopo aver fatto tutto questo, dovresti essere in grado di premere il pulsante per avviare il tuo spettacolo. Woooh!

Tuttavia, questo metodo presenta alcune limitazioni. Se premi di nuovo il pulsante mentre la playlist è in corso, 1) non farà nulla o 2) andrà in crash FPP e si rifiuterà di fare qualsiasi cosa con il tuo pulsante fino a quando non lo riavvierai. Quindi, se stai solo usando un pulsante come un modo drammatico per riprodurre il tuo spettacolo a comando, il metodo sopra sarà tutto ciò di cui hai bisogno.

Se hai bisogno di qualcosa in più, vai al passaggio successivo

Passaggio 4: uno script più robusto

Di seguito è riportato lo script a cui alla fine sono arrivato. Puoi visualizzare lo script su Github qui: [Gist. Github]

  • Se qualcuno preme il pulsante durante le ore "notturne", riprodurrà Tiger Rag (la mia canzone1) e poi passerà alla sequenza di standby che si ripete all'infinito.
  • Se il pulsante viene premuto mentre Tiger Rag sta suonando, inizia la mia seconda canzone, Hallelujah, e poi passerà alla sequenza di attesa indefinitamente.
  • Ma se qualcuno preme il pulsante durante il giorno o molto a tarda notte, suonerà Tiger Rag una volta e poi spegnerà tutte le luci.

Ciò consente al pulsante di funzionare in qualsiasi momento della giornata, ma le luci non devono essere sempre accese. Consente inoltre di riprodurre più brani da 1 pulsante identificando quale brano è attualmente in riproduzione, terminando quel brano e riproducendo il brano "successivo".

Puoi trovare più risorse per lo scripting in FPP qui: https://github.com/FalconChristmas/fpp-scriptsPer una logica più complicata basta cercare su Google "script bash _" dove il carattere di sottolineatura è ciò che stai cercando di fare. Puoi testare i tuoi script usando la shell FPP (nome utente fpp password falcon) I comandi di base sono i seguenti.

Attenzione alle maiuscole!!

  • La -P maiuscola riprodurrà una playlist una volta, la -p minuscola la ripeterà.
  • fpp -v 66 Imposta il volume al 66%
  • fpp -c stop Interrompe immediatamente lo spettacolo
  • fpp -C stop Questo potrebbe essere stop show con grazia
  • fpp -p thisPlaylistName Riproduce thisPlaylistName a ripetizione (quindi la canzone intro viene riprodotta una volta, quindi la parte principale verrà ripetuta indefinitamente.
  • fpp -P thisPlaylistName Riproduce thisPlaylistName una volta
  • eventScript "${MEDIADIR}/scripts/${thisScriptVariable}" Esegue uno script. Nel caso a sinistra funziona se hai il nome del tuo script salvato in una variabile da qualche parte sopra, come thisScriptVariable="PlayTheSong.sh"

ButtonSuperScript.sh

#!/bin/sh
###########################################################
#Da eseguire se si preme il pulsante.
#Dovresti avere due playlist per ogni canzone, una con
# solo la canzone come "Prima esecuzione" e niente in principale,
# e un altro con la canzone come prima riproduzione e il tuo standby
# sequenza come sequenza "Principale". (almeno se vuoi
# per fare esattamente quello che sto facendo)
#
#Ad esempio, se la tua canzone è Tiger Rag, avresti dovuto
# playlist "TigerRag", "TigerRagStandby" e "Standby"
#
###########################################################
# Playlist da eseguire se è compresa tra 6 e 11
NightSong1="TigerRagStandby"
NightSong2="HallelujahStandby"
NightStandby="Standby"
# Playlist da eseguire durante il giorno o dopo le 11
DaySong1="TigerRag"
DaySong2="Alleluia"
DayStandby="Attesa"
#Accensione e spegnimento nelle 24 ore. Se vuoi minuti, buona fortuna
OnHour=17
Ora di riposo = 23
###########################################################
# Il coraggio della sceneggiatura. #
###########################################################
# Ottieni il nostro stato attuale (IDLE=0, PLAYING=1, Stopping Gracely=2)
STATUS=$(fpp -s | cut -d', ' -f2)
#Ottieni la playlist in esecuzione e taglia a 7 lettere
PLAYLIST=$(fpp -s | cut -d', ' -f4 | cut -c1-7)
#Questo sarà "entrambi" se sta riproducendo una canzone e "sequenza" se è in standby
#usato per determinare se la sequenza di standby è in esecuzione
STANDBYSTRING=$(fpp -s | cut -d', ' -f5)
#Le prime 7 lettere dei nomi delle playlist per il confronto
#Solo 7 lettere in modo che "Song1Standby" e "Song1" siano identici
#Okay, quindi in realtà dovrebbero essere le prime x lettere e x dovrebbe essere il nome della canzone più corto che hai
StandbyPlaylist=$(echo $NightStandby| cut -c1-7)
Song1Playlist=$(echo $NightSong1| cut -c1-7)
Song2Playlist=$(echo $NightSong2| cut -c1-7)
STARTITEM=""
#Ottieni l'ora corrente in fuso orario militare
CurrentHour=$(data +"%H")
#Stampa lo stato di alcune cose - "echo" è come "print" nella maggior parte delle lingue
#Utile per verificare se varie cose sono state tagliate o calcolate correttamente
echo CurrentHour is $CurrentHour
echo La playlist in esecuzione è: $PLAYLIST
echo Song2Playlist è: $Song2Playlist
echo Lo stato è: $STATUS
#Imposta il volume all'80% di notte, altrimenti al 100%
#Così se sto dormendo non è così rumoroso
#if [$OraCorrente -lt $OraOff -a $OraCorrente -ge 11]; poi
# fpp -v 100
#altro
# fpp -v 80
#fi
# Verifica di aver ottenuto qualcosa di significativo
if [-z"${STATO}"];allora
echo"Errore con il valore di stato">&2
uscita 1
fi
# Agire sullo stato attuale
caso${STATUS}in
# OZIARE
0)
#Notte - riproduci Song1 in standby
if [$OraCorrente-lt$OraOff-a$OraCorrente-ge$OraAttiva];then
echo Riproduzione di NightSong1
fpp -c stop
fpp -p "${NightSong1}"${STARTITEM}
#Di giorno o molto tardi: riproduci il brano 1 una volta e poi spegni le luci
altro
echo Riproduzione di DaySong1
fpp -c stop
fpp -P "${DaySong1}"${STARTITEM}
fi
;;
# PLAYING o STOPPING GRACEFULLY (si verifica con grazia se il pulsante viene premuto quando una playlist pianificata sta finendo)
1 | 2)
#Standby è in esecuzione: funziona perché lo standby è la mia unica sequenza non multimediale
if ["$STANDBYSTRING"=="sequenza"];then
#Notte - riproduci Song1 in standby
if [$OraCorrente-lt$OraOff-a$OraCorrente-ge$OraAttiva];then
echo Riproduzione di NightSong1 per la notte
fpp -c stop
fpp -p "${NightSong1}"
#Di giorno o molto tardi: gioca a Tiger Rag una volta e poi spegni le luci
altro
echo PlayingDaySong1 dalla riproduzione
fpp -c stop
fpp -P "${DaySong1}"
fi
#Per supportare più canzoni, copia questa sezione e cambia "Song2Playlist" nell'ultima sezione in Song#Playlist
#Song1 è in esecuzione
elif ["$PLAYLIST"=="$Song1Playlist"];then
#Night time - gioca ad Hallelujah con standby
if [$OraCorrente-lt$OraOff-a$OraCorrente-ge$OraAttiva];then
echo La riproduzione di HallelujahStandby di Tiger Rag è in esecuzione
fpp -c stop
fpp -p "${NightSong2}"
#Di giorno o molto tardi: riproduci Song2 una volta e poi spegni le luci
altro
echo Suonare l'Alleluia una volta da Tiger Rag sta correndo
fpp -c stop
fpp -P "${DaySong2}"
fi
#LAST SONG È IN CORSO - PLAY STANDBY
elif ["$PLAYLIST"=="$Song2Playlist"];then
#Notte - riproduci in standby in loop
if [$OraCorrente-lt$OraOff-a$OraCorrente-ge$OraAttiva];then
echo Riproduzione in standby su ripetizione
fpp -c stop
fpp -p "${NightStandby}"
#Di giorno o molto tardi: gioca in standby una volta
altro
echo Riproduzione in standby una volta
fpp -c stop
fpp -P "${DayStandby}"
fi
altro
echo Per qualche ragione è stato eseguito l'ultimo elsecase.
fpp -c stop
fpp -P "${DaySong1}"
fi
;;
esac

visualizza rawButtonSuperScript.sh ospitato con ❤ da GitHub

Passaggio 5: mascherina (opzionale) per il pulsante

Ho accesso a un laser cutter presso Clemson tramite Makerspace, quindi ho rapidamente abbozzato un progetto per tagliare e incidere. C'è un buco nel mezzo per il mio bottone, le parole dicono "Push Me" in un font natalizio e un fiocco di neve intorno al bottone. Ho verniciato a spruzzo del legno bianco e poi l'ho coperto con del nastro adesivo (in modo che il laser cutter non bruci le parti che non voglio incidere). Il file che ho usato è allegato.

Consigliato: