Daftar Isi:

Mulai Pertunjukan Cahaya Natal Anda Dengan Tombol: 5 Langkah
Mulai Pertunjukan Cahaya Natal Anda Dengan Tombol: 5 Langkah

Video: Mulai Pertunjukan Cahaya Natal Anda Dengan Tombol: 5 Langkah

Video: Mulai Pertunjukan Cahaya Natal Anda Dengan Tombol: 5 Langkah
Video: contoh opening video keren 2024, November
Anonim
Mulai Pertunjukan Cahaya Natal Anda Dengan Tombol
Mulai Pertunjukan Cahaya Natal Anda Dengan Tombol

Saat menjalankan pertunjukan lampu Natal yang disinkronkan dengan musik, Anda mungkin ingin memulai pertunjukan dengan menekan sebuah tombol. Tutorial ini hanya berlaku untuk acara yang dikendalikan melalui Falcon Pi Player (FPP) yang berjalan di Raspberry Pi. Jika Anda menjalankan FPP maka Anda mungkin menggunakan pengontrol Falcon dan menggunakan xLights atau LightORama untuk mengurutkan acara Anda. Jika tidak ada kata-kata itu yang berarti bagi Anda, tutorial ini mungkin sedikit berlebihan untuk saat ini dan Anda harus mulai dengan membaca wiki ini https://auschristmaslighting.com/wiki/ dan bergabung dengan grup Facebook seperti di bawah ini

  • xLights:
  • Lampu natal tingkat lanjut umum:
  • Falcon Pi Player:
  • Berbagi ide lampiran/prop:
  • "Tidak secara khusus xLights atau Terkait LOR":
  • Vendor xLights Holiday Light:
  • Lakukan Sendiri Natal:

Langkah 1: Daftar Bagian

Anda akan membutuhkan barang-barang berikut:

  • Sebuah tombol. Saya menggunakan yang ini dengan lampu cincin LED di sekitarnya: [Amazon]
  • Sebuah resistor. Lebih disukai 200Ω atau lebih besar (2 di antaranya jika Anda menggunakan tombol LED) Standar 1/4W atau 1/8W baik-baik saja
  • Kabel konektor. Pengukur yang harus Anda gunakan bergantung pada seberapa jauh jarak tombol dari Pi Anda. Saya menggunakan kawat 18awg sekitar 10 kaki dari Pi saya dan itu bekerja dengan sempurna
  • Cara menghubungkan kabel ke pin GPIO Pi. Anda dapat menggunakan kabel pita dengan papan tempat memotong roti breakout, atau Anda dapat menggunakan beberapa konektor perempuan seperti yang saya lakukan. Kami hanya membutuhkan 3 kabel - Ground, 5V, dan data untuk tombol. [Amazon]
  • (Opsional) Konektor tahan air di setiap ujungnya untuk perawatan yang mudah. Saya menggunakan konektor kelas laut 3-pin: [Amazon]
  • (Opsional) Konektor butt heat shrink [Amazon]

Langkah 2: Diagram Pengkabelan

Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan

Gambar menunjukkan diagram pengkabelan untuk tombol tanpa LED yang disertakan, dan tombol dengan LED. Cara saya mengatur diagram pengkabelan memungkinkan Anda menjalankan tombol dan lampu (terus menyala) hanya dengan 3 kabel.

Untuk pin GPIO, pilih salah satu pin GPIO pada pi. Gunakan pin +5V dan Gnd juga. Anda mungkin bisa lolos dengan menggunakan pin 3.3V, tetapi penurunan tegangan pada beberapa kaki kabel mungkin membuat sinyal tidak dapat diandalkan atau tidak cukup untuk menyalakan LED.

CATATAN: Konektor 3-pin tidak akan masuk melalui lubang yang Anda perlukan untuk mengebor tombol dengan lampu cincin LED. Jadi pasang konektor setelah meletakkan tombol di pelat muka Anda.

Langkah 3: Pengaturan Dasar Falcon Pi Player

CATATAN - FPP terus diperbarui, dan sangat mungkin bahwa mereka akan meningkatkan dukungan skrip mereka atau bahwa mereka akan menyertakan "tombol tekan untuk memulai" sebagai fitur default yang memerlukan lebih sedikit pemrograman.

Saya mengikuti video di atas untuk awalnya menyiapkan semuanya.

Saya merasa video membosankan dan lambat, jadi inilah ringkasannya:

  • Impor urutan Anda ke fpp menggunakan pengelola file
  • Buat daftar putar dengan urutan di dalamnya. Untuk langkah selanjutnya daftar putar akan disebut "playme"
  • Buka file notepad kosong dan ketik berikut ini:

    • #!/bin/sh
    • fpp -P playme
  • Simpan sebagai file.sh di komputer Anda
  • Buka pengelola file di FPP dan unggah file skrip Anda. Buka tab " Script " dan pastikan itu ada
  • Di bawah Status/Kontrol, buka Acara
  • Buat acara baru. ID Acara 1/1, Nama acara apa pun, Urutan Efek NONE, Skrip Acara
  • Buka Pengaturan Input/Output dan klik pemicu GPIO
  • Alihkan pin yang dilampirkan tombol Anda. Jika akan menjadi rendah saat Anda menekan tombol maka letakkan acara pada opsi Jatuh, jika aktif tinggi maka letakkan acara di Naik.
  • Klik tombol Reboot dengan peringatan yang muncul setelah Anda melakukan semua perubahan

Setelah melakukan semua ini, Anda seharusnya dapat menekan tombol untuk memulai pertunjukan Anda. Woo hoo!

Namun, metode ini memiliki beberapa keterbatasan. Jika Anda menekan tombol lagi saat daftar putar diputar, itu 1) tidak akan melakukan apa-apa atau 2) akan membuat FPP mogok dan menolak melakukan apa pun dengan tombol Anda sampai Anda mem-boot ulangnya. Jadi, jika Anda hanya menggunakan tombol sebagai cara dramatis untuk memainkan pertunjukan sesuai perintah, hanya metode di atas yang Anda butuhkan.

Jika Anda membutuhkan sesuatu yang lebih, lanjutkan ke langkah berikutnya

Langkah 4: Skrip yang Lebih Kuat

Di bawah ini adalah skrip yang akhirnya saya dapatkan. Anda dapat melihat skrip di Github di sini: [Gist. Github]

  • Jika seseorang menekan tombol selama jam "malam" itu akan memainkan Tiger Rag (Lagu saya1) dan kemudian pergi ke urutan siaga yang berulang tanpa batas.
  • Jika tombol ditekan saat Tiger Rag diputar maka lagu kedua saya, Haleluya, akan dimulai, dan kemudian akan masuk ke urutan siaga tanpa batas.
  • Tetapi jika seseorang menekan tombol pada siang hari atau larut malam, ia akan memainkan Tiger Rag sekali dan kemudian mematikan semua lampu.

Ini memungkinkan tombol untuk bekerja kapan saja sepanjang hari tetapi lampu tidak harus menyala sepanjang waktu. Ini juga memungkinkan beberapa lagu diputar dari 1 tombol dengan mengidentifikasi lagu mana yang sedang diputar, mengakhiri lagu itu, dan memainkan lagu "berikutnya".

Anda dapat menemukan lebih banyak sumber daya untuk skrip di FPP di sini: https://github.com/FalconChristmas/fpp-scriptsUntuk logika yang lebih rumit, cukup google "skrip bash _" di mana garis bawah adalah apa yang Anda coba lakukan. Anda dapat menguji skrip Anda menggunakan FPP Shell (nama pengguna kata sandi fpp falcon) Perintah dasarnya adalah sebagai berikut.

Perhatikan huruf kapital!!

  • Kapital -P akan memutar daftar putar sekali, huruf kecil -p akan mengulanginya.
  • fpp -v 66 Setel volume ke 66%
  • fpp -c stop Hentikan pertunjukan segera
  • fpp -C stop Ini mungkin stop show dengan anggun
  • fpp -p thisPlaylistName Memutar NamaPlaylist ini secara berulang (jadi lagu intro diputar satu kali, maka hal Utama akan diulang tanpa batas waktu.
  • fpp -P thisPlaylistName Memutar NamaPlaylist ini sekali
  • eventScript "${MEDIADIR}/scripts/${thisScriptVariable}" Menjalankan skrip. Dalam kasus di sebelah kiri ini berfungsi jika Anda memiliki nama skrip yang disimpan ke dalam variabel di suatu tempat di atas, seperti thisScriptVariable="PlayTheSong.sh"

ButtonSuperScript.sh

#!/bin/sh
###########################################################
#Dijalankan jika tombol ditekan.
#Anda harus memiliki dua daftar putar untuk setiap lagu - satu dengan
# hanya lagu sebagai "Permainan pertama" dan tidak ada yang utama,
# dan lainnya dengan lagu sebagai pemutaran pertama dan siaga Anda
# urutan sebagai urutan "Utama". (Setidaknya jika Anda mau
# untuk melakukan hal yang persis seperti yang saya lakukan)
#
#Misalnya, jika lagu Anda Tiger Rag, Anda harus memiliki
# daftar putar "TigerRag", "TigerRagStandby", dan "Standby"
#
###########################################################
# Daftar putar untuk dijalankan jika antara 6 dan 11
NightSong1="TigerRagStandby"
NightSong2="HaleluyaStandby"
MalamSiaga = "Siaga"
# Daftar putar untuk dijalankan pada siang hari atau setelah 11
DaySong1="TigerRag"
DaySong2="Haleluya"
HariSiaga = "Siaga"
# Waktu hidup dan mati dalam waktu 24 jam. Jika Anda ingin menit, semoga berhasil
Pada Jam = 17
OffHour=23
###########################################################
# Nyali skrip. #
###########################################################
# Dapatkan status kami saat ini (IDLE=0, BERMAIN=1, Berhenti dengan Anggun=2)
STATUS=$(fpp -s | potong -d', ' -f2)
#Dapatkan daftar putar yang sedang berjalan dan potong menjadi 7 huruf
DAFTAR PUTAR=$(fpp -s | potong -d', ' -f4 | potong -c1-7)
#Ini akan menjadi "keduanya" jika sedang memainkan lagu, dan "berurutan" jika sedang standby
#digunakan untuk menentukan apakah urutan Standby sedang berjalan
STANDBYSTRING=$(fpp -s | cut -d', ' -f5)
#7 huruf pertama dari nama daftar putar untuk perbandingan
#Hanya 7 huruf sehingga "Song1Standby" dan "Song1" identik
#Oke jadi sebenarnya itu harus x huruf pertama dan x harus menjadi nama lagu terpendek yang Anda miliki
StandbyPlaylist=$(echo $NightStandby| cut -c1-7)
Song1Playlist=$(echo $NightSong1| cut -c1-7)
Song2Playlist=$(echo $NightSong2| cut -c1-7)
MULAI BARANG=""
#Dapatkan jam saat ini dalam waktu militer
Jam Saat Ini=$(tanggal +"%H")
#Cetak status beberapa hal - "gema" seperti "cetak" di sebagian besar bahasa
#Berguna untuk menguji apakah berbagai hal dipangkas atau dihitung dengan benar
echo CurrentHour adalah $CurrentHour
echo Daftar putar lari adalah: $PLAYLIST
echo Song2Playlist adalah: $Song2Playlist
echo Statusnya adalah: $STATUS
#Atur volume menjadi 80% di malam hari, 100% sebaliknya
#Agar kalau lagi tidur tidak sekeras itu
#if [$CurrentHour -lt $OffHour -a $CurrentHour -ge 11]; kemudian
#fpp -v 100
#lain
#fpp -v 80
#fi
# Periksa apakah kita mendapatkan sesuatu yang berarti
jika [-z"${STATUS}"];maka
echo"Kesalahan dengan nilai status">&2
keluar 1
fi
# Bertindak berdasarkan status saat ini
kasus${STATUS}dalam
# MENGANGGUR
0)
#Waktu malam - mainkan Lagu1 dengan standby
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];maka
echo Memutar Lagu Malam1
fpp -c berhenti
fpp -p "${NightSong1}"${STARTITEM}
#Waktu siang atau sangat larut - putar lagu 1 sekali lalu matikan lampu
lain
echo Memutar DaySong1
fpp -c berhenti
fpp -P "${DaySong1}"${STARTITEM}
fi
;;
# BERMAIN atau BERHENTI DENGAN RAHMAT (anggun terjadi jika tombol ditekan ketika daftar putar yang dijadwalkan berakhir)
1 | 2)
#Standby sedang berjalan - ini berfungsi karena standby adalah satu-satunya urutan non-media saya
if ["$STANDBYSTRING"=="urutan"];maka
#Waktu malam - mainkan Lagu1 dengan standby
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];maka
echo Memutar NightSong1 untuk waktu malam
fpp -c berhenti
fpp -p "${NightSong1}"
#Siang hari atau sangat larut - mainkan kain harimau sekali lalu matikan lampu
lain
echo PlayingDaySong1 dari bermain
fpp -c berhenti
fpp -P "${DaySong1}"
fi
#Untuk mendukung lebih banyak lagu, salin bagian ini dan ubah "Song2Playlist" di bagian terakhir menjadi Lagu#Playlist
#Lagu1 sedang berjalan
elif ["$PLAYLIST"=="$Song1Playlist"];lalu
#Waktu malam - mainkan Hallelujah dengan standby
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];maka
echo Bermain HallelujahStandby dari Tiger Rag sedang berjalan
fpp -c berhenti
fpp -p "${NightSong2}"
#Waktu siang atau sangat larut - mainkan Lagu2 sekali lalu matikan lampu
lain
echo Bermain Hallelujah sekali dari Tiger Rag sedang berjalan
fpp -c berhenti
fpp -P "${DaySong2}"
fi
#LAGU TERAKHIR BERJALAN - MAINKAN STANDBY
elif ["$PLAYLIST"=="$Song2Playlist"];lalu
#Waktu malam - mainkan standby secara berulang
if [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour];maka
echo Memainkan standby berulang-ulang
fpp -c berhenti
fpp -p "${Siaga Malam}"
#Waktu siang atau sangat larut - mainkan standby sekali
lain
echo Bermain Siaga Sekali
fpp -c berhenti
fpp -P "${Siaga Hari}"
fi
lain
echo Untuk beberapa alasan, elsecase terakhir dieksekusi.
fpp -c berhenti
fpp -P "${DaySong1}"
fi
;;
esac

lihat rawButtonSuperScript.sh dihosting dengan ❤ oleh GitHub

Langkah 5: (Opsional) Faceplate untuk Tombol

Saya memiliki akses ke pemotong laser di Clemson melalui Makerspace, jadi saya segera membuat sketsa desain untuk dipotong+digores. Ada lubang di tengah untuk tombol saya, kata-kata mengatakan "Dorong Aku" dalam font Natal, dan kepingan salju di sekitar tombol. Saya menyemprotkan cat kayu putih dan kemudian menutupinya dengan selotip (agar pemotong laser tidak menghanguskan bagian yang tidak ingin saya gores). File yang saya gunakan terlampir.

Direkomendasikan: