Tabla de contenido:

Comience su espectáculo de luces navideñas con un botón: 5 pasos
Comience su espectáculo de luces navideñas con un botón: 5 pasos

Video: Comience su espectáculo de luces navideñas con un botón: 5 pasos

Video: Comience su espectáculo de luces navideñas con un botón: 5 pasos
Video: los mejores bailes en America's Got Talent 2017 2024, Mes de julio
Anonim
Comience su espectáculo de luces navideñas con un botón
Comience su espectáculo de luces navideñas con un botón

Al ejecutar un espectáculo de luces navideñas sincronizado con música, es posible que desee iniciar el espectáculo presionando un botón. Este tutorial solo es aplicable para un programa que se controla a través de Falcon Pi Player (FPP) que se ejecuta en una Raspberry Pi. Si está ejecutando FPP, probablemente esté usando controladores Falcon y usando xLights o LightORama para secuenciar su programa. Si ninguna de esas palabras significa nada para ti, este tutorial probablemente te sobrepase un poco por ahora y deberías comenzar por leer este wiki https://auschristmaslighting.com/wiki/ y unirte a un grupo de Facebook como el que se muestra a continuación.

  • xLights:
  • Luces navideñas avanzadas generales:
  • Reproductor Falcon Pi:
  • Recinto / intercambio de ideas de utilería:
  • "No específicamente relacionado con xLights o LOR":
  • Proveedores de xLights Holiday Light:
  • Hágalo usted mismo Navidad:

Paso 1: Lista de piezas

Necesitará los siguientes elementos:

  • Un botón. Usé este con un anillo de luz LED alrededor: [Amazon]
  • Una resistencia. Preferiblemente 200Ω o más (2 de estos si está usando el botón LED) Estándar 1 / 4W o 1 / 8W está bien
  • Cable conector. El medidor que debe usar depende de qué tan lejos esté el botón de su Pi. Usé un cable de 18 awg a unos 10 pies de mi Pi y funcionó a la perfección
  • Una forma de conectar un cable a los pines GPIO de Pi. Puede usar un cable plano con la placa de prueba de ruptura, o simplemente puede usar algunos conectores hembra como lo hice yo. Solo necesitamos 3 cables: tierra, 5 V y datos para el botón. [Amazonas]
  • (Opcional) Un conector impermeable en cada extremo para un fácil mantenimiento. Utilizo conectores de grado marino de 3 pines: [Amazon]
  • (Opcional) Conectores a tope termorretráctiles [Amazon]

Paso 2: diagrama de cableado

Diagrama de cableado
Diagrama de cableado
Diagrama de cableado
Diagrama de cableado
Diagrama de cableado
Diagrama de cableado
Diagrama de cableado
Diagrama de cableado

Las imágenes muestran un diagrama de cableado para un botón sin LED incluido y un botón con LED. La forma en que configuré el diagrama de cableado le permite ejecutar un botón y una luz (continuamente encendida) con solo 3 cables.

Para el pin GPIO, elija cualquiera de los pines GPIO en el pi. Utilice también los pines + 5V y Gnd. Probablemente podría salirse con la suya usando el pin de 3.3V, pero la caída de voltaje en varios pies de cable puede hacer que la señal no sea confiable o no sea suficiente para encender el LED.

NOTA: El conector de 3 clavijas no encajará a través del orificio que necesita para perforar un botón con el anillo de luz LED. Así que conecte el conector después de colocar el botón en su placa frontal.

Paso 3: Configuración básica del Falcon Pi Player

NOTA: FPP se actualiza constantemente, y es totalmente posible que mejoren su soporte de scripting o que incluyan "presionar el botón para comenzar" como una característica predeterminada que requiere menos programación.

Seguí el video anterior para configurar todo inicialmente.

Los videos me parecen aburridos y lentos, así que aquí hay un resumen:

  • Importe su secuencia a fpp usando el administrador de archivos
  • Crea una lista de reproducción con la secuencia en ella. Para los siguientes pasos, la lista de reproducción se llamará "playme".
  • Abra un archivo de bloc de notas en blanco y escriba lo siguiente:

    • #! / bin / sh
    • fpp -P playme
  • Guárdelo como un archivo.sh en su computadora
  • Vaya al administrador de archivos en FPP y cargue su archivo de script. Vaya a la pestaña "Secuencias de comandos" y asegúrese de que esté allí
  • En Estado / Control, vaya a Eventos
  • Crea un nuevo evento. ID de evento 1/1, nombre de evento cualquiera, secuencia de efecto NINGUNA, secuencia de comandos de evento
  • Vaya a Configuración de entrada / salida y haga clic en Activadores GPIO
  • Cambie el pin al que está conectado su botón. Si bajará cuando presione el botón, coloque el evento en la opción Falling, si está activo alto, coloque el evento en Rising.
  • Haga clic en el botón Reiniciar junto a la advertencia que aparece después de realizar todos los cambios

Después de hacer todo esto, debería poder presionar el botón para que comience su programa. ¡Guau!

Sin embargo, este método tiene algunas limitaciones. Si presiona el botón nuevamente mientras la lista de reproducción está en marcha, 1) no hará nada o 2) bloqueará FPP y se negará a hacer nada con su botón hasta que lo reinicie. Entonces, si solo está usando un botón como una forma dramática de reproducir su programa en el comando, el método anterior será todo lo que necesita.

Si necesita algo más, continúe con el siguiente paso.

Paso 4: una secuencia de comandos más sólida

A continuación se muestra el guión al que finalmente llegué. Puedes ver el script en Github aquí: [Gist. Github]

  • Si alguien presiona el botón durante las horas "nocturnas", reproducirá Tiger Rag (mi Song1) y luego pasará a la secuencia de espera que se repite infinitamente.
  • Si se presiona el botón mientras se está reproduciendo Tiger Rag, comenzará mi segunda canción, Hallelujah, y luego pasará a la secuencia de espera indefinidamente.
  • Pero si alguien presiona el botón durante el día o muy tarde en la noche, jugará a Tiger Rag una vez y luego apagará todas las luces.

Esto permite que el botón funcione en cualquier momento del día, pero no es necesario que las luces estén encendidas todo el tiempo. También permite que se reproduzcan varias canciones desde 1 botón identificando qué canción se está reproduciendo actualmente, finalizando esa canción y reproduciendo la "siguiente" canción.

Puede encontrar más recursos para secuencias de comandos en FPP aquí: https://github.com/FalconChristmas/fpp-scripts Para una lógica más complicada, simplemente busque en Google "bash script _", donde el subrayado es lo que está tratando de hacer. Puede probar sus scripts usando FPP Shell (nombre de usuario fpp contraseña falcon) Los comandos básicos son los siguientes.

¡Preste atención a las mayúsculas!

  • Capital -P reproducirá una lista de reproducción una vez, minúscula -p la repetirá.
  • fpp -v 66 Establece el volumen al 66%
  • fpp -c stop Detiene el espectáculo inmediatamente
  • fpp -C stop Esto podría dejar de mostrar con gracia
  • fpp -p thisPlaylistName Reproduce thisPlaylistName en repetición (por lo que la canción de introducción se reproduce una vez, luego lo principal se repetirá indefinidamente.
  • fpp -P thisPlaylistName Reproduce thisPlaylistName una vez
  • eventScript "$ {MEDIADIR} / scripts / $ {thisScriptVariable}" Ejecuta un script. En el caso de la izquierda, funciona si tiene el nombre de su secuencia de comandos guardado en una variable en algún lugar arriba, como thisScriptVariable =”PlayTheSong.sh”

ButtonSuperScript.sh

#! / bin / sh
###########################################################
# Para ejecutar si se presiona el botón.
#Deberías tener dos listas de reproducción para cada canción, una con
# solo la canción como "Primera reproducción" y nada en la principal,
# y otro con la canción como primera reproducción y tu espera
# secuencia como la secuencia "Principal". (Al menos si quieres
# para hacer exactamente lo que estoy haciendo)
#
# Por ejemplo, si tu canción es Tiger Rag, deberías tener
# listas de reproducción "TigerRag", "TigerRagStandby" y "Standby"
#
###########################################################
# Listas de reproducción para ejecutar si está entre 6 y 11
NightSong1 = "TigerRagStandby"
NightSong2 = "HallelujahStandby"
NightStandby = "En espera"
# Listas de reproducción para ejecutar durante el día o después de las 11
DaySong1 = "TigerRag"
DaySong2 = "Aleluya"
DayStandby = "En espera"
#Horarios de encendido y apagado en 24 horas. Si quieres minutos, buena suerte.
OnHour = 17
Fuera de hora = 23
###########################################################
# Tripas del guión. #
###########################################################
# Obtenga nuestro estado actual (IDLE = 0, PLAYING = 1, Stopping Gracefully = 2)
ESTADO = $ (fpp -s | cortar -d ',' -f2)
# Obtenga la lista de reproducción en ejecución y recorte a 7 letras
LISTA DE REPRODUCCIÓN = $ (fpp -s | cortar -d ',' -f4 | cortar -c1-7)
# Esto será "ambos" si está reproduciendo una canción, y "secuencia" si está en espera.
#utilizado para determinar si se está ejecutando la secuencia de espera
STANDBYSTRING = $ (fpp -s | cortar -d ',' -f5)
#Primeras 7 letras de nombres de listas de reproducción para comparar
# Solo 7 letras para que "Song1Standby" y "Song1" sean idénticas
# De acuerdo, en realidad deberían ser las primeras x letras y x debería ser el nombre de canción más corto que tengas
StandbyPlaylist = $ (echo $ NightStandby | cortar -c1-7)
Song1Playlist = $ (echo $ NightSong1 | cortar -c1-7)
Song2Playlist = $ (echo $ NightSong2 | cortar -c1-7)
STARTITEM = ""
#Obtener la hora actual en tiempo militar
CurrentHour = $ (fecha + "% H")
# Imprime el estado de algunas cosas - "echo" es como "imprimir" en la mayoría de los idiomas
# Útil para probar si varias cosas se recortaron o calcularon correctamente
echo CurrentHour es $ CurrentHour
echo La lista de reproducción en ejecución es: $ PLAYLIST
echo Song2Playlist es: $ Song2Playlist
El estado del eco es: $ STATUS
# Ajuste el volumen al 80% por la noche, al 100% en caso contrario
#Para que si estoy durmiendo no sea tan ruidoso
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; luego
# fpp -v 100
#demás
# fpp -v 80
#fi
# Comprueba que tenemos algo significativo
si [-z "$ {ESTADO}"]; entonces
echo "Error con valor de estado"> & 2
salida 1
fi
# Actuar sobre el estado actual
caso $ {STATUS} en
# INACTIVO
0)
#Night time - reproduce Song1 con el modo de espera
si [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; entonces
echo Playing NightSong1
fpp -c detener
fpp -p "$ {NightSong1}" $ {STARTITEM}
# Hora del día o muy tarde: reproduce la canción 1 una vez y luego apaga las luces
demás
echo Playing DaySong1
fpp -c detener
fpp -P "$ {DaySong1}" $ {STARTITEM}
fi
;;
# REPRODUCIENDO O DETENIENDO AGRADAMENTE (sucede si se presiona el botón cuando finaliza una lista de reproducción programada)
1 | 2)
#Standby se está ejecutando: esto funciona porque el modo de espera es mi única secuencia no multimedia
si ["$ STANDBYSTRING" == "secuencia"]; entonces
#Night time - reproduce Song1 con el modo de espera
si [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; entonces
echo Playing NightSong1 para la noche
fpp -c detener
fpp -p "$ {NightSong1}"
# Hora del día o muy tarde: juega al trapo de tigre una vez y luego apaga las luces
demás
echo PlayingDaySong1 de la reproducción
fpp -c detener
fpp -P "$ {DaySong1}"
fi
# Para admitir más canciones, copie esta sección y cambie "Song2Playlist" en la última sección a Song # Playlist
# Song1 se está ejecutando
elif ["$ PLAYLIST" == "$ Song1Playlist"]; luego
#Night time - juega Hallelujah con modo de espera
si [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; entonces
echo Playing HallelujahStandby de Tiger Rag se está ejecutando
fpp -c detener
fpp -p "$ {NightSong2}"
# Hora del día o muy tarde: reproduce Song2 una vez y luego apaga las luces
demás
echo Jugando Aleluya una vez de Tiger Rag se está ejecutando
fpp -c detener
fpp -P "$ {DaySong2}"
fi
#LAST SONG ESTÁ EJECUTANDO - PLAY STANDBY
elif ["$ PLAYLIST" == "$ Song2Playlist"]; luego
#Night time - play standby on loop
si [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; entonces
echo Reproducción en espera en repetición
fpp -c detener
fpp -p "$ {NightStandby}"
# Hora del día o muy tarde: juega en modo de espera una vez
demás
echo Reproducción en espera una vez
fpp -c detener
fpp -P "$ {DayStandby}"
fi
demás
echo Por alguna razón, el último elsecase ejecutado.
fpp -c detener
fpp -P "$ {DaySong1}"
fi
;;
esac

ver rawButtonSuperScript.sh alojado con ❤ por GitHub

Paso 5: Placa frontal (opcional) para el botón

Tengo acceso a una cortadora láser en Clemson a través de Makerspace, así que rápidamente hice un boceto de un diseño para cortar y grabar. Hay un agujero en el medio para mi botón, las palabras dicen "Push Me" en una fuente navideña y un copo de nieve alrededor del botón. Pinté con aerosol un poco de madera de blanco y luego la cubrí con cinta adhesiva (para que el cortador láser no queme las partes que no quiero grabar). Se adjunta el archivo que utilicé.

Recomendado: