Talaan ng mga Nilalaman:

Simulan ang Iyong Christmas Light Show Sa Isang Button: 5 Hakbang
Simulan ang Iyong Christmas Light Show Sa Isang Button: 5 Hakbang

Video: Simulan ang Iyong Christmas Light Show Sa Isang Button: 5 Hakbang

Video: Simulan ang Iyong Christmas Light Show Sa Isang Button: 5 Hakbang
Video: Mike Swift performs “Kalendaryo” LIVE on Wish 107.5 Bus 2024, Hulyo
Anonim
Simulan ang Iyong Christmas Light Show Sa Isang Button
Simulan ang Iyong Christmas Light Show Sa Isang Button

Kapag nagpapatakbo ng isang Christmas light show na naka-sync sa musika baka gusto mong simulan ang palabas sa pamamagitan ng pagpindot sa isang pindutan. Nalalapat lamang ang tutorial na ito para sa isang palabas na kontrolado sa pamamagitan ng Falcon Pi Player (FPP) na tumatakbo sa isang Raspberry Pi. Kung nagpapatakbo ka ng FPP malamang na gumagamit ka ng mga Falcon Controller at gumagamit ng xLights o LightORama upang isunud-sunod ang iyong palabas. Kung wala sa mga salitang iyon ang may katuturan sa iyo, ang tutorial na ito ay marahil medyo nasa ulo mo para sa ngayon at dapat kang magsimula sa pamamagitan ng pagbabasa ng wiki na ito https://auschristmaslighting.com/wiki/ at pagsali sa isang pangkat sa Facebook tulad ng sa ibaba

  • xLights:
  • Pangkalahatang mga advanced Christmas lights:
  • Falcon Pi Player:
  • Pagbabahagi ng ideya ng enclosure / prop:
  • "Hindi partikular na xLights o LOR Kaugnay": Ngunit
  • xLights Holiday Light vendor:
  • Gawin ang Iyong Sarili Pasko:

Hakbang 1: Listahan ng Mga Bahagi

Kakailanganin mo ang mga sumusunod na item:

  • Isang pindutan. Ginamit ko ang isang ito gamit ang isang LED ring light sa paligid nito: [Amazon]
  • Isang risistor. Mas mabuti 200Ω o mas mataas (2 sa mga ito kung ginagamit mo ang LED button) Karaniwan 1 / 4W o 1 / 8W ay mabuti
  • Wire ng konektor. Ang gauge na dapat mong gamitin ay nakasalalay sa kung gaano kalayo ang pindutan mula sa iyong Pi. Gumamit ako ng 18awg wire para sa halos 10 talampakan mula sa aking Pi at ito ay gumana nang walang kamali-mali
  • Isang paraan upang ikonekta ang isang kawad sa mga pin ng GPIO ng Pi. Maaari kang gumamit ng isang ribbon cable na may breakout breadboard, o maaari mo lamang gamitin ang ilang mga babaeng konektor tulad ng ginawa ko. Kailangan lang namin ng 3 wires - Ground, 5V, at data para sa pindutan. [Amazon]
  • (Opsyonal) Isang konektor na hindi tinatagusan ng tubig sa bawat dulo para sa madaling pagpapanatili. Gumagamit ako ng mga 3-pin na konektor sa antas ng dagat: [Amazon]
  • (Opsyonal) Painit ang mga konektor ng pag-urong ng puwit [Amazon]

Hakbang 2: Diagram ng Mga Kable

Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable
Diagram ng Kable

Ang mga larawan ay nagpapakita ng isang diagram ng mga kable para sa isang pindutan nang walang kasamang LED, at isang pindutan na may LED. Ang paraan ng pag-set up ko ng diagram ng mga kable ay nagbibigay-daan sa iyo upang magpatakbo ng isang pindutan at isang ilaw (patuloy na nakabukas) na may 3 wires lamang.

Para sa pin ng GPIO, pumili ng alinman sa mga pin ng GPIO sa pi. Gamitin ang mga + 5V at Gnd pin din. Marahil ay maaari kang makawala sa paggamit ng 3.3V pin, ngunit ang pagbagsak ng boltahe sa maraming paa ng kawad ay maaaring gawing hindi maaasahan ang signal o hindi sapat upang magaan ang LED.

TANDAAN: Ang 3-pin na konektor ay hindi magkakasya sa butas na kailangan mo upang mag-drill para sa isang pindutan na may ilaw na singsing na LED. Kaya ikabit ang konektor pagkatapos ilagay ang pindutan sa iyong faceplate.

Hakbang 3: Pangunahing Pag-setup ng Falcon Pi Player

TANDAAN - Patuloy na ina-update ang FPP, at posible na mapabuti nila ang kanilang suporta sa script o isasama nila ang "push button upang magsimula" bilang isang default na tampok na nangangailangan ng mas kaunting programa.

Sinundan ko ang video sa itaas para sa una kong pag-set up ng lahat.

Nakita kong mayamot at mabagal ang mga video, kaya narito ang isang buod nito:

  • I-import ang iyong pagkakasunud-sunod sa fpp gamit ang file manager
  • Lumikha ng isang playlist na may pagkakasunud-sunod dito. Para sa mga susunod na hakbang ang playlist ay tatawaging "playme"
  • Magbukas ng isang blangko na file ng notepad at i-type ang sumusunod:

    • #! / bin / sh
    • fpp -P playme
  • I-save ito bilang isang.sh file sa iyong computer
  • Pumunta sa file manager sa FPP at i-upload ang iyong file ng script. Pumunta sa tab na "Mga Script" at tiyaking nandiyan ito
  • Sa ilalim ng Katayuan / Pagkontrol pumunta sa Mga Kaganapan
  • Lumikha ng isang bagong kaganapan. Kaganapan ID 1/1, Pangalan ng kaganapan anupaman, Sequence ng Epekto WALA, Script ng Kaganapan
  • Pumunta sa ilalim ng Pag-setup ng Input / Output at i-click ang mga pag-trigger ng GPIO
  • I-toggle ang pin na nakakabit ang iyong pindutan. Kung magiging mababa ito kapag pinindot mo ang pindutan pagkatapos ilagay ang kaganapan sa pagpipilian na Pagbagsak, kung ito ay aktibo nang mataas pagkatapos ay ilagay ang kaganapan sa Rising.
  • I-click ang pindutang Reboot sa pamamagitan ng babalang pop up pagkatapos mong gawin ang lahat ng mga pagbabago

Matapos gawin ang lahat ng ito, dapat mong ma-press ang pindutan upang masimulan ang iyong palabas. Woohoo!

Gayunpaman, ang pamamaraang ito ay may ilang mga limitasyon. Kung pinindot mo muli ang pindutan habang papunta ang playlist, alinman sa 1) ay hindi gagawa ng anumang bagay o 2) ay mag-crash sa FPP at tatanggi na gumawa ng anumang bagay sa iyong pindutan hanggang sa i-reboot mo ito. Kaya't kung gumagamit ka lamang ng isang pindutan bilang isang dramatikong paraan ng pag-play ng iyong palabas sa utos, ang pamamaraan sa itaas ay ang kailangan mo.

Kung kailangan mo ng isang bagay pa, magpatuloy sa susunod na hakbang

Hakbang 4: Isang Mas Malakas na Script

Nasa ibaba ang iskrip na kalaunan ay nakarating ako. Maaari mong tingnan ang script sa Github dito: [Gist. Github]

  • Kung ang isang tao ay pinindot ang pindutan sa oras ng "gabi" ay maglalaro ito ng Tiger Rag (aking Song1) at pagkatapos ay pumunta sa standby na pagkakasunud-sunod na nag-loop nang walang katapusan.
  • Kung ang pindutan ay pinindot habang tumutugtog ang Tiger Rag pagkatapos ay sisimulan nito ang aking pangalawang kanta, Hallelujah, at pagkatapos ay pupunta sa standby na pagkakasunud-sunod.
  • Ngunit kung ang isang tao ay pinindot ang pindutan sa araw o huli na sa gabi ay maglalaro ito ng Tiger Rag nang isang beses at pagkatapos ay patayin ang lahat ng mga ilaw.

Pinapayagan nitong gumana ang pindutan sa anumang oras ng araw ngunit ang mga ilaw ay hindi dapat palaging nasa lahat ng oras. Pinapayagan din nito ang maraming mga kanta upang i-play mula sa 1 pindutan sa pamamagitan ng pagkilala kung aling kanta ang kasalukuyang tumutugtog, nagtatapos sa kantang iyon, at nagpe-play ng "susunod" na kanta.

Maaari kang makahanap ng higit pang mga mapagkukunan para sa pag-iskrip sa FPP dito: https://github.com/FalconChristmas/fpp-scriptsPara sa mas kumplikadong lohika sa google lamang "bash script _" kung saan sa ilalim ng salita ay sinusubukan mong gawin. Maaari mong subukan ang iyong mga script gamit ang FPP Shell (username fpp password falcon) Ang mga pangunahing utos ay ang mga sumusunod.

Magbayad ng pansin sa capitalization !!

  • Ang Capital -P ay maglalaro ng isang playlist nang isang beses, ang maliit na titik -p ay uulitin ito.
  • fpp -v 66 Itakda ang dami sa 66%
  • fpp -c stop Itigil kaagad ang palabas
  • fpp -C stop Ito ay maaaring ihinto ang pagpapakita ng kaaya-aya
  • fpp -p thisPlaylistName Nagpe-play itoPlaylistName nang paulit-ulit (kaya't ang intro na kanta ay tumutugtog nang isang beses, pagkatapos ang Pangunahing bagay ay ulitin nang walang katiyakan.
  • fpp -P thisPlaylistName Nagpe-play itoPlaylistName nang isang beses
  • eventScript "$ {MEDIADIR} / scripts / $ {thisScriptVariable}" Nagpapatakbo ng isang script. Sa kaso sa kaliwa gumagana ito kung mayroon kang naka-save na pangalan ng iyong script sa isang variable sa isang lugar sa itaas, tulad nitoScriptVariable = "PlayTheSong.sh"

ButtonSuperScript.sh

#! / bin / sh
###########################################################
# Upang patakbuhin kung ang pindutan ay pinindot.
# Dapat kang magkaroon ng dalawang playlist para sa bawat kanta - isa kasama
# ang kanta lang bilang "First play" at wala sa pangunahing,
# at isa pa kasama ang kanta bilang unang pag-play at ang iyong pag-standby
# pagkakasunud-sunod bilang "pagkakasunud-sunod" na pagkakasunud-sunod. (Hindi bababa sa kung nais mo
# upang gawin ang eksaktong bagay na ginagawa ko)
#
# Halimbawa, kung ang iyong kanta ay Tiger Rag, dapat mayroon ka
# mga playlist na "TigerRag", "TigerRagStandby", at "Standby"
#
###########################################################
# Mga playlist upang tumakbo kung ito ay nasa pagitan ng 6 at 11
NightSong1 = "TigerRagStandby"
NightSong2 = "HallelujahStandby"
NightStandby = "Standby"
# Mga playlist upang tumakbo sa araw o makalipas ang 11
DaySong1 = "TigerRag"
DaySong2 = "Hallelujah"
DayStandby = "Standby"
#On at off na oras sa 24 oras na oras. Kung gusto mo ng minuto, good luck
OnHour = 17
OffHour = 23
###########################################################
# Lakas ng loob ng script. #
###########################################################
# Kunin ang aming kasalukuyang katayuan (IDLE = 0, PAGLARO = 1, Pagtigil ng Grace = 2)
STATUS = $ (fpp -s | cut -d ',' -f2)
#Kunin ang tumatakbo na playlist at i-trim sa 7 mga titik
PLAYLIST = $ (fpp -s | cut -d ',' -f4 | cut -c1-7)
#Ito ay magiging "pareho" kung nagpe-play ito ng isang kanta, at "pagkakasunud-sunod" kung ito ay standby
#ginagamit upang matukoy kung tumatakbo ang pagkakasunud-sunod ng Standby
STANDBYSTRING = $ (fpp -s | cut -d ',' -f5)
# Una sa 7 titik ng mga pangalan ng mga playlist para sa paghahambing
# Lamang sa 7 titik upang magkatulad ang "Song1Standby" at "Song1"
#Okay kaya talaga dapat itong unang x titik at x dapat ang pinakamaikling pangalan ng kanta na mayroon ka
StandbyPlaylist = $ (echo $ NightStandby | cut -c1-7)
Song1Playlist = $ (echo $ NightSong1 | cut -c1-7)
Song2Playlist = $ (echo $ NightSong2 | cut -c1-7)
SIMULA = ""
#Kunin ang kasalukuyang oras sa oras ng militar
Kasalukuyang Oras = $ (petsa + "% H")
#I-print ang katayuan ng ilang mga bagay - ang "echo" ay tulad ng "print" sa karamihan ng mga wika
# Kapaki-pakinabang para sa pagsubok kung ang iba't ibang mga bagay na na-trim o kinakalkula nang tama
ang echo CurrentHour ay $ CurrentHour
echo Running playlist ay: $ PLAYLIST
echo Song2Playlist ay: $ Song2Playlist
ang Katayuan ng echo ay: $ STATUS
#Itakda ang volume sa 80% sa gabi, 100% kung hindi man
#Kaya't kung natutulog ako ay hindi ito malakas
#kung [$ CurrentHour -lt $ OffHour -a $ Kasalukuyang Oras -ge 11]; tapos
# fpp -v 100
#else
# fpp -v 80
#fi
# Suriin na nakakuha kami ng isang bagay na makabuluhan
kung [-z "$ {STATUS}"]; kung gayon
echo ang "Error sa halagang katayuan"> & 2
exit 1
fi
# Kumilos sa kasalukuyang katayuan
kaso $ {STATUS} sa
# WALANG GINAGAWA
0)
#Night time - maglaro ng Song1 kasama ang pag-standby
kung [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; pagkatapos
echo Playing NightSong1
fpp -c huminto
fpp -p "$ {NightSong1}" $ {StartITEM}
Oras ng # Araw o huli talaga - patugtugin ang kanta 1 nang isang beses pagkatapos patayin ang mga ilaw
iba pa
echo Playing DaySong1
fpp -c huminto
fpp -P "$ {DaySong1}" $ {STARTITEM}
fi
;;
# PLAYING o STOPPING GRACEFULLY (kaaya-aya ang nangyayari kung pinindot ang pindutan kapag nagtatapos ang isang naka-iskedyul na playlist)
1 | 2)
Tumatakbo ang #Standby - gagana ito dahil ang standby ang tanging pagkakasunud-sunod kong hindi pang-media
kung ["$ STANDBYSTRING" == "pagkakasunud-sunod"]; kung gayon
#Night time - maglaro ng Song1 kasama ang pag-standby
kung [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; kung gayon
echo Playing NightSong1 para sa oras ng gabi
fpp -c huminto
fpp -p "$ {NightSong1}"
#Day time o talagang huli - maglaro ng basahan ng tigre minsan pagkatapos patayin ang mga ilaw
iba pa
echo PlayingDaySong1 mula sa paglalaro
fpp -c huminto
fpp -P "$ {DaySong1}"
fi
#Upang suportahan ang maraming kanta, kopyahin ang seksyong ito at baguhin ang "Song2Playlist" sa huling seksyon sa Song # Playlist
Tumatakbo ang # Song1
elif ["$ PLAYLIST" == "$ Song1Playlist"]; pagkatapos
#Gabi ng gabi - maglaro ng Hallelujah kasama ang pag-standby
kung [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; kung gayon
echo Playing HallelujahStandby mula sa Tiger Rag ay tumatakbo
fpp -c huminto
fpp -p "$ {NightSong2}"
Oras ng # Araw o huli na talaga - maglaro ng Song2 minsan pagkatapos patayin ang mga ilaw
iba pa
echo Playing Hallelujah isang beses mula sa Tiger Rag ay tumatakbo
fpp -c huminto
fpp -P "$ {DaySong2}"
fi
#LAST SONG IS RUNNING - MAGLARO NG STANDBY
elif ["$ PLAYLIST" == "$ Song2Playlist"]; pagkatapos
#Night night - maglaro ng standby sa loop
kung [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; pagkatapos
pag-play ng standby ng standby sa ulitin
fpp -c huminto
fpp -p "$ {NightStandby}"
#Day time o talagang huli - maglaro ng standby nang isang beses
iba pa
echo Playing Standby Once
fpp -c huminto
fpp -P "$ {DayStandby}"
fi
iba pa
echo Para sa ilang kadahilanan ang huling elsecase ay naisakatuparan.
fpp -c huminto
fpp -P "$ {DaySong1}"
fi
;;
esac

tingnan ang raw ButtonSuperScript.sh naka-host sa ❤ ng GitHub

Hakbang 5: (Opsyonal) Faceplate para sa Button

Mayroon akong access sa isang laser cutter sa Clemson sa pamamagitan ng Makerspace, kaya't mabilis akong nag-sketch ng isang disenyo upang i-cut ang + etch. Mayroong isang butas sa gitna para sa aking pindutan, ang mga salitang "Push Me" sa isang font ng Pasko, at isang snowflake sa paligid ng pindutan. Nag-spray ako ng ilang puting kahoy at pagkatapos ay tinakpan ito ng masking tape (upang ang laser cutter ay hindi magsunog ng mga bahagi na hindi ko nais ng nakaukit). Nakalakip ang ginamit kong file.

Inirerekumendang: