Obsah:

Spusťte vánoční světelnou show tlačítkem: 5 kroků
Spusťte vánoční světelnou show tlačítkem: 5 kroků

Video: Spusťte vánoční světelnou show tlačítkem: 5 kroků

Video: Spusťte vánoční světelnou show tlačítkem: 5 kroků
Video: Horizon: Forbidden West (film) 2024, Červenec
Anonim
Zahajte svou vánoční světelnou show tlačítkem
Zahajte svou vánoční světelnou show tlačítkem

Při spuštění vánoční světelné show synchronizované s hudbou možná budete chtít zahájit show stisknutím tlačítka. Tento tutoriál je použitelný pouze pro show, která je ovládána pomocí Falcon Pi Player (FPP) běžícího na Raspberry Pi. Pokud používáte FPP, pravděpodobně používáte řadiče Falcon a používáte xLights nebo LightORama k sekvenování vaší show. Pokud vám žádné z těchto slov nic neříká, tento návod je prozatím pravděpodobně trochu nad hlavou a měli byste začít tím, že si přečtete tuto wiki https://auschristmaslighting.com/wiki/ a připojíte se ke skupině na Facebooku jako níže

  • xLights:
  • Obecná pokročilá vánoční světla:
  • Přehrávač Falcon Pi:
  • Sdílení nápadů na skříně/rekvizity:
  • „Ne konkrétně xLights nebo LOR related“:
  • Prodejci xLights Holiday Light:
  • Udělejte si Vánoce sami:

Krok 1: Seznam dílů

Budete potřebovat následující položky:

  • Tlačítko. Použil jsem toto s LED kruhovým světlem kolem: [Amazon]
  • Rezistor. Výhodně 200Ω nebo více (2 z nich, pokud používáte tlačítko LED) Standardní 1/4W nebo 1/8W je v pořádku
  • Spojovací vodič. Měřidlo, které byste měli použít, závisí na tom, jak daleko bude tlačítko od vašeho Pi. Použil jsem 18awg drát asi 10 stop od mého Pi a fungoval bezchybně
  • Způsob připojení vodiče k pinům GPIO Pi. Můžete použít plochý kabel s odlamovacím prkénkem, nebo můžete použít některé konektory, jako jsem to udělal já. Potřebujeme pouze 3 vodiče - uzemnění, 5V a data pro tlačítko. [Amazonka]
  • (Volitelné) Vodotěsný konektor na obou koncích pro snadnou údržbu. Používám 3pinové konektory pro námořní účely: [Amazon]
  • (Volitelné) Teplem smrštitelné konektory na tupo [Amazon]

Krok 2: Schéma zapojení

Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma
Elektrické schéma

Na obrázcích je schéma zapojení tlačítka bez přiložené LED diody a tlačítka s LED diodou. Způsob, jakým jsem nastavil schéma zapojení, vám umožňuje spustit tlačítko a světlo (nepřetržitě svítí) pouhými 3 vodiči.

Pro pin GPIO vyberte některý z kolíků GPIO na pí. Použijte také piny +5V a Gnd. Pravděpodobně byste se mohli dostat pryč s použitím 3,3 V kolíku, ale pokles napětí na několika stopách drátu může způsobit, že signál bude nespolehlivý nebo nebude stačit k rozsvícení LED.

POZNÁMKA: 3kolíkový konektor nepasuje otvorem, který potřebujete vyvrtat pro tlačítko s LED kruhovým světlem. Po vložení tlačítka do čelní desky tedy připojte konektor.

Krok 3: Základní nastavení přehrávače Falcon Pi Player

POZNÁMKA - FPP se neustále aktualizuje a je zcela možné, že zlepší svoji podporu skriptování nebo že jako výchozí funkci, která vyžaduje méně programování, bude obsahovat „tlačítko pro spuštění“.

Podle výše uvedeného videa jsem zpočátku vše nastavil.

Vidím videa nudná a pomalá, takže zde je jejich shrnutí:

  • Importujte svou sekvenci na fpp pomocí správce souborů
  • Vytvořte seznam skladeb s uvedenou sekvencí. Pro další kroky bude seznam skladeb nazýván „playme“
  • Otevřete prázdný soubor poznámkového bloku a zadejte následující:

    • #!/bin/sh
    • fpp -P playme
  • Uložte jej jako soubor.sh do počítače
  • Přejděte do správce souborů v FPP a nahrajte soubor skriptu. Přejděte na kartu „Skripty“a ujistěte se, že tam je
  • V části Status/Control přejděte na Events
  • Vytvořte novou událost. ID události 1/1, název události libovolný, efektová sekvence ŽÁDNÝ, skript události
  • Přejděte do části Nastavení vstupu/výstupu a klikněte na spouště GPIO
  • Přepněte pin, ke kterému je připojeno tlačítko. Pokud se po stisknutí tlačítka sníží, pak umístíte událost na možnost Falling, pokud je aktivní vysoko, umístíte událost na Rising.
  • Klikněte na tlačítko Restartovat varováním, které se objeví po provedení všech změn

Po tom všem byste měli být schopni stisknout tlačítko, aby vaše show mohla začít. Woohoo!

Tato metoda má však určitá omezení. Pokud tlačítko znovu stisknete během přehrávání seznamu stop, buď 1) nic neudělá, nebo 2) zhroutí FPP a odmítne s vaším tlačítkem cokoli dělat, dokud jej nerestartujete. Pokud tedy používáte pouze tlačítko jako dramatický způsob hraní show na povel, výše uvedená metoda bude vše, co potřebujete.

Pokud potřebujete něco víc, pokračujte dalším krokem

Krok 4: Robustnější skript

Níže je skript, ke kterému jsem nakonec dospěl. Scénář si můžete prohlédnout na Githubu zde: [Gist. Github]

  • Pokud někdo stiskne tlačítko během „nočních“hodin, přehraje Tiger Rag (moje píseň1) a poté přejde do pohotovostní sekvence, která se nekonečně opakuje.
  • Pokud je tlačítko stisknuto během přehrávání Tiger Rag, spustí se moje druhá píseň Hallelujah a poté přejde do pohotovostního režimu na neurčito.
  • Pokud ale někdo stiskne tlačítko ve dne nebo velmi pozdě v noci, jednou si zahraje Tiger Rag a poté zhasne všechna světla.

Díky tomu může tlačítko fungovat kdykoli během dne, ale světla nemusí být stále zapnutá. Umožňuje také přehrávání více skladeb z 1 tlačítka podle identifikace právě přehrávané skladby, ukončení této skladby a přehrání „další“skladby.

Další zdroje pro skriptování v FPP najdete zde: https://github.com/FalconChristmas/fpp-scripts Pro složitější logiku stačí vygooglit „bash script _“, kde se podtržítko snažíte. Své skripty můžete vyzkoušet pomocí FPP Shell (uživatelské jméno fpp heslo falcon) Základní příkazy jsou následující.

Dávejte pozor na velká písmena !!

  • Capital -P jednou přehraje seznam skladeb, malá písmena -p jej zopakuje.
  • fpp -v 66 Nastavit hlasitost na 66%
  • fpp -c stop Okamžité zastavení show
  • fpp -C stop To by mohla být stop show ladně
  • fpp -p thisPlaylistName Přehraje thisPlaylistName při opakování (úvodní píseň se tedy přehraje jednou, pak se hlavní věci budou opakovat donekonečna.
  • fpp -P thisPlaylistName Přehraje thisPlaylistName jednou
  • eventScript "$ {MEDIADIR}/scripts/$ {thisScriptVariable}" Spustí skript. V případě vlevo to funguje, pokud máte název skriptu uložený v proměnné někde výše, například thisScriptVariable =”PlayTheSong.sh”

ButtonSuperScript.sh

#!/bin/sh
###########################################################
#Spustí se po stisknutí tlačítka.
#Ke každé skladbě byste měli mít dva seznamy skladeb - jeden s
# jen píseň jako „První hra“a nic v zásadě,
# a další se skladbou při prvním přehrávání a v pohotovostním režimu
# sekvence jako „hlavní“sekvence. (Alespoň pokud chcete
# dělat přesně to, co dělám)
#
#Například, pokud je vaše píseň Tiger Rag, měli byste mít
# seznamy skladeb „TigerRag“, „TigerRagStandby“a „Standby“
#
###########################################################
# Seznamy ke spuštění, pokud se pohybují mezi 6 a 11
NightSong1 = "TigerRagStandby"
NightSong2 = "HallelujahStandby"
NightStandby = "Pohotovostní režim"
# Seznamy skladeb, které se budou spouštět během dne nebo po 11
DaySong1 = "TigerRag"
DaySong2 = "Hallelujah"
DayStandby = "Pohotovostní režim"
#Časy zapnutí a vypnutí za 24 hodin. Pokud chcete minuty, hodně štěstí
OnHour = 17
OffHour = 23
###########################################################
# Vnitřnost scénáře. #
###########################################################
# Získejte náš aktuální stav (IDLE = 0, PLAYING = 1, Stopting Gracefully = 2)
STATUS = $ (fpp -s | cut -d ',' -f2)
#Získejte běžící seznam skladeb a ořízněte jej na 7 písmen
PLAYLIST = $ (fpp -s | cut -d ',' -f4 | cut -c1-7)
#Bude to „obojí“, pokud hraje skladba, a „sekvence“, pokud je v pohotovostním režimu
#používá se k určení, zda je spuštěna pohotovostní sekvence
STANDBYSTRING = $ (fpp -s | cut -d ',' -f5)
#Prvních 7 písmen názvů seznamů skladeb pro srovnání
#Stačí 7 písmen, aby „Song1Standby“a „Song1“byly totožné
#Dobře, ve skutečnosti by to mělo být prvních x písmen a x by mělo být nejkratší název skladby, který máte
StandbyPlaylist = $ (echo $ NightStandby | cut -c1-7)
Song1Playlist = $ (echo $ NightSong1 | cut -c1-7)
Song2Playlist = $ (echo $ NightSong2 | cut -c1-7)
STARTITEM = ""
#Získejte aktuální hodinu ve vojenském čase
CurrentHour = $ (datum +"%H")
#Vytiskněte stav některých věcí - „echo“je ve většině jazyků jako „tisk“
#Užitečné pro testování, pokud jsou různé věci ořezány nebo vypočítány správně
echo CurrentHour je $ CurrentHour
echo Running playlist je: $ PLAYLIST
echo Song2Playlist je: $ Song2Playlist
echo Status je: $ STATUS
#Nastavte hlasitost na 80% v noci, 100% jinak
#Takže když spím, není to tak hlasité
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; pak
# fpp -v 100
#jiný
# fpp -v 80
#fi
# Zkontrolujte, zda máme něco smysluplného
pokud [-z "$ {STATUS}"]; potom
echo „Chyba se stavovou hodnotou“> & 2
výstup 1
fi
# Jednejte podle aktuálního stavu
případ $ {STATUS} v
# IDLE
0)
#Noc - hrajte Song1 v pohotovostním režimu
pokud [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; then
echo Playing NightSong1
fpp -c stop
fpp -p "$ {NightSong1}" $ {STARTITEM}
#Denní doba nebo opravdu pozdní doba - jednou přehrajte skladbu 1 a poté zhasněte světla
jiný
echo Playing DaySong1
fpp -c stop
fpp -P "$ {DaySong1}" $ {STARTITEM}
fi
;;
# PLAYING or STOPPING GRACEFULLY (Gracefully occurs if button printed when a scheduled playlist is ends)
1 | 2)
#Pohotovostní režim běží - to funguje, protože pohotovostní režim je moje jediná nemediální sekvence
pokud ["$ STANDBYSTRING" == "sekvence"]; pak
#Noc - hrajte Song1 v pohotovostním režimu
pokud [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; then
echo Playing NightSong1 pro noční čas
fpp -c stop
fpp -p "$ {NightSong1}"
#Den nebo opravdu pozdě - jednou si zahrajte tygří hadr a poté zhasněte světla
jiný
echo PlayingDaySong1 z hraní
fpp -c stop
fpp -P "$ {DaySong1}"
fi
#Chcete -li podporovat více skladeb, zkopírujte tuto sekci a v poslední sekci změňte „Song2Playlist“na Song#Playlist
#Song1 běží
elif ["$ PLAYLIST" == "$ Song1Playlist"]; poté
#Noc - hrajte Hallelujah s pohotovostním režimem
pokud [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; then
echo Playing HallelujahStandby od Tiger Rag běží
fpp -c stop
fpp -p "$ {NightSong2}"
#Denní čas nebo opravdu zpoždění - jednou si pustte Song2 a poté zhasněte světla
jiný
echo Hra Hallelujah once from Tiger Rag is running
fpp -c stop
fpp -P "$ {DaySong2}"
fi
#POSLEDNÍ PÍSNĚ BĚŽÍ - PŘEHRÁVEJTE POHOTOVOST
elif ["$ PLAYLIST" == "$ Song2Playlist"]; poté
#Noční čas - přehrávání v pohotovostním režimu na smyčce
pokud [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; then
echo Přehrávání v pohotovostním režimu při opakování
fpp -c stop
fpp -p "$ {NightStandby}"
#Denní čas nebo opravdu pozdní - jednou si zahrajte pohotovostní režim
jiný
echo Přehrávání v pohotovostním režimu jednou
fpp -c stop
fpp -P "$ {DayStandby}"
fi
jiný
echo Z nějakého důvodu byl spuštěn poslední elsecase.
fpp -c stop
fpp -P "$ {DaySong1}"
fi
;;
esac

zobrazit rawButtonSuperScript.sh hostovaný s ❤ od GitHub

Krok 5: (Volitelné) Čelní panel pro tlačítko

Mám přístup k laserové řezačce v Clemsonu přes Makerspace, takže jsem rychle načrtl návrh, který mám vystřihnout+leptat. Uprostřed je díra pro mé tlačítko, nápis „Push Me“ve vánočním písmu a sněhová vločka kolem tlačítka. Nastříkal jsem nějaké dřevo na bílo a poté jsem to zalepil maskovací páskou (aby laserová řezačka nespálila části, které nechci leptat). Soubor, který jsem použil, je přiložen.

Doporučuje: