สารบัญ:
- ขั้นตอนที่ 1: รายการชิ้นส่วน
- ขั้นตอนที่ 2: แผนภาพการเดินสายไฟ
- ขั้นตอนที่ 3: การตั้งค่าพื้นฐานของ Falcon Pi Player
- ขั้นตอนที่ 4: สคริปต์ที่แข็งแกร่งยิ่งขึ้น
- ขั้นตอนที่ 5: (ไม่บังคับ) แผ่นปิดหน้าสำหรับปุ่ม
วีดีโอ: เริ่มการแสดงไฟคริสต์มาสด้วยปุ่ม: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
เมื่อเปิดการแสดงไฟคริสต์มาสที่ซิงค์กับเพลง คุณอาจต้องการเริ่มการแสดงด้วยการกดปุ่ม บทช่วยสอนนี้ใช้ได้กับรายการที่ควบคุมผ่าน Falcon Pi Player (FPP) ที่ทำงานบน Raspberry Pi เท่านั้น หากคุณกำลังใช้งาน FPP คุณอาจกำลังใช้ตัวควบคุม Falcon และใช้ xLights หรือ LightORama เพื่อจัดลำดับการแสดงของคุณ หากคำเหล่านั้นไม่มีความหมายใดๆ กับคุณ บทช่วยสอนนี้อาจจะใช้ไม่ได้ผลในตอนนี้ และคุณควรเริ่มต้นด้วยการอ่าน wiki นี้ https://auschristmaslighting.com/wiki/ และเข้าร่วมกลุ่ม Facebook ด้านล่าง
- xLights:
- ไฟคริสต์มาสขั้นสูงทั่วไป:
- ผู้เล่น Falcon Pi:
- การแชร์ไอเดียสิ่งที่แนบมา/พร็อพ:
- "ไม่เฉพาะ xLights หรือ LOR ที่เกี่ยวข้อง":
- ผู้ขาย xLights Holiday Light:
- คริสต์มาสทำเอง:
ขั้นตอนที่ 1: รายการชิ้นส่วน
คุณจะต้องมีรายการต่อไปนี้:
- ปุ่ม ฉันใช้อันนี้โดยมีไฟวงแหวน LED ล้อมรอบ: [Amazon]
- ตัวต้านทาน ควรใช้ 200Ω หรือมากกว่า (2 ในจำนวนนี้หากคุณใช้ปุ่ม LED) มาตรฐาน 1/4W หรือ 1/8W ก็ใช้ได้
- สายต่อ. มาตรวัดที่คุณควรใช้ขึ้นอยู่กับว่าปุ่มจะอยู่ห่างจาก Pi ของคุณมากเพียงใด ฉันใช้ลวด 18awg ประมาณ 10 ฟุตจาก Pi ของฉันและมันทำงานได้อย่างไร้ที่ติ
- วิธีเชื่อมต่อสายกับพิน GPIO ของ Pi คุณสามารถใช้สายแพกับเขียงหั่นขนมหรือคุณสามารถใช้ขั้วต่อตัวเมียแบบที่ฉันทำ เราต้องการเพียง 3 สาย - กราวด์ 5V และข้อมูลสำหรับปุ่ม [อเมซอน]
- (อุปกรณ์เสริม) ขั้วต่อกันน้ำที่ปลายแต่ละด้านเพื่อการบำรุงรักษาที่ง่าย ฉันใช้คอนเนคเตอร์เกรดมารีน 3 พิน: [Amazon]
- (อุปกรณ์เสริม) ขั้วต่อก้นหดตัวด้วยความร้อน [Amazon]
ขั้นตอนที่ 2: แผนภาพการเดินสายไฟ
รูปภาพแสดงแผนภาพการเดินสายไฟสำหรับปุ่มที่ไม่มีไฟ LED และปุ่มที่มีไฟ LED วิธีที่ฉันตั้งค่าไดอะแกรมการเดินสายไฟทำให้คุณสามารถเรียกใช้ปุ่มและไฟ (เปิดอย่างต่อเนื่อง) ด้วยสายไฟเพียง 3 เส้น
สำหรับพิน GPIO ให้เลือกพิน GPIO ใดๆ บน pi ใช้พิน +5V และ Gnd เช่นกัน คุณอาจหลีกเลี่ยงการใช้พิน 3.3V ได้ แต่แรงดันไฟฟ้าตกที่สายไฟหลายฟุตอาจทำให้สัญญาณไม่น่าเชื่อถือหรือไม่เพียงพอที่จะทำให้ไฟ LED สว่างขึ้น
หมายเหตุ: ขั้วต่อ 3 พินจะไม่พอดีกับรูที่คุณต้องการเจาะสำหรับปุ่มที่มีไฟวงแหวน LED ดังนั้นให้ต่อคอนเนคเตอร์หลังจากวางปุ่มบนแผ่นปิดหน้า
ขั้นตอนที่ 3: การตั้งค่าพื้นฐานของ Falcon Pi Player
หมายเหตุ - FPP มีการอัปเดตอยู่ตลอดเวลา และเป็นไปได้อย่างยิ่งที่พวกเขาจะปรับปรุงการสนับสนุนสคริปต์ของตน หรือจะรวม "ปุ่มกดเพื่อเริ่ม" เป็นคุณลักษณะเริ่มต้นที่ต้องใช้การเขียนโปรแกรมน้อยลง
ฉันติดตามวิดีโอด้านบนเพื่อเริ่มตั้งค่าทุกอย่าง
ฉันพบว่าวิดีโอน่าเบื่อและช้า ดังนั้นนี่คือบทสรุป:
- นำเข้าลำดับของคุณไปยัง fpp โดยใช้ตัวจัดการไฟล์
- สร้างเพลย์ลิสต์ที่มีลำดับในนั้น สำหรับขั้นตอนต่อไป เพลย์ลิสต์จะเรียกว่า "playme"
-
เปิดไฟล์แผ่นจดบันทึกเปล่าแล้วพิมพ์ดังต่อไปนี้:
- #!/bin/sh
- fpp -P playme
- บันทึกเป็นไฟล์.sh บนคอมพิวเตอร์ของคุณ
- ไปที่ตัวจัดการไฟล์ใน FPP และอัปโหลดไฟล์สคริปต์ของคุณ ไปที่แท็บ " สคริปต์ " และตรวจสอบให้แน่ใจว่าอยู่ที่นั่น
- ภายใต้สถานะ/การควบคุม ไปที่เหตุการณ์
- สร้างกิจกรรมใหม่ Event ID 1/1, Event name อะไรก็ได้, Effect Sequence NONE, Event Script
- ไปที่การตั้งค่า Input/Output แล้วคลิก GPIO triggers
- สลับหมุดที่ปุ่มของคุณติดอยู่ ถ้ามันจะลดลงเมื่อคุณกดปุ่ม ให้ใส่เหตุการณ์ในตัวเลือก Falling ถ้ามันสูงอยู่ ให้วางเหตุการณ์ไว้ที่ Rising
- คลิกปุ่ม Reboot โดยคำเตือนที่ปรากฏขึ้นหลังจากที่คุณทำการเปลี่ยนแปลงทั้งหมด
หลังจากทำทั้งหมดนี้แล้ว คุณควรจะสามารถกดปุ่มเพื่อเริ่มการแสดงของคุณได้ วู้ฮู!
อย่างไรก็ตาม วิธีการนี้มีข้อจำกัดบางประการ หากคุณกดปุ่มอีกครั้งในขณะที่กำลังเล่นรายการเล่นอยู่ 1) จะไม่ดำเนินการใดๆ หรือ 2) จะทำให้ FPP ขัดข้องและปฏิเสธที่จะดำเนินการใดๆ กับปุ่มของคุณจนกว่าคุณจะรีบูต ดังนั้น หากคุณเพียงแค่ใช้ปุ่มเพื่อเล่นการแสดงตามคำสั่งอย่างน่าทึ่ง วิธีการข้างต้นก็เป็นทางเลือกทั้งหมดที่คุณต้องการ
หากต้องการอะไรเพิ่มเติม ให้ทำตามขั้นตอนต่อไป
ขั้นตอนที่ 4: สคริปต์ที่แข็งแกร่งยิ่งขึ้น
ด้านล่างนี้เป็นสคริปต์ที่ฉันมาถึงในที่สุด คุณสามารถดูสคริปต์บน Github ได้ที่นี่: [Gist. Github]
- หากมีคนกดปุ่มในช่วงเวลา "กลางคืน" มันจะเล่น Tiger Rag (เพลงของฉัน1) จากนั้นไปที่ลำดับสแตนด์บายที่วนซ้ำไม่รู้จบ
- หากกดปุ่มในขณะที่ Tiger Rag กำลังเล่น เพลงที่สองของฉันคือ Hallelujah จากนั้นจะเข้าสู่โหมดสแตนด์บายแบบไม่มีกำหนด
- แต่ถ้ามีคนกดปุ่มในช่วงกลางวันหรือดึกมากก็จะเล่น Tiger Rag หนึ่งครั้งแล้วปิดไฟทั้งหมด
ซึ่งช่วยให้ปุ่มทำงานได้ทุกช่วงเวลาของวัน แต่ไม่จำเป็นต้องเปิดไฟตลอดเวลา นอกจากนี้ยังอนุญาตให้เล่นเพลงหลายเพลงจากปุ่มเดียวโดยระบุเพลงที่กำลังเล่นอยู่ จบเพลงนั้น และเล่นเพลง "ถัดไป"
คุณสามารถหาแหล่งข้อมูลเพิ่มเติมสำหรับการเขียนสคริปต์ใน FPP ได้ที่นี่: https://github.com/FalconChristmas/fpp-scriptsสำหรับตรรกะที่ซับซ้อนยิ่งขึ้น เพียงแค่ google “bash script _” โดยที่ขีดล่างคือสิ่งที่คุณกำลังพยายามทำ คุณสามารถทดสอบสคริปต์ของคุณโดยใช้ FPP Shell (ชื่อผู้ใช้ fpp รหัสผ่าน falcon) คำสั่งพื้นฐานมีดังนี้
เน้นตัวพิมพ์ใหญ่!!
- Capital -P จะเล่นเพลย์ลิสต์หนึ่งครั้ง ตัวพิมพ์เล็ก -p จะเล่นซ้ำ
- fpp -v 66 ตั้งระดับเสียงเป็น 66%
- fpp -c หยุด หยุดแสดงทันที
- fpp -C stop นี่อาจเป็นการหยุดแสดงอย่างสง่างาม
- fpp -p thisPlaylistName เล่นชื่อเพลย์ลิสต์นี้ซ้ำๆ (ดังนั้นเพลงอินโทรจะเล่นเพียงครั้งเดียว จากนั้นเนื้อหาหลักจะเล่นซ้ำอย่างไม่มีกำหนด
- fpp -P thisPlaylistName เล่นชื่อเพลย์ลิสต์นี้หนึ่งครั้ง
- eventScript "${MEDIADIR}/scripts/${thisScriptVariable}" เรียกใช้สคริปต์ ในกรณีทางด้านซ้าย จะใช้งานได้หากคุณบันทึกชื่อสคริปต์ของคุณไว้ในตัวแปรที่ใดที่หนึ่งด้านบน เช่น thisScriptVariable=”PlayTheSong.sh”
ButtonSuperScript.sh
#!/bin/sh |
########################################################### |
#หากต้องการเรียกใช้หากกดปุ่ม |
#คุณควรมีเพลย์ลิสต์สองเพลงสำหรับแต่ละเพลง - หนึ่งรายการกับ |
#แค่เพลงว่า "เล่นครั้งแรก" และไม่มีอะไรเป็นเพลงหลัก |
#และอีกเพลงที่มีการเล่นครั้งแรกและสแตนด์บายของคุณ |
# ลำดับเป็นลำดับ "หลัก" (อย่างน้อยถ้าคุณต้องการ |
#เพื่อทำในสิ่งที่ฉันทำ) |
# |
#ยกตัวอย่างถ้าเพลงของคุณคือ Tiger Rag คุณควรมี |
# เพลย์ลิสต์ "TigerRag", "TigerRagStandby" และ "Standby" |
# |
########################################################### |
# เพลย์ลิสต์ที่จะเรียกใช้หากอยู่ระหว่าง 6 ถึง 11 |
NightSong1="TigerRagStandby" |
NightSong2="HallelujahStandby" |
NightStandby="สแตนด์บาย" |
# เพลย์ลิสต์ที่จะเรียกใช้ระหว่างวันหรือหลัง 11 |
DaySong1="TigerRag" |
DaySong2="ฮาเลลูยา" |
DayStandby="สแตนด์บาย" |
#เปิด-ปิดได้ตลอด 24 ชม. ถ้าคุณต้องการนาที ขอให้โชคดี |
OnHour=17 |
OffHour=23 |
########################################################### |
#ความกล้าของสคริปต์ # |
########################################################### |
# รับสถานะปัจจุบันของเรา (IDLE=0, PLAYING=1, Stopping Gracefully=2) |
สถานะ=$(fpp -s | cut -d', ' -f2) |
#รับเพลย์ลิสต์ที่กำลังทำงานอยู่และตัดแต่งให้เหลือ 7 ตัวอักษร |
เพลย์ลิสต์=$(fpp -s | cut -d', ' -f4 | cut -c1-7) |
#นี่จะเป็น "ทั้งสองอย่าง" หากกำลังเล่นเพลง และ "ลำดับ" หากเป็นการสแตนด์บาย |
#ใช้เพื่อตรวจสอบว่าลำดับการสแตนด์บายทำงานอยู่หรือไม่ |
STANDBYSTRING=$(fpp -s | cut -d', ' -f5) |
#7 ตัวอักษรแรกของชื่อเพลย์ลิสต์สำหรับการเปรียบเทียบ |
#แค่ 7 ตัวอักษร ให้ "Song1Standby" กับ "Song1" เหมือนกัน |
#โอเค ที่จริงควรเป็น x ตัวอักษรแรก และ x ควรเป็นชื่อเพลงที่สั้นที่สุดที่คุณมี |
StandbyPlaylist=$(echo $NightStandby| ตัด -c1-7) |
Song1Playlist=$(echo $NightSong1| cut -c1-7) |
Song2Playlist=$(echo $NightSong2| cut -c1-7) |
STARTITEM="" |
#รับชั่วโมงปัจจุบันในเวลาทหาร |
CurrentHour=$(วันที่ +"%H") |
#พิมพ์สถานะของบางสิ่ง - "echo" เหมือนกับ "พิมพ์" ในภาษาส่วนใหญ่ |
#มีประโยชน์สำหรับการทดสอบว่าสิ่งต่าง ๆ ตัดแต่งหรือคำนวณถูกต้องหรือไม่ |
echo CurrentHour คือ $CurrentHour |
เพลย์ลิสต์ echo Running คือ: $PLAYLIST |
echo Song2Playlist คือ: $Song2Playlist |
สถานะเสียงสะท้อนคือ: $STATUS |
#ตั้งระดับเสียงเป็น 80% ในเวลากลางคืน, 100% มิฉะนั้น |
#ถึงจะนอนก็ไม่ดัง |
#if [$CurrentHour -lt $OffHour -a $CurrentHour -ge 11]; แล้ว |
# fpp -v 100 |
#อื่น |
# fpp -v 80 |
#ไฟ |
#ตรวจสอบว่าเราได้สิ่งที่มีความหมาย |
ถ้า [-z"${STATUS}"];then |
echo"เกิดข้อผิดพลาดกับค่าสถานะ">&2 |
ทางออก 1 |
fi |
#ดำเนินการตามสถานะปัจจุบัน |
กรณี${STATUS}ใน |
#ว่าง |
0) |
#กลางคืน - เล่น Song1 พร้อมสแตนด์บาย |
ถ้า [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour]; แล้ว |
echo Playing NightSong1 |
fpp -c หยุด |
fpp -p "${NightSong1}"${STARTITEM} |
#กลางวันหรือสายจริงๆ - เล่นเพลง 1 ครั้งแล้วปิดไฟ |
อื่น |
echo กำลังเล่น DaySong1 |
fpp -c หยุด |
fpp -P "${DaySong1}"${STARTITEM} |
fi |
;; |
# เล่นหรือหยุดอย่างสง่างาม (สง่างามเกิดขึ้นหากกดปุ่มเมื่อเพลย์ลิสต์ตามกำหนดเวลาสิ้นสุด) |
1 | 2) |
#สแตนด์บายกำลังทำงาน - ใช้งานได้เพราะสแตนด์บายเป็นลำดับที่ไม่ใช่สื่อเดียวของฉัน |
ถ้า ["$STANDBYSTRING"=="ลำดับ"];แล้ว |
#กลางคืน - เล่น Song1 พร้อมสแตนด์บาย |
ถ้า [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour]; แล้ว |
echo กำลังเล่น NightSong1 สำหรับเวลากลางคืน |
fpp -c หยุด |
fpp -p "${NightSong1}" |
#กลางวันหรือสายจริงๆ - เล่นเศษผ้าเสือครั้งเดียวแล้วปิดไฟ |
อื่น |
echo PlayingDaySong1 จากการเล่น |
fpp -c หยุด |
fpp -P "${DaySong1}" |
fi |
#เพื่อสนับสนุนเพลงอื่นๆ ให้คัดลอกส่วนนี้และเปลี่ยน "Song2Playlist" ในส่วนที่แล้วเป็น Song#Playlist |
#เพลง1กำลังวิ่ง |
elif ["$PLAYLIST"=="$Song1Playlist"];then |
#เวลากลางคืน - เล่นฮาเลลูยาพร้อมสแตนด์บาย |
ถ้า [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour]; แล้ว |
echo กำลังเล่น HallelujahStandby จาก Tiger Rag กำลังทำงานอยู่ |
fpp -c หยุด |
fpp -p "${NightSong2}" |
#กลางวันหรือสายจริงๆ - เล่น Song2 ครั้งเดียวแล้วปิดไฟ |
อื่น |
echo กำลังเล่น Hallelujah จาก Tiger Rag หนึ่งครั้ง |
fpp -c หยุด |
fpp -P "${DaySong2}" |
fi |
#เพลงสุดท้ายกำลังทำงาน - เล่นสแตนด์บาย |
elif ["$PLAYLIST"=="$Song2Playlist"];then |
#เวลากลางคืน - เล่นสแตนด์บายแบบวนซ้ำ |
ถ้า [$CurrentHour-lt$OffHour-a$CurrentHour-ge$OnHour]; แล้ว |
echo เล่นสแตนด์บายซ้ำ |
fpp -c หยุด |
fpp -p "${NightStandby}" |
#กลางวันหรือสายจริงๆ - เล่นสแตนด์บายครั้งเดียว |
อื่น |
echo เล่นสแตนด์บายครั้งเดียว |
fpp -c หยุด |
fpp -P "${DayStandby}" |
fi |
อื่น |
echo ด้วยเหตุผลบางอย่าง elsecase ล่าสุดถูกดำเนินการ |
fpp -c หยุด |
fpp -P "${DaySong1}" |
fi |
;; |
esac |
ดู rawButtonSuperScript.sh โฮสต์ด้วย ❤ โดย GitHub
ขั้นตอนที่ 5: (ไม่บังคับ) แผ่นปิดหน้าสำหรับปุ่ม
ฉันสามารถเข้าถึงเครื่องตัดเลเซอร์ที่ Clemson ผ่าน Makerspace ดังนั้นฉันจึงร่างการออกแบบเพื่อตัด+กัดอย่างรวดเร็ว ปุ่มของฉันมีรูตรงกลาง คำว่า "Push Me" ในแบบอักษรคริสต์มาส และเกล็ดหิมะรอบๆ ปุ่ม ฉันพ่นสีไม้เป็นสีขาวแล้วปิดด้วยเทปกาว แนบไฟล์ที่ฉันใช้
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง