เริ่มการแสดงไฟคริสต์มาสด้วยปุ่ม: 5 ขั้นตอน
เริ่มการแสดงไฟคริสต์มาสด้วยปุ่ม: 5 ขั้นตอน
เริ่มการแสดงไฟคริสต์มาสของคุณด้วยปุ่ม
เริ่มการแสดงไฟคริสต์มาสของคุณด้วยปุ่ม

เมื่อเปิดการแสดงไฟคริสต์มาสที่ซิงค์กับเพลง คุณอาจต้องการเริ่มการแสดงด้วยการกดปุ่ม บทช่วยสอนนี้ใช้ได้กับรายการที่ควบคุมผ่าน 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" ในแบบอักษรคริสต์มาส และเกล็ดหิมะรอบๆ ปุ่ม ฉันพ่นสีไม้เป็นสีขาวแล้วปิดด้วยเทปกาว แนบไฟล์ที่ฉันใช้

แนะนำ: