Table des matières:

Commencez votre spectacle de lumière de Noël avec un bouton : 5 étapes
Commencez votre spectacle de lumière de Noël avec un bouton : 5 étapes

Vidéo: Commencez votre spectacle de lumière de Noël avec un bouton : 5 étapes

Vidéo: Commencez votre spectacle de lumière de Noël avec un bouton : 5 étapes
Vidéo: Voici Pourquoi Vous Ne Devez Jamais Faire De Piercing !😱 2024, Juillet
Anonim
Commencez votre spectacle de lumière de Noël avec un bouton
Commencez votre spectacle de lumière de Noël avec un bouton

Lors de l'exécution d'un spectacle de lumières de Noël synchronisé avec de la musique, vous souhaiterez peut-être démarrer le spectacle en appuyant sur un bouton. Ce didacticiel s'applique uniquement à un spectacle contrôlé via Falcon Pi Player (FPP) exécuté sur un Raspberry Pi. Si vous utilisez FPP, vous utilisez probablement des contrôleurs Falcon et xLights ou LightORama pour séquencer votre show. Si aucun de ces mots ne vous dit rien, ce tutoriel vous dépasse probablement un peu pour l'instant et vous devriez commencer par lire ce wiki https://auschristmaslighting.com/wiki/ et rejoindre un groupe Facebook comme ci-dessous

  • xLights:
  • Lumières de Noël avancées générales:
  • Lecteur Falcon Pi:
  • Partage d'idées de pièces jointes/accessoires:
  • "Pas spécifiquement xLights ou LOR Related":
  • Fournisseurs xLights Holiday Light:
  • Faites-le vous-même Noël:

Étape 1: Liste des pièces

Vous aurez besoin des éléments suivants:

  • Un bouton. J'ai utilisé celui-ci avec un anneau lumineux à LED autour: [Amazon]
  • Une résistance. De préférence 200Ω ou plus (2 d'entre eux si vous utilisez le bouton LED) Standard 1/4W ou 1/8W est bien
  • Fil de connexion. La jauge que vous devez utiliser dépend de la distance entre le bouton et votre Pi. J'ai utilisé du fil 18awg à environ 10 pieds de mon Pi et cela a fonctionné parfaitement
  • Un moyen de connecter un fil aux broches GPIO du Pi. Vous pouvez utiliser un câble plat avec la platine d'expérimentation, ou vous pouvez simplement utiliser des connecteurs femelles comme je l'ai fait. Nous n'avons besoin que de 3 fils - Terre, 5V et données pour le bouton. [Amazone]
  • (En option) Un connecteur étanche à chaque extrémité pour un entretien facile. J'utilise des connecteurs de qualité marine à 3 broches: [Amazon]
  • (Facultatif) Connecteurs bout à bout thermorétractables [Amazon]

Étape 2: schéma de câblage

Schéma de câblage
Schéma de câblage
Schéma de câblage
Schéma de câblage
Schéma de câblage
Schéma de câblage
Schéma de câblage
Schéma de câblage

Les images montrent un schéma de câblage pour un bouton sans LED incluse et un bouton avec une LED. La façon dont j'ai configuré le schéma de câblage vous permet de faire fonctionner un bouton et une lumière (allumée en continu) avec seulement 3 fils.

Pour la broche GPIO, choisissez l'une des broches GPIO sur le pi. Utilisez également les broches +5V et Gnd. Vous pourriez probablement vous en tirer en utilisant la broche 3,3 V, mais la chute de tension sur plusieurs pieds de fil peut rendre le signal peu fiable ou ne pas être suffisant pour allumer la LED.

REMARQUE: le connecteur à 3 broches ne passera pas à travers le trou que vous devez percer pour un bouton avec l'anneau lumineux à LED. Attachez donc le connecteur après avoir mis le bouton dans votre façade.

Étape 3: Configuration de base de Falcon Pi Player

REMARQUE - FPP est constamment mis à jour et il est tout à fait possible qu'ils améliorent leur prise en charge des scripts ou qu'ils incluent le "bouton-poussoir pour démarrer" comme fonctionnalité par défaut qui nécessite moins de programmation.

J'ai suivi la vidéo ci-dessus pour tout mettre en place initialement.

Je trouve les vidéos ennuyeuses et lentes, alors en voici un résumé:

  • Importez votre séquence dans fpp à l'aide du gestionnaire de fichiers
  • Créez une liste de lecture avec la séquence dedans. Pour les prochaines étapes, la liste de lecture s'appellera "playme"
  • Ouvrez un fichier de bloc-notes vierge et tapez ce qui suit:

    • #!/bin/sh
    • fpp -P playme
  • Enregistrez-le en tant que fichier.sh sur votre ordinateur
  • Accédez au gestionnaire de fichiers dans FPP et téléchargez votre fichier de script. Allez dans l'onglet " Scripts " et assurez-vous qu'il s'y trouve
  • Sous État/Contrôle, accédez à Événements
  • Créer un nouvel événement. ID d'événement 1/1, nom de l'événement quel qu'il soit, séquence d'effet AUCUN, script d'événement
  • Allez sous Input/Output Setup et cliquez sur GPIO triggers
  • Basculez la broche à laquelle votre bouton est attaché. S'il va baisser lorsque vous appuyez sur le bouton, placez l'événement sur l'option Falling, s'il est actif haut, placez l'événement sur Rising.
  • Cliquez sur le bouton Redémarrer à côté de l'avertissement qui apparaît après avoir effectué toutes les modifications

Après avoir fait tout cela, vous devriez pouvoir appuyer sur le bouton pour démarrer votre émission. Waouh !

Cependant, cette méthode présente certaines limites. Si vous appuyez à nouveau sur le bouton pendant que la liste de lecture est en cours, soit 1) cela ne fera rien ou 2) fera planter FPP et refusera de faire quoi que ce soit avec votre bouton jusqu'à ce que vous le redémarriez. Donc, si vous utilisez simplement un bouton comme moyen dramatique de jouer votre émission sur commande, la méthode ci-dessus sera tout ce dont vous avez besoin.

Si vous avez besoin de quelque chose de plus, passez à l'étape suivante

Étape 4: un script plus robuste

Vous trouverez ci-dessous le script auquel je suis finalement arrivé. Vous pouvez voir le script sur Github ici: [Gist. Github]

  • Si quelqu'un appuie sur le bouton pendant les heures de « nuit », il jouera Tiger Rag (ma chanson1), puis passera à la séquence de veille qui boucle à l'infini.
  • Si le bouton est enfoncé pendant que Tiger Rag joue, il démarre ma deuxième chanson, Hallelujah, puis passe indéfiniment à la séquence d'attente.
  • Mais si quelqu'un appuie sur le bouton pendant la journée ou très tard dans la nuit, il jouera Tiger Rag une fois, puis éteint toutes les lumières.

Cela permet au bouton de fonctionner à tout moment de la journée, mais les lumières ne doivent pas nécessairement être allumées tout le temps. Il permet également de lire plusieurs chansons à partir d'un seul bouton en identifiant la chanson en cours de lecture, en mettant fin à cette chanson et en jouant la chanson "suivante".

Vous pouvez trouver plus de ressources pour les scripts dans FPP ici: https://github.com/FalconChristmas/fpp-scripts Vous pouvez tester vos scripts à l'aide du Shell FPP (nom d'utilisateur fpp mot de passe falcon) Les commandes de base sont les suivantes.

Attention aux majuscules !!

  • Majuscule -P jouera une liste de lecture une fois, minuscule -p la répétera.
  • fpp -v 66 Régler le volume à 66%
  • fpp -c stop Arrêter le spectacle immédiatement
  • fpp -C stop Cela pourrait être stop show gracieusement
  • fpp -p thisPlaylistName Lit ce PlaylistName en boucle (donc la chanson d'introduction est jouée une fois, puis les éléments principaux seront répétés indéfiniment.
  • fpp -P thisPlaylistName Lit ce PlaylistName une fois
  • eventScript "${MEDIADIR}/scripts/${thisScriptVariable}" Exécute un script. Dans le cas de gauche, cela fonctionne si vous avez enregistré le nom de votre script dans une variable quelque part au-dessus, comme thisScriptVariable = "PlayTheSong.sh"

ButtonSuperScript.sh

#!/bin/sh
###########################################################
#À exécuter si le bouton est enfoncé.
#Vous devriez avoir deux listes de lecture pour chaque chanson - une avec
# juste la chanson en tant que "First play" et rien en main,
# et un autre avec la chanson en première lecture et votre veille
# séquence comme séquence "Principale". (au moins si tu veux
# faire exactement ce que je fais)
#
#Par exemple, si votre chanson est Tiger Rag, vous devriez avoir
# listes de lecture "TigerRag", "TigerRagStandby" et "Standby"
#
###########################################################
# Playlists à exécuter si c'est entre 6 et 11
NightSong1="TigerRagStandby"
NightSong2="HallelujahStandby"
NightStandby="Veille"
# Playlists à exécuter pendant la journée ou après 11 heures
DaySong1="TigerRag"
DaySong2="Alléluia"
DayStandby="Veille"
#Horaires d'activation et de désactivation en 24 heures. Si tu veux des minutes, bonne chance
OnHour=17
Hors Heure=23
###########################################################
# Les tripes du script. #
###########################################################
# Obtenez notre statut actuel (IDLE=0, PLAYING=1, Stopping Gracefully=2)
ÉTAT=$(fpp -s | cut -d', ' -f2)
# Obtenez la liste de lecture en cours et coupez à 7 lettres
PLAYLIST=$(fpp -s | cut -d', ' -f4 | cut -c1-7)
#Ce sera "les deux" s'il joue une chanson, et "séquence" s'il est en veille
#utilisé pour déterminer si la séquence de veille est en cours d'exécution
STANDBYSTRING=$(fpp -s | cut -d', ' -f5)
#7 premières lettres des noms de listes de lecture à des fins de comparaison
#Seulement 7 lettres pour que "Song1Standby" et "Song1" soient identiques
#D'accord, en fait, il devrait s'agir des premières lettres x et x devrait être le nom de chanson le plus court que vous ayez
StandbyPlaylist=$(écho $NightStandby| cut -c1-7)
Song1Playlist=$(écho $NightSong1| cut -c1-7)
Song2Playlist=$(écho $NightSong2| cut -c1-7)
STARTITEM=""
#Obtenir l'heure actuelle en heure militaire
Heure actuelle=$(date +"%H")
#Imprimer le statut de certaines choses - "echo" est comme "print" dans la plupart des langues
#Utile pour tester si diverses choses ont été coupées ou calculées correctement
echo CurrentHour est $CurrentHour
echo La liste de lecture en cours est: $PLAYLIST
echo Song2Playlist est: $Song2Playlist
L'état de l'écho est: $STATUS
#Réglez le volume à 80% la nuit, 100% sinon
#Pour que si je dors, ce ne soit pas aussi fort
#if [$CurrentHour -lt $OffHour -a $CurrentHour -ge 11]; alors
# fpp -v 100
#autre
# fpp -v 80
#Fi
# Vérifiez que nous avons quelque chose de significatif
if [-z"${STATUS}"];alors
echo"Erreur avec la valeur d'état">&2
sortie 1
Fi
# Agir sur l'état actuel
case${STATUS}dans
# INACTIF
0)
#Night time - jouez Song1 en veille
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];then
echo Jouer NightSong1
fpp -c arrêter
fpp -p "${NightSong1}"${STARTITEM}
#Jour ou vraiment tard - jouez la chanson 1 une fois puis éteignez les lumières
autre
echo Lecture de DaySong1
fpp -c arrêter
fpp -P "${DaySong1}"${STARTITEM}
Fi
;;
# JOUER ou ARRÊTER GRÂCE (la grâce se produit si le bouton est enfoncé lorsqu'une liste de lecture programmée se termine)
1 | 2)
#Standby est en cours d'exécution - cela fonctionne car la veille est ma seule séquence non multimédia
if ["$STANDBYSTRING"=="séquence"];alors
#Night time - jouez Song1 en veille
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];then
echo Lecture de NightSong1 pour la nuit
fpp -c arrêter
fpp -p "${NightSong1}"
#Jour ou vraiment tard - jouez au tigre une fois puis éteignez les lumières
autre
echo PlayingDaySong1 de la lecture
fpp -c arrêter
fpp -P "${DaySong1}"
Fi
#Pour prendre en charge plus de chansons, copiez cette section et remplacez "Song2Playlist" dans la dernière section par Song#Playlist
#Song1 est en cours d'exécution
elif ["$PLAYLIST"=="$Song1Playlist"];puis
#Night time - jouez à Hallelujah en mode veille
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];then
echo Jouer à HallelujahStandby de Tiger Rag est en cours d'exécution
fpp -c arrêter
fpp -p "${NightSong2}"
#Jour ou vraiment tard - jouez Song2 une fois puis éteignez les lumières
autre
echo Jouer Hallelujah une fois de Tiger Rag est en cours d'exécution
fpp -c arrêter
fpp -P "${DaySong2}"
Fi
#DERNIÈRE CHANSON EST EN COURS - PLAY STANDBY
elif ["$PLAYLIST"=="$Song2Playlist"];puis
#Night time - lecture en veille en boucle
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];then
echo Lecture en attente en boucle
fpp -c arrêter
fpp -p "${NightStandby}"
#Jour ou vraiment tard - jouez une fois en veille
autre
echo Lecture en veille une fois
fpp -c arrêter
fpp -P "${DayStandby}"
Fi
autre
echo Pour une raison quelconque, le dernier elsecase exécuté.
fpp -c arrêter
fpp -P "${DaySong1}"
Fi
;;
esac

voir rawButtonSuperScript.sh hébergé avec ❤ par GitHub

Étape 5: (Facultatif) Façade pour le bouton

J'ai accès à une découpeuse laser chez Clemson via le Makerspace, j'ai donc rapidement esquissé un dessin à découper+graver. Il y a un trou au milieu pour mon bouton, les mots disent "Push Me" dans une police de Noël et un flocon de neige autour du bouton. J'ai peint du bois à la bombe en blanc, puis je l'ai recouvert de ruban de masquage (afin que le découpeur laser ne brûle pas les pièces que je ne veux pas graver). Le fichier que j'ai utilisé est joint.

Conseillé: