Inhaltsverzeichnis:

Starten Sie Ihre Weihnachtslichtshow mit einem Knopf - Gunook
Starten Sie Ihre Weihnachtslichtshow mit einem Knopf - Gunook

Video: Starten Sie Ihre Weihnachtslichtshow mit einem Knopf - Gunook

Video: Starten Sie Ihre Weihnachtslichtshow mit einem Knopf - Gunook
Video: Shocking Unbelievable Moments Of Idiots In Cars Got Instant Karma | USA & Canada Only 2024, November
Anonim
Starten Sie Ihre Weihnachtslichtshow mit einem Knopf
Starten Sie Ihre Weihnachtslichtshow mit einem Knopf

Wenn Sie eine mit Musik synchronisierte Weihnachtslichtshow laufen lassen, möchten Sie die Show vielleicht durch Drücken einer Taste starten. Dieses Tutorial gilt nur für eine Show, die über den Falcon Pi Player (FPP) gesteuert wird, der auf einem Raspberry Pi ausgeführt wird. Wenn Sie FPP verwenden, verwenden Sie wahrscheinlich Falcon-Controller und verwenden xLights oder LightORama, um Ihre Show zu sequenzieren. Wenn Ihnen keines dieser Wörter etwas sagt, ist dieses Tutorial wahrscheinlich ein wenig über Ihren Kopf gegangen und Sie sollten damit beginnen, dieses Wiki https://auschristmaslighting.com/wiki/ zu lesen und einer Facebook-Gruppe wie unten beizutreten

  • xLights:
  • Allgemeine erweiterte Weihnachtsbeleuchtung:
  • Falcon Pi-Player:
  • Gehäuse/Requisiten-Ideenaustausch:
  • "Nicht speziell xLights oder LOR Related":
  • xLights Holiday Light Anbieter:
  • Weihnachten selber machen:

Schritt 1: Teileliste

Sie benötigen die folgenden Artikel:

  • Ein Knopf. Ich habe dieses mit einem LED-Ringlicht verwendet: [Amazon]
  • Ein Widerstand. Vorzugsweise 200Ω oder mehr (2 davon, wenn Sie die LED-Taste verwenden) Standard 1/4W oder 1/8W ist in Ordnung
  • Anschlusskabel. Welche Anzeige Sie verwenden sollten, hängt davon ab, wie weit die Taste von Ihrem Pi entfernt ist. Ich habe einen Draht von 18 AWG für etwa 3 Meter von meinem Pi verwendet und es funktionierte einwandfrei
  • Eine Möglichkeit, ein Kabel an die GPIO-Pins des Pi anzuschließen. Sie können ein Flachbandkabel mit dem Breakout-Steckbrett verwenden, oder Sie können einfach einige Buchsen verwenden, wie ich es getan habe. Wir brauchen nur 3 Drähte - Masse, 5V und Daten für die Taste. [Amazonas]
  • (Optional) Ein wasserdichter Stecker an jedem Ende für eine einfache Wartung. Ich verwende 3-polige marinetaugliche Anschlüsse: [Amazon]
  • (Optional) Wärmeschrumpfende Stoßverbinder [Amazon]

Schritt 2: Schaltplan

Schaltplan
Schaltplan
Schaltplan
Schaltplan
Schaltplan
Schaltplan
Schaltplan
Schaltplan

Die Bilder zeigen einen Schaltplan für einen Taster ohne mitgelieferte LED und einen Taster mit LED. Die Art und Weise, wie ich den Schaltplan eingerichtet habe, ermöglicht es Ihnen, mit nur 3 Drähten eine Taste und ein Licht (kontinuierlich an) zu betreiben.

Wählen Sie für den GPIO-Pin einen der GPIO-Pins auf dem Pi aus. Verwenden Sie auch die +5V- und Gnd-Pins. Sie könnten wahrscheinlich mit der Verwendung des 3,3-V-Pins davonkommen, aber der Spannungsabfall über mehrere Meter Kabel kann das Signal unzuverlässig machen oder nicht ausreichen, um die LED zum Leuchten zu bringen.

HINWEIS: Der 3-polige Stecker passt nicht durch das Loch, das Sie für einen Knopf mit dem LED-Ringlicht bohren müssen. Bringen Sie also den Stecker an, nachdem Sie den Knopf in Ihre Frontplatte gesteckt haben.

Schritt 3: Grundlegende Einrichtung des Falcon Pi Players

ANMERKUNG - FPP wird ständig aktualisiert, und es ist durchaus möglich, dass sie ihre Skriptunterstützung verbessern oder "Drucktaste zum Starten" als Standardfunktion enthalten, die weniger Programmieraufwand erfordert.

Ich habe das obige Video befolgt, um zunächst alles einzurichten.

Ich finde Videos langweilig und langsam, daher hier eine Zusammenfassung:

  • Importieren Sie Ihre Sequenz mit dem Dateimanager in fpp
  • Erstellen Sie eine Wiedergabeliste mit der Sequenz darin. Für die nächsten Schritte wird die Playlist "playme" heißen
  • Öffnen Sie eine leere Notizblockdatei und geben Sie Folgendes ein:

    • #!/bin/sh
    • fpp -P playme
  • Speichern Sie es als.sh-Datei auf Ihrem Computer
  • Gehen Sie in FPP zum Dateimanager und laden Sie Ihre Skriptdatei hoch. Gehen Sie zur Registerkarte "Skripte" und stellen Sie sicher, dass sie dort ist
  • Gehen Sie unter Status/Steuerung zu Ereignisse
  • Erstellen Sie ein neues Ereignis. Ereignis-ID 1/1, Ereignisname wie auch immer, Effektsequenz KEINE, Ereignisskript
  • Gehen Sie zu Input/Output Setup und klicken Sie auf GPIO-Trigger
  • Schalte den Pin um, mit dem dein Button verbunden ist. Wenn es beim Drücken der Taste niedrig wird, setzen Sie das Ereignis auf die fallende Option, wenn es aktiv hoch ist, stellen Sie das Ereignis auf steigend.
  • Klicken Sie auf die Schaltfläche Neustart, wenn die Warnung angezeigt wird, nachdem Sie alle Änderungen vorgenommen haben

Nachdem Sie all dies getan haben, sollten Sie in der Lage sein, den Knopf zu drücken, um Ihre Show zu starten. Huhu!

Diese Methode hat jedoch einige Einschränkungen. Wenn Sie die Taste erneut drücken, während die Wiedergabeliste läuft, wird entweder 1) nichts ausgeführt oder 2) FPP zum Absturz gebracht und weigert sich, etwas mit Ihrer Taste zu tun, bis Sie sie neu starten. Wenn Sie also nur eine Schaltfläche als dramatische Möglichkeit verwenden, Ihre Show auf Befehl abzuspielen, ist die obige Methode alles, was Sie brauchen.

Wenn Sie mehr benötigen, fahren Sie mit dem nächsten Schritt fort

Schritt 4: Ein robusteres Skript

Unten ist das Skript, zu dem ich schließlich gelangt bin. Sie können das Skript auf Github hier anzeigen: [Gist. Github]

  • Wenn jemand während der „Nacht“-Stunden die Taste drückt, wird Tiger Rag (mein Song1) abgespielt und dann zur Standby-Sequenz gewechselt, die endlos wiederholt wird.
  • Wenn die Taste gedrückt wird, während Tiger Rag spielt, beginnt mein zweites Lied, Hallelujah, und geht dann auf unbestimmte Zeit in die Standby-Sequenz.
  • Aber wenn jemand tagsüber oder sehr spät in der Nacht den Knopf drückt, wird Tiger Rag einmal gespielt und dann alle Lichter ausgeschaltet.

Dadurch kann die Taste zu jeder Tageszeit funktionieren, aber die Lichter müssen nicht ständig eingeschaltet sein. Es ermöglicht auch das Abspielen mehrerer Lieder mit einer Taste, indem identifiziert wird, welches Lied gerade abgespielt wird, dieses Lied beendet und das "nächste" Lied abgespielt wird.

Weitere Ressourcen für die Skripterstellung in FPP finden Sie hier: https://github.com/FalconChristmas/fpp-scriptsFür kompliziertere Logik googeln Sie einfach "bash script _", wobei Unterstrich das ist, was Sie versuchen. Sie können Ihre Skripte mit der FPP-Shell testen (Benutzername fpp Kennwort falcon) Die grundlegenden Befehle lauten wie folgt.

Groß-/Kleinschreibung beachten!!

  • Capital -P spielt eine Playlist einmal ab, Kleinbuchstaben -p wiederholt sie.
  • fpp -v 66 Lautstärke auf 66 % setzen
  • fpp -c stop Beende die Show sofort
  • fpp -C stop Dies könnte sein, die Show anmutig zu stoppen
  • fpp -p thisPlaylistName Spielt thisPlaylistName bei Wiederholung (also das Intro-Song wird einmal abgespielt, dann wird das Main-Zeug auf unbestimmte Zeit wiederholt.
  • fpp -P thisPlaylistName Spielt diesenPlaylistName einmal ab
  • eventScript "${MEDIADIR}/scripts/${thisScriptVariable}" Führt ein Skript aus. Im linken Fall funktioniert es, wenn Sie Ihren Skriptnamen irgendwo oben in einer Variablen gespeichert haben, wie thisScriptVariable=“PlayTheSong.sh“

ButtonSuperScript.sh

#!/bin/sh
###########################################################
#Auszuführen, wenn die Taste gedrückt wird.
#Du solltest für jeden Song zwei Playlists haben – eine mit
# nur das Lied als "Erstes Spiel" und nichts im Hauptteil,
# und ein weiteres mit dem Lied als erstes Spiel und deinem Standby
#-Sequenz als "Main"-Sequenz. (Zumindest wenn du willst
# um genau das zu tun, was ich tue)
#
#Wenn dein Song zum Beispiel Tiger Rag ist, solltest du
# Wiedergabelisten "TigerRag", "TigerRagStandby" und "Standby"
#
###########################################################
# Wiedergabelisten, die ausgeführt werden sollen, wenn sie zwischen 6 und 11. liegen
NightSong1="TigerRagStandby"
NightSong2="HallelujahStandby"
NachtStandby="Standby"
# Playlists, die tagsüber oder nach 11. laufen sollen
DaySong1="TigerRag"
DaySong2="Halleluja"
DayStandby="Standby"
#Ein- und Ausschaltzeiten im 24-Stunden-Format. Wenn du Minuten willst, viel Glück
OnHour=17
AusStunde=23
###########################################################
# Mut zum Skript. #
###########################################################
# Holen Sie sich unseren aktuellen Status (IDLE=0, PLAYING=1, Stopping Gracefully=2)
STATUS=$(fpp -s | cut -d', ' -f2)
#Hol dir die laufende Playlist und kürze sie auf 7 Buchstaben
PLAYLIST=$(fpp -s | Schnitt -d', ' -f4 | Schnitt -c1-7)
#Dies ist "beide", wenn ein Lied abgespielt wird, und "Sequenz", wenn es im Standby-Modus ist
#verwendet, um festzustellen, ob die Standby-Sequenz ausgeführt wird
STANDBYSTRING=$(fpp -s | cut -d', ' -f5)
#Erste 7 Buchstaben der Namen von Playlists zum Vergleich
#Nur 7 Buchstaben, damit "Song1Standby" und "Song1" identisch sind
#Okay, eigentlich sollten es die ersten x Buchstaben sein und x sollte der kürzeste Songname sein, den du hast
StandbyPlaylist=$(echo $NightStandby| Cut -c1-7)
Song1Playlist=$(echo $NightSong1| Cut -c1-7)
Song2Playlist=$(echo $NightSong2| Cut -c1-7)
STARTITEM=""
#Erhalte die aktuelle Stunde in Militärzeit
Aktuelle Stunde=$(Datum +"%H")
#Drucke den Status einiger Dinge - "echo" ist in den meisten Sprachen wie "print"
#Nützlich, um zu testen, ob verschiedene Dinge richtig getrimmt oder berechnet wurden
echo CurrentHour ist $CurrentHour
echo Laufende Wiedergabeliste ist: $PLAYLIST
echo Song2Playlist ist: $Song2Playlist
Echo-Status ist: $STATUS
#Stelle die Lautstärke nachts auf 80%, sonst 100%
#Damit es nicht so laut ist, wenn ich schlafe
#if [$CurrentHour -lt $OffHour -a $CurrentHour -ge 11]; dann
# fpp -v 100
#anders
# fpp -v 80
#fi
# Überprüfen Sie, ob wir etwas Sinnvolles haben
if [-z"${STATUS}"];dann
echo"Fehler mit Statuswert">&2
Ausgang 1
fi
# Handeln Sie nach dem aktuellen Status
Fall${STATUS}in
# LEERLAUF
0)
#Nachtzeit - Song1 mit Standby spielen
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];then
echo Playing NightSong1
fpp -c stop
fpp -p "${NightSong1}"${STARTITEM}
#Tageszeit oder wirklich spät - spiel einmal Song 1 und schalte dann das Licht aus
anders
echo Playing DaySong1
fpp -c stop
fpp -P "${DaySong1}"${STARTITEM}
fi
;;
# WIEDERGABE oder STOPPING GRACEFULLY (anmutig geschieht, wenn die Taste gedrückt wird, wenn eine geplante Playlist endet)
1 | 2)
#Standby läuft - das funktioniert, weil Standby meine einzige Nicht-Mediensequenz ist
if ["$STANDBYSTRING"=="Sequenz"];dann
#Nachtzeit - Song1 mit Standby spielen
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];then
echo Playing NightSong1 für die Nacht
fpp -c stop
fpp -p "${NightSong1}"
#Tageszeit oder wirklich spät - spiele einmal Tigertuch und schalte dann das Licht aus
anders
echo PlayingDaySong1 vom Abspielen
fpp -c stop
fpp -P "${DaySong1}"
fi
#Um mehr Songs zu unterstützen, kopiere diesen Abschnitt und ändere "Song2Playlist" im letzten Abschnitt in Song#Playlist
#Song1 läuft
elif ["$PLAYLIST"=="$Song1Playlist"];dann
#Nachtzeit - Halleluja mit Standby spielen
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];then
echo Playing HallelujahStandby von Tiger Rag läuft
fpp -c stop
fpp -p "${NightSong2}"
#Tageszeit oder wirklich spät - spiel Song2 einmal und schalte dann das Licht aus
anders
echo Einmal Halleluja von Tiger Rag zu spielen läuft
fpp -c stop
fpp -P "${DaySong2}"
fi
#LAST SONG LÄUFT - STANDBY SPIELEN
elif ["$PLAYLIST"=="$Song2Playlist"];dann
#Nachtzeit - Standby auf Schleife spielen
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];then
echo Wiedergabe im Standby bei Wiederholung
fpp -c stop
fpp -p "${NightStandby}"
#Tageszeit oder wirklich spät - einmal Standby spielen
anders
echo Einmal Standby abspielen
fpp -c stop
fpp -P "${DayStandby}"
fi
anders
echo Aus irgendeinem Grund wurde der letzte elsecase ausgeführt.
fpp -c stop
fpp -P "${DaySong1}"
fi
;;
esac

rawButtonSuperScript.sh anzeigen, gehostet mit ❤ von GitHub

Schritt 5: (Optional) Faceplate für die Schaltfläche

Ich habe über den Makerspace Zugang zu einem Laserschneider bei Clemson, also habe ich schnell ein Design zum Schneiden + Ätzen entworfen. Es gibt ein Loch in der Mitte für meinen Knopf, die Wörter sagen "Push Me" in einer Weihnachtsschrift und eine Schneeflocke um den Knopf. Ich habe etwas Holz weiß lackiert und dann mit Abdeckband bedeckt (damit der Laserschneider keine Teile versengt, die ich nicht geätzt haben möchte). Die von mir verwendete Datei ist angehängt.

Empfohlen: