Inhoudsopgave:

Start je kerstlichtshow met een knop: 5 stappen
Start je kerstlichtshow met een knop: 5 stappen

Video: Start je kerstlichtshow met een knop: 5 stappen

Video: Start je kerstlichtshow met een knop: 5 stappen
Video: Saar en Abel hebben 8000 lichtjes op hun huis 2024, November
Anonim
Start je kerstlichtshow met een knop
Start je kerstlichtshow met een knop

Wanneer u een kerstlichtshow uitvoert die is gesynchroniseerd met muziek, wilt u misschien de show starten door op een knop te drukken. Deze tutorial is alleen van toepassing op een show die wordt bestuurd via Falcon Pi Player (FPP) op een Raspberry Pi. Als je FPP gebruikt, gebruik je waarschijnlijk Falcon-controllers en gebruik je xLights of LightORama om je show te sequencen. Als geen van deze woorden iets voor je betekent, is deze tutorial waarschijnlijk een beetje over je hoofd voor nu en moet je beginnen met het lezen van deze wiki https://auschristmaslighting.com/wiki/ en lid worden van een Facebook-groep zoals hieronder

  • xLights:
  • Algemene geavanceerde kerstverlichting:
  • Falcon Pi-speler:
  • Behuizing/prop idee delen:
  • "Niet specifiek xLights of LOR Related":
  • xLights Holiday Light-verkopers:
  • Doe het zelf kerst:

Stap 1: Onderdelenlijst

Je hebt de volgende items nodig:

  • Een knop. Ik gebruikte deze met een LED-ringlicht eromheen: [Amazon]
  • Een weerstand. Bij voorkeur 200Ω of meer (2 hiervan als je de LED-knop gebruikt) Standaard 1/4W of 1/8W is prima
  • Aansluitdraad. De meter die u moet gebruiken, hangt af van hoe ver de knop van uw Pi verwijderd is. Ik gebruikte 18awg-draad voor ongeveer 10 voet van mijn Pi en het werkte perfect
  • Een manier om een draad aan te sluiten op de GPIO-pinnen van de Pi. Je kunt een lintkabel gebruiken met het breakout-broodbord, of je kunt gewoon wat vrouwelijke connectoren gebruiken zoals ik deed. We hebben slechts 3 draden nodig - aarde, 5V en gegevens voor de knop. [Amazone]
  • (Optioneel) Een waterdichte connector aan elk uiteinde voor eenvoudig onderhoud. Ik gebruik 3-pins connectoren van maritieme kwaliteit: [Amazon]
  • (Optioneel) Krimpkousen [Amazon]

Stap 2: Bedradingsschema

Schakelschema
Schakelschema
Schakelschema
Schakelschema
Schakelschema
Schakelschema
Schakelschema
Schakelschema

De afbeeldingen tonen een bedradingsschema voor een knop zonder meegeleverde LED, en een knop met een LED. Door de manier waarop ik het bedradingsschema heb opgezet, kun je een knop en een lampje (continu aan) gebruiken met slechts 3 draden.

Kies voor de GPIO-pin een van de GPIO-pinnen op de pi. Gebruik ook de +5V- en Gnd-pinnen. Je zou waarschijnlijk weg kunnen komen met het gebruik van de 3,3V-pin, maar de spanningsval over enkele meters draad kan het signaal onbetrouwbaar maken of niet genoeg zijn om de LED te laten oplichten.

OPMERKING: De 3-pins connector past niet door het gat dat u moet boren voor een knop met het LED-ringlicht. Bevestig de connector dus nadat u de knop in uw frontplaat hebt geplaatst.

Stap 3: Falcon Pi Player basisconfiguratie

OPMERKING - FPP wordt voortdurend bijgewerkt en het is heel goed mogelijk dat ze hun ondersteuning voor scripts zullen verbeteren of dat ze "drukknop om te starten" als een standaardfunctie zullen opnemen die minder programmeerwerk vereist.

Ik volgde de bovenstaande video om in eerste instantie alles in te stellen.

Ik vind video's saai en traag, dus hier is een samenvatting ervan:

  • Importeer uw reeks naar fpp met behulp van de bestandsbeheerder
  • Maak een afspeellijst met de volgorde erin. Voor de volgende stappen wordt de afspeellijst "playme" genoemd
  • Open een leeg Kladblok-bestand en typ het volgende:

    • #!/bin/sh
    • fpp -P playme
  • Sla het op als een.sh-bestand op je computer
  • Ga naar de bestandsbeheerder in FPP en upload je scriptbestand. Ga naar het tabblad " Scripts " en zorg ervoor dat het daar is
  • Ga onder Status/Control naar Evenementen
  • Maak een nieuw evenement aan. Gebeurtenis-ID 1/1, gebeurtenisnaam wat dan ook, effectvolgorde GEEN, gebeurtenisscript
  • Ga onder Input/Output Setup en klik op GPIO-triggers
  • Wissel de pin waaraan uw knop is gekoppeld. Als het laag wordt wanneer u op de knop drukt, zet u de gebeurtenis op de optie Dalend, als het hoog actief is, zet u de gebeurtenis op Stijgend.
  • Klik op de knop Opnieuw opstarten bij de waarschuwing die verschijnt nadat u alle wijzigingen hebt aangebracht

Nadat je dit allemaal hebt gedaan, zou je op de knop moeten kunnen drukken om je show te starten. Woehoe!

Deze methode heeft echter enkele beperkingen. Als je nogmaals op de knop drukt terwijl de afspeellijst bezig is, doet hij ofwel 1) niets of 2) crasht FPP en weigert iets met je knop te doen totdat je hem opnieuw opstart. Dus als je alleen een knop gebruikt als een dramatische manier om je show op commando af te spelen, is de bovenstaande methode alles wat je nodig hebt.

Als je nog iets nodig hebt, ga dan verder met de volgende stap

Stap 4: Een robuuster script

Hieronder staat het script waar ik uiteindelijk op uitkwam. Je kunt het script hier op Github bekijken: [Gist. Github]

  • Als iemand tijdens de "nacht"-uren op de knop drukt, wordt Tiger Rag (my Song1) afgespeeld en gaat hij naar de standby-reeks die oneindig doorloopt.
  • Als de knop wordt ingedrukt terwijl Tiger Rag speelt, begint mijn tweede nummer, Hallelujah, en gaat dan voor onbepaalde tijd naar de standby-reeks.
  • Maar als iemand overdag of heel laat op de knop drukt, speelt hij één keer Tiger Rag en gaan dan alle lichten uit.

Hierdoor kan de knop op elk moment van de dag werken, maar hoeven de lichten niet altijd aan te zijn. Het maakt het ook mogelijk om meerdere nummers vanaf 1 knop af te spelen door te identificeren welk nummer momenteel wordt afgespeeld, dat nummer te beëindigen en het "volgende" nummer af te spelen.

Je kunt hier meer bronnen vinden voor scripting in FPP: https://github.com/FalconChristmas/fpp-scriptsVoor meer gecompliceerde logica google je gewoon op "bash script _" waar underscore is wat je probeert te doen. U kunt uw scripts testen met de FPP Shell (gebruikersnaam fpp wachtwoord falcon) De basiscommando's zijn als volgt.

Let op hoofdletters!!

  • Hoofdletter -P zal een afspeellijst één keer afspelen, kleine letters -p zullen deze herhalen.
  • fpp -v 66 Volume instellen op 66%
  • fpp -c stop Stop de show onmiddellijk
  • fpp -C stop Dit kan een mooie stop zijn
  • fpp -p thisPlaylistName Speelt thisPlaylistName bij herhaling af (dus het intronummer wordt één keer afgespeeld, waarna het hoofdgedoe voor onbepaalde tijd wordt herhaald.
  • fpp -P thisPlaylistName Speelt thisPlaylistName één keer af
  • eventScript "${MEDIADIR}/scripts/${thisScriptVariable}" Voert een script uit. In het geval aan de linkerkant werkt het als je je scriptnaam ergens hierboven hebt opgeslagen in een variabele, zoals thisScriptVariable=”PlayTheSong.sh”

KnopSuperScript.sh

#!/bin/sh
###########################################################
#Wordt uitgevoerd als de knop wordt ingedrukt.
#Je zou voor elk nummer twee afspeellijsten moeten hebben - één met
# alleen het nummer als "First play" en niets in het hoofd,
# en nog een met het nummer als eerste spel en je standby
# reeks als de "Hoofd" reeks. (Als je wilt tenminste
# om precies te doen wat ik doe)
#
#Als je nummer bijvoorbeeld Tiger Rag is, zou je moeten hebben
# afspeellijsten "TigerRag", "TigerRagStandby" en "Standby"
#
###########################################################
# Afspeellijsten die moeten worden uitgevoerd als deze tussen 6 en 11 is
NightSong1="TigerRagStandby"
NightSong2="HallelujaStand-by"
NachtStandby="Standby"
# Afspeellijsten die overdag of na 11 uur kunnen worden afgespeeld
DaySong1="Tijgerrag"
DaySong2="Halleluja"
DayStandby="Standby"
#Aan en uit tijden in 24-uurs tijd. Als je minuten wilt, veel succes
OnHour=17
OffHour=23
###########################################################
# Lef van het script. #
###########################################################
# Krijg onze huidige status (IDLE=0, PLAYING=1, Gracefully Stoppen=2)
STATUS=$(fpp -s | knippen -d', ' -f2)
#Verkrijg de lopende afspeellijst en trim tot 7 letters
PLAYLIST=$(fpp -s | knippen -d', ' -f4 | knippen -c1-7)
#Dit is "beide" als het een nummer afspeelt, en "sequence" als het stand-by is
#gebruikt om te bepalen of de standby-reeks actief is
STANDBYSTRING=$(fpp -s | knippen -d', ' -f5)
#Eerste 7 letters van namen van afspeellijsten ter vergelijking
#Slechts 7 letters zodat "Song1Standby" en "Song1" identiek zijn
#Oké, dus eigenlijk zouden het de eerste x letters moeten zijn en x de kortste naam van het nummer dat je hebt
StandbyPlaylist=$(echo $NightStandby| cut -c1-7)
Song1Playlist=$(echo $NightSong1| cut -c1-7)
Song2Playlist=$(echo $NightSong2| cut -c1-7)
STARTITEM=""
#Krijg het huidige uur in militaire tijd
CurrentHour=$(datum +"%H")
#Print de status van sommige dingen - "echo" is als "afdrukken" in de meeste talen
#Nuttig om te testen of verschillende dingen correct zijn bijgesneden of berekend
echo CurrentHour is $CurrentHour
echo De lopende afspeellijst is: $PLAYLIST
echo Song2Playlist is: $Song2Playlist
echo Status is: $STATUS
#Stel het volume 's nachts in op 80%, anders 100%
#Zodat als ik slaap het niet zo luid is
#if [$CurrentHour -lt $OffHour -a $CurrentHour -ge 11]; dan
# fpp -v 100
#anders
# fpp -v 80
#fi
# Controleer of we iets zinvols hebben
als [-z"${STATUS}"];dan
echo"Fout met statuswaarde">&2
uitgang 1
fi
# Handel naar de huidige status
case${STATUS}in
# INACTIEF
0)
#Nachttijd - speel Song1 met stand-by
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];dan
echo NightSong spelen1
fpp -c stop
fpp -p "${NightSong1}"${STARTITEM}
#Overdag of heel laat - speel nummer 1 één keer en doe dan de lichten uit
anders
echo Spelen DaySong1
fpp -c stop
fpp -P "${DaySong1}"${STARTITEM}
fi
;;
# GRAAG AFSPELEN of STOPPEN (gracieus gebeurt als op de knop wordt gedrukt wanneer een geplande afspeellijst eindigt)
1 | 2)
#Standby is actief - dit werkt omdat standby mijn enige niet-mediasequentie is
if ["$STANDBYSTRING"=="reeks"];dan
#Nachttijd - speel Song1 met stand-by
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];dan
echo NightSong1 spelen voor de nacht
fpp -c stop
fpp -p "${NightSong1}"
#Overdag of heel laat - speel een keer tiger rag en doe dan de lichten uit
anders
echo PlayingDaySong1 van afspelen
fpp -c stop
fpp -P "${DaySong1}"
fi
#Om meer nummers te ondersteunen, kopieert u deze sectie en wijzigt u "Song2Playlist" in de laatste sectie in Song#Playlist
#Song1 loopt
elif ["$PLAYLIST"=="$Song1Playlist"];dan
#Nachttijd - speel Hallelujah met stand-by
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];dan
echo Hallelujah wordt afgespeeld Standby van Tiger Rag draait
fpp -c stop
fpp -p "${NightSong2}"
#Overdag of heel laat - speel Song2 één keer en doe dan de lichten uit
anders
echo Een keer Hallelujah spelen van Tiger Rag draait
fpp -c stop
fpp -P "${DaySong2}"
fi
#LAATSTE NUMMER DRAAIT - SPEEL STANDBY
elif ["$PLAYLIST"=="$Song2Playlist"];dan
#Nachttijd - speel stand-by in lus
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];dan
echo Stand-by afspelen bij herhalen
fpp -c stop
fpp -p "${NightStandby}"
#Overdag of heel laat - speel één keer stand-by
anders
echo Eenmaal in stand-by afspelen
fpp -c stop
fpp -P "${DayStandby}"
fi
anders
echo Om de een of andere reden is de laatste elsecase uitgevoerd.
fpp -c stop
fpp -P "${DaySong1}"
fi
;;
esac

bekijk rawButtonSuperScript.sh gehost met ❤ door GitHub

Stap 5: (Optioneel) Frontplaat voor de knop

Ik heb toegang tot een lasersnijder bij Clemson via de Makerspace, dus ik heb snel een ontwerp geschetst om te snijden + etsen. Er is een gat in het midden voor mijn knoop, de woorden zeggen "Push Me" in een kerstlettertype en een sneeuwvlok rond de knoop. Ik heb wat hout wit gespoten en daarna bedekt met plakband (zodat de lasersnijder geen delen verschroeit die ik niet wil laten etsen). Het bestand dat ik heb gebruikt is bijgevoegd.

Aanbevolen: