Índice:

Comece seu show de luzes de Natal com um botão: 5 etapas
Comece seu show de luzes de Natal com um botão: 5 etapas

Vídeo: Comece seu show de luzes de Natal com um botão: 5 etapas

Vídeo: Comece seu show de luzes de Natal com um botão: 5 etapas
Vídeo: Fala pro teu PAI… 2024, Julho
Anonim
Comece seu show de luzes de Natal com um botão
Comece seu show de luzes de Natal com um botão

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

Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
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: