สารบัญ:

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

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

วีดีโอ: เริ่มการแสดงไฟคริสต์มาสด้วยปุ่ม: 5 ขั้นตอน
วีดีโอ: ต้องดู!! ทำไมอยู่ๆถึงรู้สึกคันมือ? 2024, กรกฎาคม
Anonim
เริ่มการแสดงไฟคริสต์มาสของคุณด้วยปุ่ม
เริ่มการแสดงไฟคริสต์มาสของคุณด้วยปุ่ม

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

แนะนำ: