Índice:
- Etapa 1: Lista de peças
- Etapa 2: Diagrama de fiação
- Etapa 3: Configuração básica do Falcon Pi Player
- Etapa 4: um script mais robusto
- Etapa 5: (opcional) painel frontal para o botão
Vídeo: Comece seu show de luzes de Natal com um botão: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Ao executar um show de luzes de Natal sincronizado com a música, você pode iniciar o show pressionando um botão. Este tutorial é aplicável apenas para um show que é controlado pelo Falcon Pi Player (FPP) rodando em um Raspberry Pi. Se você estiver executando FPP, provavelmente está usando controladores Falcon e xLights ou LightORama para sequenciar seu show. Se nenhuma dessas palavras significar algo para você, este tutorial provavelmente está um pouco além da sua cabeça por agora e você deve começar lendo este wiki https://auschristmaslighting.com/wiki/ e ingressar em um grupo do Facebook como abaixo
- xLights:
- Luzes de natal avançadas gerais:
- Falcon Pi Player:
- Compartilhamento de ideias de anexos / objetos:
- "Não especificamente relacionado a xLights ou LOR":
- Fornecedores do xLights Holiday Light:
- Natal do It Yourself:
Etapa 1: Lista de peças
Você precisará dos seguintes itens:
- Um botão. Eu usei este com um anel de luz LED ao redor: [Amazon]
- Um resistor. De preferência 200Ω ou mais (2 destes se você estiver usando o botão LED) Padrão 1 / 4W ou 1 / 8W é bom
- Fio do conector. O medidor que você deve usar depende da distância que o botão estará do seu Pi. Usei fio de 18awg por cerca de 10 pés do meu Pi e funcionou perfeitamente
- Uma maneira de conectar um fio aos pinos GPIO do Pi. Você pode usar um cabo de fita com a placa de ensaio breakout ou pode apenas usar alguns conectores fêmeas, como eu fiz. Precisamos apenas de 3 fios - aterramento, 5V e dados para o botão. [Amazonas]
- (Opcional) Um conector à prova d'água em cada extremidade para fácil manutenção. Eu uso conectores de grau marítimo de 3 pinos: [Amazon]
- (Opcional) Conectores de extremidade termorretráteis [Amazon]
Etapa 2: Diagrama de fiação
As imagens mostram um diagrama de fiação para um botão sem um LED incluído e um botão com um LED. A maneira como eu configurei o diagrama de fiação permite que você execute um botão e uma luz (continuamente acesa) com apenas 3 fios.
Para o pino GPIO, escolha qualquer um dos pinos GPIO no pi. Use os pinos de + 5V e Gnd também. Você provavelmente poderia se safar usando o pino de 3,3 V, mas a queda de tensão em vários metros de fio pode tornar o sinal não confiável ou não ser suficiente para acender o LED.
NOTA: O conector de 3 pinos não se encaixará no orifício que você precisa para perfurar um botão com a luz anelar de LED. Portanto, conecte o conector depois de colocar o botão no painel frontal.
Etapa 3: Configuração básica do Falcon Pi Player
NOTA - O FPP está em constante atualização e é totalmente possível que eles melhorem seu suporte a scripts ou que incluam o "botão para iniciar" como um recurso padrão que requer menos programação.
Eu segui o vídeo acima para inicialmente ter tudo configurado.
Acho os vídeos chatos e lentos, então aqui está um resumo deles:
- Importe sua sequência para fpp usando o gerenciador de arquivos
- Crie uma lista de reprodução com a sequência nela. Para as próximas etapas, a lista de reprodução será chamada de "playme"
-
Abra um arquivo de bloco de notas em branco e digite o seguinte:
- #! / bin / sh
- fpp -P playme
- Salve-o como um arquivo.sh no seu computador
- Vá para o gerenciador de arquivos no FPP e carregue seu arquivo de script. Vá para a guia "Scripts" e certifique-se de que está lá
- Em Status / Controle, vá para Eventos
- Crie um novo evento. ID de evento 1/1, nome de evento qualquer, sequência de efeito NENHUMA, script de evento
- Vá em Configuração de entrada / saída e clique em gatilhos GPIO
- Alterne o pino ao qual seu botão está anexado. Se for baixo quando você pressionar o botão, coloque o evento na opção Falling, se estiver ativo alto, coloque o evento em Rising.
- Clique no botão Reiniciar ao lado do aviso que aparece depois de você fazer todas as alterações
Depois de fazer tudo isso, você deve ser capaz de pressionar o botão para iniciar o show. Uau!
No entanto, esse método tem algumas limitações. Se você pressionar o botão novamente durante a reprodução da lista de reprodução, 1) não fará nada ou 2) travará o FPP e se recusará a fazer qualquer coisa com o botão até que você o reinicie. Portanto, se você estiver usando um botão como uma forma dramática de reproduzir seu show no comando, o método acima será tudo que você precisa.
Se você precisar de algo mais, continue na próxima etapa
Etapa 4: um script mais robusto
Abaixo está o script que finalmente cheguei. Você pode ver o script no Github aqui: [Gist. Github]
- Se alguém apertar o botão durante as horas “noturnas”, tocará Tiger Rag (minha Song1) e então irá para a sequência de espera que faz um loop infinito.
- Se o botão for pressionado enquanto Tiger Rag estiver tocando, ele iniciará minha segunda música, Hallelujah, e então irá para a sequência de espera indefinidamente.
- Mas se alguém apertar o botão durante o dia ou muito tarde da noite, tocará Tiger Rag uma vez e apagará todas as luzes.
Isso permite que o botão funcione a qualquer hora do dia, mas as luzes não precisam estar acesas o tempo todo. Também permite que várias músicas sejam reproduzidas a partir de 1 botão, identificando qual música está tocando no momento, encerrando essa música e tocando a "próxima" música.
Você pode encontrar mais recursos para scripts em FPP aqui: https://github.com/FalconChristmas/fpp-scriptsPara uma lógica mais complicada, basta pesquisar no Google “script bash _” onde sublinhado é o que você está tentando fazer. Você pode testar seus scripts usando o Shell FPP (nome de usuário fpp senha falcon) Os comandos básicos são os seguintes.
Preste atenção à capitalização !!
- -P maiúsculo irá reproduzir uma lista de reprodução uma vez, -p minúsculo irá repeti-lo.
- fpp -v 66 Definir o volume para 66%
- fpp -c stop Pare o show imediatamente
- fpp -C stop Isso pode ser uma exibição de parada graciosa
- fpp -p thisPlaylistName Reproduz thisPlaylistName na repetição (então a música de introdução toca uma vez, então o material principal será repetido indefinidamente.
- fpp -P thisPlaylistName Reproduz thisPlaylistName uma vez
- eventScript "$ {MEDIADIR} / scripts / $ {thisScriptVariable}" Executa um script. No caso à esquerda, ele funciona se você tiver o nome do seu script salvo em uma variável em algum lugar acima, como thisScriptVariable =”PlayTheSong.sh”
ButtonSuperScript.sh
#! / bin / sh |
########################################################### |
#Para ser executado se o botão for pressionado. |
#Você deve ter duas listas de reprodução para cada música - uma com |
# apenas a música como "Primeira reprodução" e nada no principal, |
# e outro com a música como primeira reprodução e seu modo de espera |
# sequência como a sequência "Principal". (Pelo menos se você quiser |
# para fazer exatamente o que estou fazendo) |
# |
# Por exemplo, se sua música é Tiger Rag, você deve ter |
# playlists "TigerRag", "TigerRagStandby" e "Standby" |
# |
########################################################### |
# Playlists a serem executadas se estiver entre 6 e 11 |
NightSong1 = "TigerRagStandby" |
NightSong2 = "HallelujahStandby" |
NightStandby = "Standby" |
# Playlists para executar durante o dia ou após 11 |
DaySong1 = "TigerRag" |
DaySong2 = "Aleluia" |
DayStandby = "Espera" |
# Horários ligados e desligados em formato de 24 horas. Se você quiser minutos boa sorte |
OnHour = 17 |
OffHour = 23 |
########################################################### |
# Entranhas do script. # |
########################################################### |
# Obtenha nosso status atual (IDLE = 0, PLAYING = 1, Stop Gracefully = 2) |
STATUS = $ (fpp -s | cut -d ',' -f2) |
# Obtenha a lista de reprodução em execução e corte para 7 letras |
PLAYLIST = $ (fpp -s | cut -d ',' -f4 | cut -c1-7) |
#Este será "ambos" se estiver tocando uma música e "sequência" se estiver em espera |
# usado para determinar se a sequência de espera está em execução |
STANDBYSTRING = $ (fpp -s | cut -d ',' -f5) |
#Primeiras 7 letras dos nomes das listas de reprodução para comparação |
#Só 7 letras para que "Song1Standby" e "Song1" sejam idênticos |
# Ok, então na verdade devem ser as primeiras x letras ex deve ser o nome de música mais curto que você tem |
StandbyPlaylist = $ (echo $ NightStandby | cut -c1-7) |
Song1Playlist = $ (echo $ NightSong1 | cut -c1-7) |
Song2Playlist = $ (echo $ NightSong2 | cut -c1-7) |
STARTITEM = "" |
#Obter a hora atual no horário militar |
CurrentHour = $ (data + "% H") |
# Imprimir o status de algumas coisas - "echo" é como "imprimir" na maioria das línguas |
#Útil para testar se várias coisas foram cortadas ou calculadas corretamente |
echo CurrentHour é $ CurrentHour |
A lista de reprodução em execução da echo é: $ PLAYLIST |
echo Song2Playlist é: $ Song2Playlist |
echo Status é: $ STATUS |
#Defina o volume para 80% à noite, 100% caso contrário |
# Então, se eu estou dormindo, não é tão barulhento |
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; então |
# fpp -v 100 |
#outro |
# fpp -v 80 |
#fi |
# Verifique se temos algo significativo |
if [-z "$ {STATUS}"]; então |
echo "Erro com valor de status"> & 2 |
saída 1 |
fi |
# Agir no status atual |
caso $ {STATUS} em |
# OCIOSO |
0) |
#Night time - reproduz Song1 com standby |
if [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; então |
echo Playing NightSong1 |
fpp -c stop |
fpp -p "$ {NightSong1}" $ {STARTITEM} |
#Dia ou muito tarde - toque a música 1 uma vez e apague as luzes |
outro |
echo Playing DaySong1 |
fpp -c stop |
fpp -P "$ {DaySong1}" $ {STARTITEM} |
fi |
;; |
# TOCANDO ou PARANDO GRACEFULLY (normalmente acontece se o botão for pressionado quando uma lista de reprodução programada estiver terminando) |
1 | 2) |
#Standby está em execução - isso funciona porque o modo de espera é minha única sequência sem mídia |
if ["$ STANDBYSTRING" == "seqüência"]; então |
#Night time - reproduz Song1 com standby |
if [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; então |
echo Playing NightSong1 para a noite |
fpp -c stop |
fpp -p "$ {NightSong1}" |
#Dia ou muito tarde - brinque de tigre uma vez e apague as luzes |
outro |
echo PlayingDaySong1 de jogar |
fpp -c stop |
fpp -P "$ {DaySong1}" |
fi |
#Para oferecer suporte a mais músicas, copie esta seção e altere "Song2Playlist" na última seção para Song # Playlist |
# Song1 está em execução |
elif ["$ PLAYLIST" == "$ Song1Playlist"]; em seguida |
# Hora da noite - jogue Aleluia com o modo de espera |
if [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; então |
echo Playing HallelujahStandby de Tiger Rag está em execução |
fpp -c stop |
fpp -p "$ {NightSong2}" |
#Dia ou muito tarde - toque a Song2 uma vez e apague as luzes |
outro |
echo Playing Hallelujah uma vez de Tiger Rag está em execução |
fpp -c stop |
fpp -P "$ {DaySong2}" |
fi |
#ÚLTIMA CANÇÃO ESTÁ RODANDO - TOQUE EM ESPERA |
elif ["$ PLAYLIST" == "$ Song2Playlist"]; em seguida |
# Hora da noite - reproduz em modo de espera em loop |
if [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; então |
echo Tocando em espera ao repetir |
fpp -c stop |
fpp -p "$ {NightStandby}" |
#Dia ou muito tarde - reproduza o modo de espera uma vez |
outro |
echo Tocando em espera uma vez |
fpp -c stop |
fpp -P "$ {DayStandby}" |
fi |
outro |
echo Por algum motivo, o último elsecase executado. |
fpp -c stop |
fpp -P "$ {DaySong1}" |
fi |
;; |
esac |
veja rawButtonSuperScript.sh hospedado com ❤ por GitHub
Etapa 5: (opcional) painel frontal para o botão
Eu tenho acesso a um cortador a laser em Clemson através do Makerspace, então eu rapidamente esbocei um design para cortar + gravar. Há um buraco no meio para meu botão, as palavras dizem "Push Me" em uma fonte de Natal e um floco de neve ao redor do botão. Eu pintei um pouco de madeira de branco e cobri com fita adesiva (para que o cortador a laser não queime partes que não quero gravadas). O arquivo que usei está anexado.
Recomendado:
Show de luzes de natal sincronizado com música !: 4 etapas
Show de luzes de natal sincronizado com música !: Neste instrutível, vou mostrar como fazer um show de luzes de natal sincronizado com música de Natal usando pixels RGB. Não deixe esse nome te assustar! Não é muito difícil aprender a fazer isso. Vou avisá-lo que isso pode ser bastante
Botão inteligente Wi-Fi alimentado por bateria para controlar as luzes HUE: 5 etapas (com imagens)
Botão inteligente Wi-Fi alimentado por bateria para controlar as luzes HUE: Este projeto demonstra como construir um botão Wi-Fi IoT alimentado por bateria em menos de 10 min. O botão controla as luzes HUE sobre o IFTTT. Hoje você pode construir dispositivos eletrônicos e conectá-los a outros dispositivos domésticos inteligentes literalmente em minutos. O que é
Microcontrolador AVR. Alterne os LEDs usando um botão de pressão. Botão Debouncing: 4 etapas
Microcontrolador AVR. Alterne os LEDs usando uma chave de botão. Push Button Debouncing: Nesta seção, aprenderemos como fazer o código do programa C para ATMega328PU para alternar o status dos três LEDs de acordo com a entrada de uma chave de botão. Além disso, exploramos uma solução para o problema de ‘Switch Bounce’. Como de costume, nós teremos
Comece seu primeiro projeto com framboesa: LED piscando: 4 etapas
Comece seu primeiro projeto com Raspberry: LED piscando: Neste projeto, vou mostrar como programar Raspberry Pi para fazer um LED piscar. Se você quase comprou um Raspberry pi e não sabe nada por onde começar, isso tutorial ele se encaixa. Além do Raspberry Pi executando Raspbian, y
Caixa de Natal: Arduino / ioBridge Luzes de Natal controladas pela Internet e show de música: 7 etapas
Xmas-box: Arduino / ioBridge Luzes de Natal e show de música controlados pela Internet: Meu projeto de caixa de natal consiste em um show de luzes e música de Natal controlado pela Internet. Uma canção de Natal pode ser solicitada on-line, a qual é colocada em uma fila e reproduzida na ordem em que foi solicitada. A música é transmitida em um FM stat