Taula de continguts:

Comenceu el vostre espectacle de llum de Nadal amb un botó: 5 passos
Comenceu el vostre espectacle de llum de Nadal amb un botó: 5 passos

Vídeo: Comenceu el vostre espectacle de llum de Nadal amb un botó: 5 passos

Vídeo: Comenceu el vostre espectacle de llum de Nadal amb un botó: 5 passos
Vídeo: САМАЯ СТРАШНАЯ УСАДЬБА / ЭТО ВИДЕО МОГЛО СТАТЬ ПОСЛЕДНИМ НА КАНАЛЕ TOPPI 2024, Desembre
Anonim
Comenceu el vostre espectacle de llum de Nadal amb un botó
Comenceu el vostre espectacle de llum de Nadal amb un botó

Quan executeu un espectacle de llums de Nadal sincronitzat amb música, és possible que vulgueu iniciar el programa prement un botó. Aquest tutorial només és aplicable a un programa que es controla mitjançant Falcon Pi Player (FPP) que s’executa en un Raspberry Pi. Si feu servir FPP, probablement utilitzeu controladors Falcon i feu servir xLights o LightORama per seqüenciar el vostre programa. Si cap d'aquestes paraules no significa res per a vosaltres, aquest tutorial probablement us estigui una mica per sobre i ara hauríeu de començar llegint aquest wiki https://auschristmaslighting.com/wiki/ i unir-vos a un grup de Facebook com a continuació.

  • xLights:
  • Llums de Nadal avançades generals:
  • Falcon Pi Player:
  • Compartiment d'idees de recintes / accessoris:
  • "No està específicament relacionat amb xLights ni LOR":
  • Venedors de xLights Holiday Light:
  • Fes-ho tu mateix Nadal:

Pas 1: llista de peces

Necessitareu els elements següents:

  • Un botó. L’he utilitzat amb una llum anell LED al voltant: [Amazon]
  • Una resistència. Preferiblement 200 Ω o superior (2 d’aquests si utilitzeu el botó LED) Estàndard 1 / 4W o 1 / 8W està bé
  • Cable del connector. L'indicador que heu d'utilitzar depèn de la distància del botó del vostre Pi. He utilitzat filferro de 18awg a uns 10 peus del meu Pi i ha funcionat perfectament
  • Una manera de connectar un cable als pins GPIO del Pi. Podeu utilitzar un cable de cinta amb el tauler de presentació o només podeu utilitzar alguns connectors femenins com jo. Només necessitem 3 cables: terra, 5 V i dades per al botó. [Amazon]
  • (Opcional) Un connector impermeable a cada extrem per facilitar el manteniment. Faig servir connectors marins de 3 pins: [Amazon]
  • (Opcional) Connectors termoencongibles [Amazon]

Pas 2: Esquema de cablejat

Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat
Esquema de cablejat

Les imatges mostren un esquema de cablejat per a un botó sense LED inclòs i un botó amb LED. La forma en què he configurat el diagrama de cablejat us permet executar un botó i un llum (encès contínuament) amb només 3 cables.

Per al pin GPIO, trieu qualsevol dels pins GPIO del pi. Utilitzeu també els pins + 5V i Gnd. Probablement es podria sortir amb l’ús del pin de 3,3 V, però la caiguda de tensió a través de diversos peus de cable pot fer que el senyal no sigui fiable o no sigui suficient per encendre el LED.

NOTA: El connector de 3 pins no s'adaptarà al forat que necessiteu per foradar un botó amb la llum LED de l'anell. Per tant, connecteu el connector després de posar el botó a la placa frontal.

Pas 3: Configuració bàsica del reproductor Falcon Pi

NOTA: FPP s’actualitza constantment i és totalment possible que millorin el seu suport de seqüències d’ordres o que incloguin “botó d’inici” com a característica per defecte que requereixi menys programació.

Vaig seguir el vídeo anterior per configurar-ho inicialment.

Trobo que els vídeos són avorrits i lents, així que aquí teniu un resum:

  • Importeu la seqüència a fpp mitjançant el gestor de fitxers
  • Creeu una llista de reproducció amb la seqüència. Per als passos següents, la llista de reproducció es dirà "playme"
  • Obriu un fitxer de bloc de notes en blanc i escriviu el següent:

    • #! / bin / sh
    • fpp -P playme
  • Deseu-lo com a fitxer.sh a l'ordinador
  • Aneu al gestor de fitxers a FPP i pengeu el fitxer de script. Aneu a la pestanya "Scripts" i assegureu-vos que hi sigui
  • A Estat / control, aneu a Esdeveniments
  • Crea un esdeveniment nou. Identificador d’esdeveniment 1/1, nom de l’esdeveniment, Seqüència d’efectes CAP, script d’esdeveniment
  • Aneu a Configuració d’entrada / sortida i feu clic a Activadors GPIO
  • Commuta el pin al qual està connectat el botó. Si baixarà quan premeu el botó, poseu l'esdeveniment a l'opció Falling, si està activat, poseu l'esdeveniment a Rising.
  • Feu clic al botó Reinicia per l'avís que apareix després de fer tots els canvis

Després de fer tot això, hauríeu de poder prémer el botó per iniciar el vostre programa. Woohoo!

No obstant això, aquest mètode té algunes limitacions. Si torneu a prémer el botó mentre la llista de reproducció funciona, 1) no farà res o 2) fallarà FPP i es negarà a fer res amb el botó fins que no el reinicieu. Per tant, si només utilitzeu un botó com a manera dramàtica de reproduir el vostre programa per ordre, el mètode anterior serà tot el que necessiteu.

Si necessiteu alguna cosa més, continueu amb el següent pas

Pas 4: un guió més robust

A continuació es mostra el guió al qual vaig arribar finalment. Podeu veure el guió a Github aquí: [Gist. Github]

  • Si algú prem el botó durant les hores "nocturnes", reproduirà Tiger Rag (la meva cançó 1) i després anirà a la seqüència d'espera que fa un bucle infinit.
  • Si es prem el botó mentre es reprodueix Tiger Rag, comença la meva segona cançó, Hallelujah, i després passarà a la seqüència d'espera indefinidament.
  • Però si algú prem el botó durant el dia o molt a la nit, tocarà Tiger Rag una vegada i després apagarà tots els llums.

Això permet que el botó funcioni a qualsevol hora del dia, però no cal que els llums estiguin sempre encesos. També permet reproduir diverses cançons des d’un botó identificant quina cançó s’està reproduint actualment, acabant aquesta cançó i reproduint la cançó “següent”.

Podeu trobar més recursos per crear scripts a FPP aquí: https://github.com/FalconChristmas/fpp-scripts Per obtenir una lògica més complicada, només cal que feu servir google “bash script _”, on el subratllat és el que intenteu fer. Podeu provar els vostres scripts amb FPP Shell (nom d'usuari fpp password falcon) Les ordres bàsiques són les següents.

Preste atenció a les majúscules !!

  • Majúscula -P reproduirà una llista de reproducció una vegada, minúscula -p la repetirà.
  • fpp -v 66 Estableix el volum al 66%
  • fpp -c stop Atura el programa immediatament
  • fpp -C stop Això pot ser stop show amb gràcia
  • fpp -p thisPlaylistName Reprodueix thisPlaylistName quan es repeteix (de manera que la cançó d'introducció es reprodueix una vegada, les coses principals es repetiran indefinidament.
  • fpp -P thisPlaylistName Reprodueix thisPlaylistName una vegada
  • eventScript "$ {MEDIADIR} / scripts / $ {thisScriptVariable}" Executa un script. En el cas de l'esquerra, funciona si teniu el nom del script desat en una variable en algun lloc superior, com ara thisScriptVariable = "PlayTheSong.sh"

ButtonSuperScript.sh

#! / bin / sh
###########################################################
#Per executar-se si es prem el botó.
#Heu de tenir dues llistes de reproducció per a cada cançó, una amb
# només la cançó com a "Primera obra" i res principal,
# i una altra amb la cançó com a primera obra i el vostre mode d'espera
# seqüència com a seqüència "Principal". (Almenys si voleu
# per fer exactament el que estic fent)
#
# Per exemple, si la vostra cançó és Tiger Rag, hauríeu de tenir-ho
# llistes de reproducció "TigerRag", "TigerRagStandby" i "Standby"
#
###########################################################
# Llistes de reproducció per executar si és entre 6 i 11
NightSong1 = "TigerRagStandby"
NightSong2 = "HallelujahStandby"
NightStandby = "Espera"
# Llistes de reproducció per executar durant el dia o després de les 11
DaySong1 = "TigerRag"
DaySong2 = "Al·leluia"
DayStandby = "Espera"
# Horaris d'encesa i apagada en 24 hores. Si voleu minuts, molta sort
Hora = 17
Hora fora = 23
###########################################################
# Tripes del guió. #
###########################################################
# Obteniu el nostre estat actual (IDLE = 0, PLAYING = 1, Parant amb gràcia = 2)
ESTAT = $ (fpp -s | cut -d ',' -f2)
# Obteniu la llista de reproducció en curs i retalleu-la amb 7 lletres
LLISTA DE REPRODUCCIÓ = $ (fpp -s | cut -d ',' -f4 | cut -c1-7)
#Això serà "tots dos" si es reprodueix una cançó i "seqüència" si està en espera
#utilitzat per determinar si s’executa la seqüència d’espera
STANDBYSTRING = $ (fpp -s | cut -d ',' -f5)
#Primeres 7 lletres de noms de llistes de reproducció per comparar-les
#Només 7 lletres perquè "Song1Standby" i "Song1" siguin idèntics
#D’acord, així que en realitat haurien de ser les primeres x lletres i x hauria de ser el nom de cançó més curt que tingueu
StandbyPlaylist = $ (echo $ NightStandby | cut -c1-7)
Song1Playlist = $ (echo $ NightSong1 | cut -c1-7)
Song2Playlist = $ (echo $ NightSong2 | cut -c1-7)
STARTITEM = ""
#Obteniu l'hora actual en temps militar
Hora actual = $ (data + "% H")
#Imprimiu l'estat d'algunes coses: "eco" és com "imprimir" a la majoria d'idiomes
# Útil per provar si diverses coses es retallen o es calculen correctament
eco CurrentHour és $ CurrentHour
La llista de reproducció de echo Running és: $ PLAYLIST
echo Song2Playlist és: $ Song2Playlist
echo Status és: $ STATUS
# Estableix el volum al 80% a la nit, al 100% en cas contrari
#Així que si estic dormint no és tan fort
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; llavors
# fpp -v 100
#else
# fpp -v 80
#fi
# Comproveu que tenim alguna cosa significativa
si [-z "$ {STATUS}"], llavors
echo "Error amb el valor d'estat"> & 2
sortida 1
fi
# Actua sobre l'estat actual
majúscula $ {STATUS}
# OCIÓS
0)
#Night time: toca Song1 amb el mode d'espera
si [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour], llavors
eco Playing NightSong1
fpp -c stop
fpp -p "$ {NightSong1}" $ {STARTITEM}
# Hora del dia o molt tard: toqueu la cançó 1 una vegada i apagueu els llums
en cas contrari
eco Playing DaySong1
fpp -c stop
fpp -P "$ {DaySong1}" $ {STARTITEM}
fi
;;
# REPRODUCIR O DEIXAR DE SER GRACIAMENT (passa amb gràcia si es prem el botó quan finalitza una llista de reproducció programada)
1 | 2)
# Standby s'està executant: funciona perquè l'estat d'espera és la meva única seqüència no multimèdia
si ["$ STANDBYSTRING" == "seqüència"]; llavors
#Night time: toca Song1 amb el mode d'espera
si [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour], llavors
eco Reproducció de NightSong1 durant la nit
fpp -c stop
fpp -p "$ {NightSong1}"
# Hora del dia o molt tard: toca el drap de tigre una vegada i apaga els llums
en cas contrari
fer ressò de PlayingDaySong1 de jugar
fpp -c stop
fpp -P "$ {DaySong1}"
fi
#Per donar suport a més cançons, copieu aquesta secció i canvieu "Song2Playlist" de l'última secció a Song # Playlist
La cançó 1 s'està executant
elif ["$ PLAYLIST" == "$ Song1Playlist"]; després
#Night time: toca Al·leluia amb el mode d'espera
si [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour], llavors
echo Playing HallelujahStandby de Tiger Rag està funcionant
fpp -c stop
fpp -p "$ {NightSong2}"
#Day time o molt tard: toca Song2 una vegada i apaga els llums
en cas contrari
eco Jugant a Al·leluia una vegada de Tiger Rag està funcionant
fpp -c stop
fpp -P "$ {DaySong2}"
fi
#LAST SONG IS RUNNING - PLAY STANDBY
elif ["$ PLAYLIST" == "$ Song2Playlist"]; després
#Night time: reprodueix el mode d'espera en bucle
si [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour], llavors
eco Reproducció en espera en repetir
fpp -c stop
fpp -p "$ {NightStandby}"
# Hora del dia o molt tard: toca en espera una vegada
en cas contrari
eco Reproducció en espera una vegada
fpp -c stop
fpp -P "$ {DayStandby}"
fi
en cas contrari
eco Per alguna raó, es va executar l'últim elsecase.
fpp -c stop
fpp -P "$ {DaySong1}"
fi
;;
esac

veure rawButtonSuperScript.sh allotjat amb ❤ per GitHub

Pas 5: placa frontal (opcional) del botó

Tinc accés a un tallador làser a Clemson a través del Makerspace, de manera que vaig esbossar ràpidament un disseny per tallar + gravar. Hi ha un forat al mig per al meu botó, les paraules diuen "Empeny-me" amb una lletra de Nadal i un floc de neu al voltant del botó. Vaig pintar una mica de fusta de blanc amb esprai i després la vaig tapar amb cinta adhesiva (perquè el tallador làser no cremés parts que no vull gravar). S'adjunta el fitxer que he utilitzat.

Recomanat: