สารบัญ:
- ผู้เขียน John Day [email protected].
- Public 2024-01-30 13:06.
- แก้ไขล่าสุด 2025-01-23 15:12.
เมื่อเปิดการแสดงไฟคริสต์มาสที่ซิงค์กับเพลง คุณอาจต้องการเริ่มการแสดงด้วยการกดปุ่ม บทช่วยสอนนี้ใช้ได้กับรายการที่ควบคุมผ่าน 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 ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง
