
สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12

สวัสดีทุกคน วันนี้ฉันต้องการแบ่งปันเกมอาร์เคดที่น่าทึ่งนี้กับคุณ ซึ่งคุณสามารถสร้างด้วยไฟ LED Ws2812b และไมโครคอนโทรลเลอร์/FPGA ดู Stack Overflow - การใช้ฮาร์ดแวร์ของเกมอาร์เคดคลาสสิก สิ่งที่เริ่มต้นจากโครงการโรงเรียนอย่างรวดเร็วกลายเป็นงานแห่งความรักเมื่อเราเริ่มใช้เวลามากขึ้นในการพัฒนาเกมของเราและเรียนรู้เพิ่มเติมจากมัน (และละเลยการศึกษาของเราในกระบวนการ xD) ในท้ายที่สุด เกมของเราได้รับการสร้างมาอย่างดีและได้รับการตอบรับอย่างดีจากโรงเรียนของเราจนถูกยึดไป (เป็นสื่อสาธิตสำหรับนักเรียนกลุ่มต่อไป) เราสามารถสร้างอันที่สองได้เสมอ มาเริ่มกันเลย!
เกมเวอร์ชันออนไลน์:
ขั้นตอนที่ 1: คุณต้องการอะไร




วัสดุ:
1. ไมโครคอนโทรลเลอร์/ไมโครคอมพิวเตอร์/FPGA - FPGA ใช้เพื่อนำตรรกะของเกมของเราไปใช้ เลือกบอร์ดของคุณ สำหรับโครงการของเรา เราจำเป็นต้องใช้บอร์ด Mojo FPGA สำหรับผู้ที่ไม่ได้ฝึกหัด เป็นบอร์ดประเภทหนึ่งที่ใช้ฮาร์ดแวร์เพื่อใช้งานฟังก์ชันต่างๆ แทนการใช้โค้ด ดังนั้น ฉันจะบอกว่ามันค่อนข้างต่ำและแตกต่างไปจากที่คุณใช้ Arduino หรือ Pi อย่างสิ้นเชิง หากคุณใช้บอร์ดอื่น คุณต้องเขียนโค้ดของคุณเอง แต่เกมนี้เขียนโค้ดได้ง่ายทีเดียว และเฮ้! ตอนนี้คุณสามารถเรียนรู้การเข้ารหัสด้วย!
2. Ws2812b LEDs - ที่นี่เราใช้ LED เพื่อสร้างจอแสดงผลสำหรับเกมของเรา ไม่สามารถเป็นผู้ผลิตได้หากคุณไม่ได้แตะ Ws2812b ก่อน xD หมายความว่าคุณสามารถตัดไฟ LED เดี่ยวออกแล้ววางลงในรูปแบบใดก็ได้ที่คุณชอบ และมันคือ RGB หมายความว่าคุณสามารถส่งออกสีใดก็ได้ที่คุณชอบ นอกจากนี้ FastLED - ไลบรารี Arduino สำหรับควบคุม Ws2812b ได้รับการพัฒนาเป็นอย่างดี ฉันอยากจะแนะนำให้คนใช้ Arduino แทน FPGA หากคุณไม่มี คุณสามารถซื้อไฟ LED จาก Taobao/Amazon แต่เราซื้อของเราจาก Sim Lim Tower ในสิงคโปร์
3. ไม้ - สำหรับโครงภายนอก เราใช้ไม้อัดหนา 1 ซม. และสำหรับเมทริกซ์ LED เราใช้ไม้อัดหนา 0.3 ซม. เราพบเศษไม้จากห้องทดลองของโรงเรียน
4. อะครีลิคกระจายแสง - สำหรับหน้าจอของเรา เราลองใช้อะครีลิกชนิดต่างๆ และพบว่าอะครีลิกมีน้ำค้างแข็งที่เรียกว่า PL-422 ซึ่งเหมาะสำหรับการกระจายแสงจริงๆ หากคุณไม่สามารถหารุ่นที่แน่นอนได้ ให้มองหาอะคริลิกที่มีน้ำค้างแข็ง เราซื้อของเราที่ Dama Plastics ในสิงคโปร์
5. แผ่นโฟม - เพื่อแยกแสงแต่ละพิกเซลออก เราจำเป็นต้องมีโครงสร้างตารางและโฟมนี้เป็นวัสดุที่เหมาะสมที่สุดในการทำเช่นนั้น เราซื้อแผ่นโฟมหนา 0.5 ซม. ที่ร้านหนังสือของโรงเรียน
6. ปุ่มสีแดงขนาดใหญ่ - โอเค ไม่จำเป็นที่เราจะต้องมีปุ่มสีแดงขนาดใหญ่ขนาดนั้น แต่การมีปุ่มให้คนอื่นตีก็ยังดีเสมอ! xD เราซื้อมันที่ Sim Lim tower ในสิงคโปร์
เครื่องมือ:
1. กาวไม้
2. หัวแร้ง
3. ประสาน
4. สายไฟ ดีที่สุดถ้าคุณมีสายอ่อนเมื่อเทียบกับสายแข็ง และแกนเดี่ยวเมื่อเทียบกับมัลติคอร์
5. คีมปอกสายไฟ
6. เครื่องตัดลวด
7. เจาะด้วยดอกสว่านขนาด 1 มม.
8. เลื่อยวงเดือน
9. เลื่อยวงเดือน
การดีบัก:
1. หน่วยจ่ายไฟแบบแปรผัน
2. ออสซิลโลสโคป
ขั้นตอนที่ 2: การสร้างต้นแบบอย่างรวดเร็ว




สำหรับโครงการของเรา เราใช้การสร้างต้นแบบอย่างรวดเร็วก่อนที่จะสร้างเมทริกซ์ LED และเขียนโปรแกรมเกมของเรา เหตุผลในการทำเช่นนั้นคือเราไม่ต้องการสร้างเมทริกซ์ LED เพียงเพื่อให้รู้ว่ารหัสของเราใช้งานไม่ได้หรือตรรกะของเกมของเรามีข้อบกพร่องอยู่บ้าง
ในด้านฮาร์ดแวร์ ในขั้นตอนแรก เราเพิ่งทดสอบตรรกะของเราในการเปลี่ยนรูปแบบแสงบนเมทริกซ์ LED แบบธรรมดาของเรา เมื่อเราทดสอบแล้วว่าตรรกะทำงานได้ดี เราก็ออกไปตัดแถบไฟ LED Ws2812b 5 ดวงออกเพื่อทดสอบตรรกะของเกมด้วยแถวต่างๆ เมื่อได้ผลแล้ว เราก็ดำเนินการสร้างเมทริกซ์ LED แบบเต็มสเกล
นอกจากนี้เรายังทดสอบตัวอย่างอะคริลิกต่างๆ ด้วย LED ก่อนที่จะตกตะกอนสำหรับ PL-422 ว่าเป็นตัวกระจายแสงที่ดีที่สุด และสำหรับโครงสร้างตัวคั่น เรายังได้ทดสอบความสูงที่แตกต่างกันเพื่อให้ LED กระจายอย่างเต็มที่ ในที่สุดเราก็ได้รู้ว่าสี่เหลี่ยมจัตุรัสขนาด 3 ซม.* 3 ซม. ที่มีความสูง 4 ซม. นั้นดีที่สุดสำหรับการแพร่ภาพ จากขนาดที่เหมาะสมที่สุดนี้ เรายังตัดสินใจว่าขนาดของไม้อัดที่จำเป็นสำหรับเมทริกซ์ LED 5 x 11 คือเท่าใด โดยเว้นช่องว่าง 0.5 ซม. สำหรับโฟมระหว่างสี่เหลี่ยม..
ในด้านซอฟต์แวร์ เราพยายามที่จะเป็นแบบโมดูลาร์ให้ได้มากที่สุด - ก่อนอื่นเราจะทดสอบว่าไฟ LED สามารถติดได้หรือไม่ก่อนที่จะดำเนินการเพิ่มฟังก์ชัน shift และอื่นๆ ผลลัพธ์อาจเป็นหายนะหากคุณไม่ทำเช่นนี้ เราเรียนรู้เรื่องนี้อย่างหนักหน่วงในขณะที่เราพยายามเขียนโค้ดทั้งเกมเป็นชิ้นใหญ่ก่อนที่จะรู้ว่าเราไม่สามารถดีบักได้ อุ๊ย!
ขั้นตอนที่ 3: การสร้างปลอก




สำหรับเคสของเรา เราเลือกใช้รูปลักษณ์และรูปลักษณ์ของเครื่องอาร์เคดสุดคลาสสิก ขั้นแรก เราตัดไม้อัดบางๆ เพื่อทำให้รูปร่างเป็นต้นแบบอย่างรวดเร็ว เนื่องจากการตัดไม้อัดบางและทดสอบทำได้ง่ายและเร็วกว่า เมื่อเราพอใจกับขนาดและรูปร่างแล้ว เราก็เริ่มใช้ไม้อัดหนาขึ้นเพื่อสร้างตัวเรือน เราใช้เลื่อยวงเดือนเพื่อตัดไม้อัดหนาและเลื่อยเลื่อนเพื่อตัดผ่านแผ่นที่บางกว่า หลังจากนั้นเราก็ใช้กาวไม้ทากาวเข้าด้วยกัน
สำหรับด้านหลังของไม้อัด เราต้องการเข้าถึงอุปกรณ์อิเล็กทรอนิกส์ภายในอย่างง่ายดาย ดังนั้นเราจึงทำให้มันเป็นชิ้นส่วนแบบล็อคเข้าที่ซึ่งคุณสามารถถอดออกได้อย่างง่ายดายทุกเมื่อที่ต้องการ
ในการติดปุ่ม ก่อนอื่นเราวาดวงกลมที่มีขนาดเส้นผ่านศูนย์กลางไมโครสวิตช์ของปุ่ม (ส่วนล่างยาวของปุ่ม) จากนั้นเราเจาะรูใกล้ขอบ และใช้เลื่อยเลื่อนเพื่อดูวงกลมผ่าน จากนั้นเราก็วางปุ่มและขันเข้าไป
นอกจากนี้เรายังตัดไม้อัดแผ่นบาง ๆ เป็นฐานของเมทริกซ์ LED ของเราตามขนาดที่เราคำนวณก่อนหน้านี้
หมายเหตุ: ฉันขอโทษสำหรับการขาดกระบวนการทีละขั้นตอน เราไม่ได้จัดทำเอกสารขั้นตอนทั้งหมด และเมื่อถึงเวลาที่เราตระหนักว่าเราจำเป็นต้องจัดทำเอกสารขั้นตอนนั้น เคสก็เสร็จเรียบร้อยแล้ว ไดอะแกรมก็ไม่ใช่มิติสุดท้ายเช่นกัน
ขั้นตอนที่ 4: การสร้างเมทริกซ์ LED


ใช้ชิ้นบาง ๆ ที่เราตัดออกก่อนหน้านี้ ขั้นแรกเราจะทำเครื่องหมายตำแหน่งของ LED แต่ละดวงโดยวาดสี่เหลี่ยมจัตุรัสตามโครงสร้างโฟมของเรา และวาดกากบาทตรงกลางสี่เหลี่ยมเป็นสถานที่ที่เราควรติด LED จากนั้น เรายังเจาะรูเล็กๆ 3 รูที่แต่ละด้านของ LED เพื่อให้สายไฟลอดผ่านและประสานเข้ากับ LED แต่ละดวง
เราเชื่อมโยง LED แต่ละแถวด้วยหมุด Data In และ Data Out และเราประสาน GND และ VCC แต่ละรายการเข้ากับสายทั่วไป Data In ชั้นนำจะสร้างรูปแบบแสงสำหรับแต่ละแถวและเราเชื่อมต่อกับพินของไมโครคอนโทรลเลอร์/FPGA คุณยังสามารถประสาน Data Out สุดท้ายของแถวหนึ่งไปยัง Data In นำหน้าของอีกแถวหนึ่งได้ วิธีการทำงานของ LED Ws2812b คือ LED แต่ละตัวมี IC ที่จะนำข้อมูลที่จำเป็นจากสายไฟและส่งต่อส่วนที่เหลือลงไปในห่วงโซ่ เราใช้ LED ของเราตามคำแนะนำที่ยอดเยี่ยมอื่น ๆ (อันที่จริงเราคัดลอกมาอย่างแน่นอน! xD)
ในที่นี้ เราขอเน้นย้ำถึงความสำคัญของการใช้สายไฟแบบอ่อน หากคุณใช้สายไฟที่แข็งและแข็งสำหรับพิน Data In ชั้นนำ สิ่งที่เกิดขึ้นคือทุกครั้งที่คุณดึงลวด มันอาจจะดึงแผ่นทองแดงบน Ws2812b ของคุณออกมาซึ่งจะทำลายมัน ในโครงการนี้ ก่อนที่เราจะเปลี่ยนเป็นสายไฟอ่อน เราทำลาย LED ทั้งหมด 40 ดวง ซึ่งเป็น 1/3 ของ LED ที่จำเป็นสำหรับโครงการของเรา
คำแนะนำ:
ขั้นตอนที่ 5: การเขียนรหัสเกมและการดีบักฮาร์ดแวร์



Mojo ทำงานบน Lucid HDL ซึ่งไม่ใช่ภาษาที่ได้รับความนิยมสูงสุด เราไม่พบไลบรารี Ws2812b LED ใน Lucid ดังนั้นเราจึงใช้วิธีเขียนไลบรารีของเราเอง ซึ่งเป็นประสบการณ์ที่น่าสนใจมาก ในการทำเช่นนั้น ก่อนอื่น เราวิเคราะห์สัญญาณที่ส่งผ่านโดยใช้ไลบรารี FastLED ของ Arduino และเขียนโค้ดเพื่อทำซ้ำ นี่คือเคล็ดลับของการดีบักฮาร์ดแวร์ ออสซิลโลสโคปมีประโยชน์มากในการวิเคราะห์สัญญาณ ไม่ว่าจะเป็นการดีบักสัญญาณของคุณเองซึ่งคุณไม่แน่ใจหรือตรวจสอบและคัดลอกสัญญาณอื่นๆ
หลังจากเขียนไลบรารี่สำหรับ Ws2812b แล้ว เราก็ดำเนินการเขียนโค้ดสำหรับเกม เราใช้ฟังก์ชัน Bit shift เพื่อย้ายแต่ละบล็อกไปทางซ้ายและทางขวา และใช้ Bitwise AND to AND สี่เหลี่ยมของแต่ละแถวไปยังแถวก่อนหน้า คุณสามารถคิดที่จะนำไปใช้ใน Arduino ซึ่งไม่น่าจะยากขนาดนั้น เรายังเขียนโค้ดหน้าจอเกมเพื่อความสนุกอีกด้วย!
เกมของเรามี 2 ระดับคือเกมซ้อนที่มองเห็นได้ (สีเขียว) และเกมซ้อนระดับที่สองที่มองไม่เห็น (สีน้ำเงิน)
แม้ว่าเราจะมีรหัสการทำงานและเมทริกซ์ LED ที่ใช้งานได้แล้ว บางครั้งเราก็ยังประสบปัญหา เช่น ไฟกะพริบหรือไฟสว่างขึ้นเมื่อไม่ควร ปัญหามักเกิดจากการต่อสายดินที่ไม่เหมาะสม ระดับของแหล่งจ่ายไฟ หรือสัญญาณรบกวน นี่คือจุดที่คุณต้องการเครื่องมือแก้ไขข้อบกพร่องของฮาร์ดแวร์อื่นๆ เช่น หน่วยจ่ายไฟแบบแปรผัน เพื่อตรวจสอบว่าแหล่งจ่ายไฟของ Mojo/Arduino เพียงพอหรือสูงเกินไปหรือไม่ จากประสบการณ์ของผม Ws2812b มีแรงดันไฟฟ้าที่ใช้งานได้ค่อนข้างหลากหลายตั้งแต่ 2.8v - 5v ฉันมีวิดีโอที่แสดงแสงที่เจิดจ้าหลังจากที่ฉันเพิ่มพลัง
อย่างไรก็ตาม จากการตรวจสอบเพิ่มเติมพบว่าเรามีการบัดกรีที่ไม่เหมาะสม หลังจากบัดกรีซ้ำอีกครั้ง ปัญหาของเราก็ได้รับการแก้ไข อาจมีปัญหากับการรบกวนหรือการพูดคุยกัน แต่โชคดีที่เราไม่เคยเจอปัญหาเหล่านี้เลย
รหัส Github:
Arduino Bitwise Shift:
Arduino Bitwise และ:
ขั้นตอนที่ 6: นำทุกอย่างมารวมกัน




คุณมีปลอกและเมทริกซ์ LED ถึงเวลาที่จะรวมทุกอย่างเข้าด้วยกัน ก่อนอื่นเราวางโฟมไว้ด้านหน้าและเมทริกซ์ LED ด้านหลังและปรับตำแหน่ง เนื่องจากโฟมมีแรงเสียดทานสูงมาก จึงเป็นเพียงแรงเสียดทานที่ติดตั้งในขณะที่เมทริกซ์ LED ติดกาวร้อนเข้าที่ หลังจากนั้นเราวางหน้าจอไว้หน้ากริด จากนั้นเราเสียบพินของแต่ละแถวเข้ากับไมโครคอนโทรลเลอร์และเริ่มเล่น!:NS
สิ่งหนึ่งที่ฉันชอบเกี่ยวกับโปรเจ็กต์นี้คือความยืดหยุ่น คุณสามารถตั้งโปรแกรมไมโครคอนโทรลเลอร์ใหม่เพื่อเป็นส่วนหนึ่งของเกมอื่นและลองทำบางอย่าง เช่น สร้างแอนิเมชันหรือเกมตอบโต้ หวังว่าพวกคุณจะสนุกกับการทำสิ่งนี้และเรียนรู้บางสิ่งเพื่อทำสิ่งนี้ จีอีซ!
แนะนำ:
เกม 3d Maze โดยใช้ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)

เกม 3d Maze ที่ใช้ Arduino: สวัสดีเพื่อนๆ ดังนั้นวันนี้เราจะมาสร้างเกมเขาวงกตโดยใช้ ARDUINO UNO เนื่องจาก Arduino Uno เป็นบอร์ดที่ใช้กันเป็นส่วนใหญ่ มันจึงเจ๋งมากที่จะสร้างเกมด้วย ในคำแนะนำนี้ ให้สร้างเกมเขาวงกตที่ควบคุมโดยใช้จอยสติ๊ก อย่าลืม
เกม Arduino Sorta Sudoku: 3 ขั้นตอน (พร้อมรูปภาพ)

เกม Arduino Sorta Sudoku: ผู้คนจำนวนมากชอบเล่น Sudoku และหลานๆ ชอบเดาเกม ดังนั้นฉันจึงตัดสินใจสร้างเกม "Sorta Sudoku" แบบพกพา ในเวอร์ชันของฉัน เกมเป็นตารางขนาด 4x4 แต่มีให้เพียงหมายเลขเดียวเท่านั้น แนวความคิดคือการเดาตัวเลขที่เหลือใน
กดปุ่ม); // เกม Arduino LCD: 5 ขั้นตอน (พร้อมรูปภาพ)

กดปุ่ม); //เกม Arduino LCD: เมื่อเร็ว ๆ นี้ใน Scouts ฉันทำงานเกี่ยวกับตราสัญลักษณ์การออกแบบเกม สำหรับข้อกำหนดข้อใดข้อหนึ่ง ฉันสร้างเกมนี้โดยใช้ Arduino ที่อิงจากเกม LED Rocker จุดประสงค์ของเกมคือทำคะแนนให้ได้มากที่สุด ในช่วงเริ่มต้นของเ
เกม Arduino จอแสดงผล LED แบบอินไลน์: 7 ขั้นตอน (พร้อมรูปภาพ)

เกม Arduino จอแสดงผล LED แบบอินไลน์: หรือที่รู้จักว่าระบบเกมแสดงบันได LED Attiny-85 ที่ติดตั้งฮาร์ดแวร์และซอฟต์แวร์เพื่อเล่นแอ็กชัน "วิดีโอ" เกมบนจอแสดงผล LED แบบอินไลน์ มีจอแสดงผลแลดเดอร์ LED 12 ดวงแบบมัลติเพล็กซ์ และรองรับอินพุตปุ่มสูงสุด 6 ปุ่มและออปติ
เกม Arduino LED Laser Arcade: 3 ขั้นตอน (พร้อมรูปภาพ)

เกม Arduino LED Laser Arcade: ในคำแนะนำนี้ ฉันจะสาธิตวิธีสร้างเกม Laser Arcade โดยใช้เซ็นเซอร์ LED และแสง มีโค้ดรวมอยู่ด้วย และคุณไม่จำเป็นต้องมีชิ้นส่วนมากมายในการสร้าง ฉันจะไม่บอกคุณว่าฉันสร้างเคสอย่างไร คุณจะต้องสร้างมันขึ้นมาเอง!T