Sisällysluettelo:

Aloita joulun valoshow painikkeella: 5 vaihetta
Aloita joulun valoshow painikkeella: 5 vaihetta

Video: Aloita joulun valoshow painikkeella: 5 vaihetta

Video: Aloita joulun valoshow painikkeella: 5 vaihetta
Video: VIIKON UTILAISET UUTISET - 30 | Salaperäinen | Universumi | UFOt | Paranormaalia 2024, Marraskuu
Anonim
Aloita joulun valoshow napilla
Aloita joulun valoshow napilla

Kun suoritat musiikkiin synkronoidun jouluvalon, saatat haluta aloittaa ohjelman painamalla painiketta. Tämä opetusohjelma koskee vain ohjelmaa, jota ohjataan Raspberry Pi -laitteella toimivan Falcon Pi Playerin (FPP) kautta. Jos käytät FPP: tä, käytät luultavasti Falcon -ohjaimia ja käytät xLights- tai LightORama -ohjelmaa esityksesi järjestämiseen. Jos mikään näistä sanoista ei merkitse sinulle mitään, tämä opetusohjelma on luultavasti hieman pään yläpuolella ja sinun pitäisi aloittaa lukemalla tämä wiki https://auschristmaslighting.com/wiki/ ja liittymällä alla olevaan Facebook -ryhmään

  • xLights:
  • Yleiset edistyneet jouluvalot:
  • Falcon Pi Player:
  • Liite/ehdotusidean jakaminen:
  • "Ei nimenomaan xLights tai LOR -aiheeseen liittyvä":
  • xLights Holiday Light -myyjät:
  • Tee se itse joulu:

Vaihe 1: Osaluettelo

Tarvitset seuraavat tuotteet:

  • Nappi. Käytin tätä LED -rengasvalon ympärillä: [Amazon]
  • Vastus. Mieluiten 200Ω tai enemmän (2 näistä, jos käytät LED -painiketta) Vakio 1/4W tai 1/8W on hyvä
  • Liitinjohto. Käytettävä mittari riippuu siitä, kuinka kaukana painike on Pi: stä. Käytin 18awg -lankaa noin 10 metrin päässä Pi: stäni ja se toimi moitteettomasti
  • Tapa yhdistää johto Pi: n GPIO -nastoihin. Voit käyttää nauhakaapelia katkaisuleipälevyn kanssa tai käyttää vain naarasliittimiä kuten minä. Tarvitsemme vain 3 johtoa - maadoitus, 5 V ja tiedot painikkeelle. [Amazon]
  • (Valinnainen) Vedenpitävä liitin kummassakin päässä helpottaa huoltoa. Käytän 3-nastaisia meriliittimiä: [Amazon]
  • (Valinnainen) Lämpökutistuvat liittimet [Amazon]

Vaihe 2: Kytkentäkaavio

Kytkentäkaavio
Kytkentäkaavio
Kytkentäkaavio
Kytkentäkaavio
Kytkentäkaavio
Kytkentäkaavio
Kytkentäkaavio
Kytkentäkaavio

Kuvissa on kytkentäkaavio painikkeelle, jossa ei ole LEDiä, ja painikkeelle, jossa on LED. Kytkentäkaavion määrittämisen avulla voit käyttää painiketta ja valoa (jatkuvasti päällä) vain 3 johdolla.

Valitse GPIO -nastalle mikä tahansa GP: n nastasta pi. Käytä myös +5V- ja Gnd -nastoja. Voit luultavasti päästä eroon käyttämällä 3,3 V: n nastaa, mutta jännitehäviö useiden jalkojen johdossa saattaa tehdä signaalista epäluotettavan tai ei riitä sytyttämään LED -valon.

HUOMAUTUS: 3-nastainen liitin ei sovi reikään, jonka sinun on porattava nappia varten LED-rengasvalolla. Kiinnitä siis liitin sen jälkeen, kun painike on asetettu etulevyyn.

Vaihe 3: Falcon Pi Playerin perusasetukset

HUOMAUTUS - FPP: tä päivitetään jatkuvasti, ja on täysin mahdollista, että he parantavat komentosarjatukeaan tai että niissä on "käynnistyspainike" oletusominaisuutena, joka vaatii vähemmän ohjelmointia.

Seurasin yllä olevaa videota saadakseni kaiken valmiiksi.

Minusta videot ovat tylsiä ja hitaita, joten tässä tiivistelmä siitä:

  • Tuo sekvenssi fpp: hen tiedostonhallinnan avulla
  • Luo soittolista, jossa on järjestys. Seuraavissa vaiheissa soittolistan nimi on "playme"
  • Avaa tyhjä muistilehtiö ja kirjoita seuraava:

    • #!/bin/sh
    • fpp -P -peli
  • Tallenna se.sh -tiedostona tietokoneellesi
  • Siirry FPP: n tiedostonhallintaan ja lataa komentotiedosto. Siirry "Skriptit" -välilehdelle ja varmista, että se on siellä
  • Siirry Tila/Ohjaus -kohdassa Tapahtumat
  • Luo uusi tapahtuma. Tapahtuman tunnus 1/1, Tapahtuman nimi mikä tahansa, Tehosekvenssi NONE, Tapahtumakomentosarja
  • Siirry Input/Output Setup -kohtaan ja napsauta GPIO triggers
  • Vaihda tappi, johon painike on kiinnitetty. Jos se laskee alhaiseksi, kun painat painiketta ja aseta tapahtuma Falling -vaihtoehtoon, jos se on aktiivinen korkealle, aseta tapahtuma Rising.
  • Napsauta Käynnistä uudelleen -painiketta varoitusviestillä, joka tulee näkyviin, kun olet tehnyt kaikki muutokset

Kun olet tehnyt kaiken tämän, sinun pitäisi pystyä painamaan painiketta saadaksesi esityksen alkuun. Vau!

Tällä menetelmällä on kuitenkin joitain rajoituksia. Jos painat painiketta uudelleen soittolistan ollessa käynnissä, se joko 1) ei tee mitään tai 2) kaatuu FPP ja kieltäytyy tekemästä mitään painikkeella, ennen kuin käynnistät sen uudelleen. Joten jos käytät vain painiketta dramaattisena tapana toistaa esityksesi komennolla, yllä oleva menetelmä on kaikki mitä tarvitset.

Jos tarvitset jotain muuta, jatka seuraavaan vaiheeseen

Vaihe 4: Vahvempi käsikirjoitus

Alla on käsikirjoitus, johon lopulta päädyin. Voit katsoa käsikirjoituksen Githubissa täältä: [Gist. Github]

  • Jos joku painaa painiketta”yöaikaan”, se soittaa Tiger Ragia (kappaleeni 1) ja siirtyy sitten valmiustilaan, joka jatkuu loputtomasti.
  • Jos painiketta painetaan Tiger Ragin toiston aikana, se aloittaa toisen kappaleeni, Hallelujah, ja siirtyy sitten valmiustilaan loputtomiin.
  • Mutta jos joku painaa nappia päivällä tai hyvin myöhään illalla, se pelaa Tiger Ragia kerran ja sammuttaa sitten kaikki valot.

Tämän ansiosta painike voi toimia milloin tahansa vuorokauden aikana, mutta valojen ei tarvitse olla päällä koko ajan. Se mahdollistaa myös useiden kappaleiden toistamisen yhdestä painikkeesta tunnistamalla parhaillaan soivan kappaleen, lopettamalla kyseisen kappaleen ja toistamalla "seuraavan" kappaleen.

Löydät lisää resursseja FPP: n komentosarjojen tekemiseen täältä: https://github.com/FalconChristmas/fpp-scripts Monimutkaisemman logiikan vuoksi google "bash script _", jossa yrität tehdä alaviivaa. Voit testata komentosarjojasi FPP Shellillä (käyttäjänimi fpp salasana falcon) Peruskomennot ovat seuraavat.

Kiinnitä huomiota isojen kirjainten käyttöön !!

  • Capital -P toistaa soittolistan kerran, pienet kirjaimet -p toistaa sen.
  • fpp -v 66 Aseta äänenvoimakkuudeksi 66%
  • fpp -c stop Pysäytä esitys välittömästi
  • fpp -C stop Tämä saattaa olla stop show tyylikkäästi
  • fpp -p thisPlaylistName Toistaa thisPlaylistName toistettaessa (joten introkappale toistetaan kerran, niin pääasia toistetaan loputtomiin.
  • fpp -P thisPlaylistName Toistaa thisPlaylistName kerran
  • eventScript "$ {MEDIADIR}/scripts/$ {thisScriptVariable}" Suorittaa komentosarjan. Vasemmanpuoleisessa tapauksessa se toimii, jos skriptinimesi on tallennettu muuttujaan jossain yllä, kuten tämäScriptVariable =”PlayTheSong.sh”

ButtonSuperScript.sh

#!/bin/sh
###########################################################
#Käynnissä, jos painiketta painetaan.
#Kullakin kappaleella pitäisi olla kaksi soittolistaa - yksi
# vain kappale "ensimmäisenä soittona" eikä mitään pääosassa,
# ja toinen, jossa kappale on ensimmäinen soitto ja valmiustila
# sekvenssi "Main" -sarjana. (Ainakin jos haluat
# tehdä juuri sitä mitä teen)
#
#Esimerkiksi jos kappaleesi on Tiger Rag, sinun pitäisi olla
# soittolistaa "TigerRag", "TigerRagStandby" ja "Standby"
#
###########################################################
# Soittolistat suoritetaan, jos se on välillä 6–11
NightSong1 = "TigerRagStandby"
NightSong2 = "HallelujaStandby"
NightStandby = "Valmiustila"
# Soittolistat, jotka suoritetaan päivän aikana tai 11 jälkeen
DaySong1 = "TigerRag"
DaySong2 = "Halleluja"
DayStandby = "Valmiustila"
#Päälle ja pois päältä 24 tunnin aikana. Jos haluat minuutteja, onnea
OnHour = 17
Pois Tunti = 23
###########################################################
# Käsikirjoituksen sisustus. #
###########################################################
# Hanki nykyinen tilamme (IDLE = 0, PELAAMINEN = 1, Pysähtyminen kauniisti = 2)
TILA = $ (fpp -s | leikkaa -d ',' -f2)
#Hanki käynnissä oleva soittolista ja leikkaa se 7 kirjaimeen
PLAYLIST = $ (fpp -s | cut -d ',' -f4 | cut -c1-7)
#Tämä on "sekä", jos se toistaa kappaletta, ja "sekvenssi", jos se on valmiustilassa
#käytetään määrittämään, onko valmiustila käynnissä
VALMIUSTILA = $ (fpp -s | cut -d ',' -f5)
#Ensimmäiset 7 kirjainta soittolistojen nimistä vertailua varten
#Vain 7 kirjainta, jotta "Song1Standby" ja "Song1" ovat samat
#Okei, oikeastaan sen pitäisi olla ensimmäiset x kirjainta ja x pitäisi olla lyhin kappaleen nimi
StandbyPlaylist = $ (echo $ NightStandby | cut -c1-7)
Song1Playlist = $ (echo $ NightSong1 | cut -c1-7)
Song2Playlist = $ (echo $ NightSong2 | cut -c1-7)
STARTITEM = ""
#Hae nykyinen tunti armeijan aikaa
Nykyinen tunti = $ (päivämäärä +"%H")
#Tulosta joidenkin asioiden tila - "echo" on kuin "tulostus" useimmilla kielillä
#Hyödyllinen testaamiseen, jos eri asiat on leikattu tai laskettu oikein
echo CurrentHour on $ CurrentHour
echo Juokseva soittolista on: $ PLAYLIST
echo Song2Playlist on: $ Song2Playlist
echo Tila on: $ STATUS
#Aseta äänenvoimakkuudeksi 80% yöllä, 100% muuten
#Joten jos nukun, se ei ole niin kovaa
#if [$ CurrentHour -lt $ OffHour -a $ CurrentHour -ge 11]; sitten
# fpp -v 100
#muu
# fpp -v 80
#fi
# Tarkista, että saimme jotain merkityksellistä
jos [-z "$ {STATUS}"]; sitten
echo "Virhe tila -arvolla"> & 2
poistuminen 1
fi
# Toimi nykyisen tilan mukaan
tapaus $ {STATUS} in
# IDLE
0)
#Yöaika - toista kappale 1 valmiustilassa
jos [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; sitten
echo Playing NightSong 1
fpp -c stop
fpp -p "$ {NightSong1}" $ {STARTITEM}
#Päivä tai todella myöhään - toista kappale 1 kerran ja sammuta sitten valot
muu
echo Playing DaySong 1
fpp -c stop
fpp -P "$ {DaySong1}" $ {STARTITEM}
fi
;;
# TOISTAMINEN tai PYSÄYTÄMINEN ERITTÄIN (tyylikäs tapahtuu, jos painiketta painetaan, kun ajoitettu soittolista päättyy)
1 | 2)
#Valmiustila on käynnissä - tämä toimii, koska valmiustila on ainoa ei -mediasarjani
jos ["$ STANDBYSTRING" == "jakso"]; sitten
#Yöaika - toista kappale 1 valmiustilassa
jos [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; sitten
echo Playing NightSong1 yöaikaan
fpp -c stop
fpp -p "$ {NightSong1}"
#Päivä tai todella myöhään - pelaa tiikeri rättiä kerran ja sammuta sitten valot
muu
echo PlayingDaySong1 toistamasta
fpp -c stop
fpp -P "$ {DaySong1}"
fi
#Tukeaksesi lisää kappaleita kopioi tämä osio ja vaihda "Song2Playlist" viimeisessä kappaleessa kappaleeksi#Playlist
#Song1 on käynnissä
elif ["$ PLAYLIST" == "$ Song1Playlist"]; sitten
#Yöaika - pelaa Hallelujaa valmiustilassa
jos [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; sitten
echo Playing HallelujahStigby Tiger Ragista on käynnissä
fpp -c stop
fpp -p "$ {NightSong2}"
#Päivä tai todella myöhään - toista Song2 kerran ja sammuta sitten valot
muu
echo Toistaminen Hallelujah kerran Tiger Ragista on käynnissä
fpp -c stop
fpp -P "$ {DaySong2}"
fi
#Viimeinen laulu on käynnissä - PLAY STANDBY
elif ["$ PLAYLIST" == "$ Song2Playlist"]; sitten
#Yöaika - toista valmiustila silmukalla
jos [$ CurrentHour-lt $ OffHour-a $ CurrentHour-ge $ OnHour]; sitten
echo Toiston aikana valmiustila
fpp -c stop
fpp -p "$ {NightStandby}"
#Päivä tai todella myöhään - toista valmiustila kerran
muu
echo Toisto Valmiustila Kerran
fpp -c stop
fpp -P "$ {DayStandby}"
fi
muu
echo Jostain syystä viimeinen muu toteutettu tapaus.
fpp -c stop
fpp -P "$ {DaySong1}"
fi
;;
esac

katso rawButtonSuperScript.sh, jota ylläpitää GitHub ❤

Vaihe 5: (Valinnainen) Painikkeen etulevy

Minulla on pääsy laserleikkuriin Clemsonissa Makerspacen kautta, joten piirsin nopeasti leikkauksen+etsauksen. Keskellä on reikä painikkeelleni, sanat sanovat "Työnnä minua" joulun fontilla ja lumihiutale napin ympärillä. Ruiskutin maalaten puun valkoiseksi ja peitin sen sitten maalarinteipillä (jotta laserleikkuri ei polta osia, joita en halua syövyttää). Käyttämäni tiedosto on liitteenä.

Suositeltava: