Rozpocznij świąteczny pokaz świetlny za pomocą przycisku: 5 kroków
Rozpocznij świąteczny pokaz świetlny za pomocą przycisku: 5 kroków
Anonim
Rozpocznij swój świąteczny pokaz świetlny za pomocą przycisku
Rozpocznij swój świąteczny pokaz świetlny za pomocą przycisku

Prowadząc świąteczny pokaz świetlny zsynchronizowany z muzyką, możesz chcieć rozpocząć pokaz, naciskając przycisk. Ten samouczek dotyczy tylko pokazu kontrolowanego przez Falcon Pi Player (FPP) uruchomiony na Raspberry Pi. Jeśli korzystasz z FPP, prawdopodobnie używasz kontrolerów Falcon i używasz xLights lub LightORama do sekwencjonowania swojego pokazu. Jeśli żadne z tych słów nic ci nie mówi, ten samouczek jest na razie prawdopodobnie trochę przesadzony i powinieneś zacząć od przeczytania tej wiki https://auschristmaslighting.com/wiki/ i dołączenia do grupy na Facebooku, jak poniżej

  • xLights:
  • Ogólne zaawansowane lampki świąteczne:
  • Falcon Pi Player:
  • Dzielenie się pomysłami na obudowy/rekwizyty:
  • „Nie konkretnie xLights lub LOR Related”:
  • Dostawcy xLights Holiday Light:
  • Boże Narodzenie zrób to sam:

Krok 1: Lista części

Będziesz potrzebować następujących przedmiotów:

  • Przycisk. Użyłem tego z pierścieniem LED wokół niego: [Amazon]
  • Rezystor. Najlepiej 200Ω lub więcej (2 z nich, jeśli używasz przycisku LED) Standardowe 1/4W lub 1/8W jest w porządku
  • Przewód łączący. Miernik, którego powinieneś użyć, zależy od odległości przycisku od twojego Pi. Użyłem drutu 18awg na około 10 stóp od mojego Pi i działał bezbłędnie
  • Sposób na podłączenie przewodu do pinów GPIO Pi. Możesz użyć kabla taśmowego z płytką stykową lub możesz po prostu użyć złączy żeńskich, tak jak ja. Potrzebujemy tylko 3 przewodów - uziemienia, 5V i danych do przycisku. [Amazonka]
  • (Opcjonalnie) Wodoodporne złącze na każdym końcu dla łatwej konserwacji. Używam 3-pinowych złączy klasy morskiej: [Amazon]
  • (Opcjonalnie) Złączki termokurczliwe [Amazon]

Krok 2: Schemat połączeń

Schemat połączeń
Schemat połączeń
Schemat połączeń
Schemat połączeń
Schemat połączeń
Schemat połączeń
Schemat połączeń
Schemat połączeń

Na zdjęciach pokazano schemat połączeń przycisku bez dołączonej diody LED oraz przycisku z diodą LED. Sposób, w jaki skonfigurowałem schemat połączeń, pozwala na uruchomienie przycisku i światła (ciągle włączone) za pomocą zaledwie 3 przewodów.

Dla pinu GPIO wybierz dowolny z pinów GPIO na pi. Użyj również pinów +5V i Gnd. Prawdopodobnie możesz uciec z użyciem pinu 3,3 V, ale spadek napięcia na kilku metrach przewodu może sprawić, że sygnał będzie niewiarygodny lub nie wystarczy, aby zapalić diodę LED.

UWAGA: 3-stykowe złącze nie będzie pasować do otworu, w którym należy wywiercić przycisk z pierścieniową lampką LED. Podłącz więc złącze po umieszczeniu przycisku w płycie czołowej.

Krok 3: Podstawowa konfiguracja Falcon Pi Player

UWAGA - FPP jest stale aktualizowane i jest całkowicie możliwe, że poprawią obsługę skryptów lub że domyślną funkcję "naciśnij przycisk, aby rozpocząć", która wymaga mniej programowania.

Postępowałem zgodnie z powyższym filmem, aby wstępnie skonfigurować wszystko.

Uważam, że filmy są nudne i wolne, więc oto ich podsumowanie:

  • Zaimportuj swoją sekwencję do fpp za pomocą menedżera plików
  • Utwórz listę odtwarzania z zawartą w niej sekwencją. W następnych krokach playlista będzie nazywać się „playme”
  • Otwórz pusty plik notatnika i wpisz:

    • #!/kosz/sz
    • fpp -P playme
  • Zapisz go jako plik.sh na swoim komputerze
  • Przejdź do menedżera plików w FPP i prześlij swój plik skryptu. Przejdź do zakładki „Skrypty” i upewnij się, że tam jest
  • W sekcji Status/Kontrola przejdź do Zdarzeń
  • Utwórz nowe wydarzenie. Identyfikator zdarzenia 1/1, nazwa zdarzenia dowolna, sekwencja efektów BRAK, skrypt zdarzenia
  • Przejdź pod Input/Output Setup i kliknij wyzwalacze GPIO
  • Przełącz pinezkę, do której dołączony jest przycisk. Jeśli po naciśnięciu przycisku spadnie, ustaw wydarzenie w opcji Falling, jeśli jest aktywne, ustaw wydarzenie na Rising.
  • Kliknij przycisk Uruchom ponownie, gdy pojawi się ostrzeżenie, które pojawi się po wprowadzeniu wszystkich zmian

Po wykonaniu tych wszystkich czynności powinieneś być w stanie nacisnąć przycisk, aby rozpocząć pokaz. Hurra!

Jednak ta metoda ma pewne ograniczenia. Jeśli naciśniesz przycisk ponownie podczas odtwarzania listy odtwarzania, albo 1) nic nie zrobi, albo 2) spowoduje awarię FPP i odmówi wykonania czegokolwiek z twoim przyciskiem, dopóki go nie zrestartujesz. Jeśli więc po prostu używasz przycisku jako dramatycznego sposobu odtwarzania swojego programu na polecenie, powyższa metoda będzie wszystkim, czego potrzebujesz.

Jeśli potrzebujesz czegoś więcej, przejdź do następnego kroku

Krok 4: Bardziej solidny skrypt

Poniżej znajduje się scenariusz, do którego ostatecznie dotarłem. Możesz zobaczyć skrypt na Github tutaj: [Gist. Github]

  • Jeśli ktoś naciśnie przycisk w „nocnych” godzinach, odtworzy Tiger Rag (mój utwór1), a następnie przejdzie do sekwencji gotowości, która zapętla się w nieskończoność.
  • Jeśli przycisk zostanie naciśnięty podczas odtwarzania Tiger Rag, rozpocznie się moja druga piosenka, Alleluja, a następnie przejdzie do sekwencji gotowości w nieskończoność.
  • Ale jeśli ktoś naciśnie przycisk w ciągu dnia lub bardzo późno w nocy, odtworzy raz Tiger Rag, a następnie wyłączy wszystkie światła.

Dzięki temu przycisk może działać o każdej porze dnia, ale światła nie muszą być włączone przez cały czas. Pozwala również na odtwarzanie wielu utworów za pomocą 1 przycisku, identyfikując aktualnie odtwarzaną piosenkę, kończąc tę piosenkę i odtwarzając „następną” piosenkę.

Więcej zasobów do pisania skryptów w FPP znajdziesz tutaj: https://github.com/FalconChristmas/fpp-scriptsAby uzyskać bardziej skomplikowaną logikę, po prostu wpisz w Google „bash script _”, gdzie podkreślenie jest tym, co próbujesz zrobić. Możesz przetestować swoje skrypty używając powłoki FPP (nazwa użytkownika fpp hasło falcon) Podstawowe polecenia są następujące.

Zwróć uwagę na wielkość liter!!

  • Duże -P odtworzy listę odtwarzania raz, małe -p powtórzy ją.
  • fpp -v 66 Ustaw głośność na 66%
  • fpp -c stop Zatrzymaj pokaz natychmiast
  • fpp -C stop To może być z wdziękiem stop show
  • fpp -p taNazwaListyOdtwarzania Odtwarza tęNazwęListyOdtwarzania przy powtarzaniu (więc utwór wprowadzający jest odtwarzany raz, a następnie materiał Main będzie powtarzany w nieskończoność.
  • fpp -P thisPlaylistName Odtwarza raz tęPlaylistName
  • eventScript "${MEDIADIR}/scripts/${thisScriptVariable}" Uruchamia skrypt. W przypadku po lewej to działa, jeśli masz nazwę skryptu zapisaną w zmiennej gdzieś powyżej, na przykład thisScriptVariable=”PlayTheSong.sh”

ButtonSuperScript.sh

#!/kosz/sz
###########################################################
# Do uruchomienia po naciśnięciu przycisku.
#Powinieneś mieć dwie listy odtwarzania dla każdej piosenki - jedną z
# tylko utwór jako "Pierwszy raz" i nic w main,
# i kolejny z piosenką jako pierwszym odtwarzaniem i w trybie gotowości
# sekwencja jako sekwencja "Main". (Przynajmniej jeśli chcesz
# zrobić dokładnie to, co robię)
#
#Na przykład, jeśli twoja piosenka to Tiger Rag, powinieneś mieć
# playlisty „TigerRag”, „TigerRagStandby” i „Standby”
#
###########################################################
# Listy odtwarzania do uruchomienia, jeśli jest między 6 a 11
NightSong1="Tygrysia SzmataCzuwanie"
NightSong2="AllelujaCzuwanie"
NightStandby="Gotowość"
# Listy odtwarzania do uruchomienia w ciągu dnia lub po 11
DaySong1="Tygrysia Szmata"
DaySong2="Alleluja"
DayStandby="Gotowość"
#Czasy włączania i wyłączania w czasie 24-godzinnym. Jeśli chcesz minut, powodzenia
Godzina = 17
OffGodzina=23
###########################################################
# Wnętrzności skryptu. #
###########################################################
# Uzyskaj nasz aktualny status (BEZCZYNNOŚĆ=0, GRANIE=1, Stopping Gracefully=2)
STATUS=$(fpp -s | wytnij -d', ' -f2)
#Pobierz listę odtwarzania do biegania i przytnij do 7 liter
PLAYLIST=$(fpp -s | wytnij -d', ' -f4 | wytnij -c1-7)
#To będzie „oba”, jeśli odtwarza utwór, i „sekwencja”, jeśli jest w trybie gotowości
#używane do określenia, czy sekwencja czuwania jest uruchomiona
STANDBYSTRING=$(fpp -s | cut -d', ' -f5)
#Pierwsze 7 liter nazw list odtwarzania do porównania
#Tylko 7 liter, aby „Song1Standby” i „Song1” były identyczne
#Dobra, więc właściwie powinny to być pierwsze litery x, a x powinno być najkrótszą nazwą utworu, jaką masz
StandbyPlaylist=$(echo $NightStandby| cut -c1-7)
Song1Playlist=$(echo $NightSong1| cut -c1-7)
Song2Playlist=$(echo $NightSong2| cut -c1-7)
STARTITEM=""
#Uzyskaj aktualną godzinę w czasie wojskowym
Bieżąca godzina=$(data +"%H")
#Wydrukuj status niektórych rzeczy - "echo" jest jak "drukuj" w większości języków
#Przydatne do testowania, czy różne rzeczy zostały poprawnie przycięte lub obliczone
echo Bieżąca godzina to $bieżąca godzina
echo Uruchomiona lista odtwarzania to: $PLAYLIST
echo Song2Playlist to: $Song2Playlist
status echo to: $STATUS
#Ustaw głośność na 80% w nocy, w przeciwnym razie 100%
#Więc jeśli śpię, nie jest tak głośno
#if [$BieżącaGodzina -lt $OffHour -a $BieżącaGodzina -ge 11]; następnie
# fpp -v 100
#w przeciwnym razie
# fpp -v 80
#fi
# Sprawdź, czy mamy coś sensownego
if [-z"${STATUS}"];to
echo"Błąd z wartością stanu">&2
wyjście 1
fi
# Działaj zgodnie z aktualnym stanem
sprawa${STATUS}w
# BEZCZYNNY
0)
#Noc - odtwórz Song1 w trybie gotowości
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];to
echo Grająca piosenkę nocną1
fpp -c zatrzymaj
fpp -p "${NightSong1}"${STARTITEM}
#Czas dzienny lub bardzo późno - odtwórz utwór 1 raz, a następnie wyłącz światła
w przeciwnym razie
echo Playing DaySong1
fpp -c zatrzymaj
fpp -P "${DaySong1}"${STARTITEM}
fi
;;
# ODTWARZANIE lub ZATRZYMYWANIE Z WŁAŚCIWEM (pełne wdzięku dzieje się, gdy przycisk zostanie naciśnięty, gdy zaplanowana lista odtwarzania się kończy)
1 | 2)
#Tryb czuwania jest uruchomiony – działa, ponieważ tryb czuwania to moja jedyna sekwencja niemedialna
if ["$STANDBYSTRING"=="sekwencja"];then
#Noc - odtwórz Song1 w trybie gotowości
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];to
echo Odtwarzanie NightSong1 na noc
fpp -c zatrzymaj
fpp -p "${NightSong1}"
#Pora dnia lub bardzo późno - raz zagraj w tygrysią szmatę, a następnie wyłącz światła
w przeciwnym razie
echo PlayingDaySong1 od odtwarzania
fpp -c zatrzymaj
fpp -P "${Dzień1}"
fi
#Aby obsługiwać więcej utworów, skopiuj tę sekcję i zmień "Song2Playlist" w ostatniej sekcji na Song#Playlist
#Utwór 1 jest uruchomiony
elif ["$PLAYLIST"=="$Song1Playlist"];wtedy
#Noc - graj w Alleluja w trybie gotowości
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];to
echo Granie w HallelujahStandby z Tiger Rag jest uruchomione
fpp -c zatrzymaj
fpp -p "${NightSong2}"
#Czas dzienny lub bardzo późno – odtwórz utwór Song2 raz, a następnie wyłącz światła
w przeciwnym razie
echo Granie w Alleluja raz z Tiger Rag jest uruchomione
fpp -c zatrzymaj
fpp -P "${DaySong2}"
fi
#OSTATNIA PIOSENKA JEST URUCHAMIANA – ZAGRAJ W GOTOWOŚĆ
elif ["$PLAYLIST"=="$Song2Playlist"];wtedy
#Noc - odtwarzanie w trybie gotowości w pętli
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];then
echo Odtwarzanie w trybie gotowości przy powtarzaniu
fpp -c zatrzymaj
fpp -p "${Tryb nocny}"
#Czas dzienny lub bardzo późno - raz w trybie czuwania
w przeciwnym razie
echo Jednorazowe odtwarzanie w trybie gotowości
fpp -c zatrzymaj
fpp -P "${Gotowość na dzień}"
fi
w przeciwnym razie
echo Z jakiegoś powodu wykonane zostało ostatnie elsecase.
fpp -c zatrzymaj
fpp -P "${Dzień1}"
fi
;;
esac

wyświetl rawButtonSuperScript.sh hostowany z ❤ przez GitHub

Krok 5: (Opcjonalnie) Płyta czołowa przycisku

Mam dostęp do wycinarki laserowej w Clemson przez Makerspace, więc szybko naszkicowałem projekt do wycięcia + wytrawiania. W środku jest otwór na mój guzik, słowa „Push Me” pisane świąteczną czcionką i płatek śniegu wokół guzika. Drewno pomalowałem natryskowo na biało, a następnie pokryłem taśmą maskującą (aby wycinarka laserowa nie przypaliła części, których nie chcę wytrawić). Plik, którego użyłem, jest załączony.