สารบัญ:

เกม Stackers Arcade: 6 ขั้นตอน (พร้อมรูปภาพ)
เกม Stackers Arcade: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เกม Stackers Arcade: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เกม Stackers Arcade: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: เอาชนะ 5 เกมอาร์เคดจอมโกงด้วยวิทยาศาสตร์ 2024, พฤศจิกายน
Anonim
เกม Stackers Arcade
เกม Stackers Arcade

สวัสดีทุกคน วันนี้ฉันต้องการแบ่งปันเกมอาร์เคดที่น่าทึ่งนี้กับคุณ ซึ่งคุณสามารถสร้างด้วยไฟ 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
การสร้างเมทริกซ์ LED
การสร้างเมทริกซ์ 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

สิ่งหนึ่งที่ฉันชอบเกี่ยวกับโปรเจ็กต์นี้คือความยืดหยุ่น คุณสามารถตั้งโปรแกรมไมโครคอนโทรลเลอร์ใหม่เพื่อเป็นส่วนหนึ่งของเกมอื่นและลองทำบางอย่าง เช่น สร้างแอนิเมชันหรือเกมตอบโต้ หวังว่าพวกคุณจะสนุกกับการทำสิ่งนี้และเรียนรู้บางสิ่งเพื่อทำสิ่งนี้ จีอีซ!

แนะนำ: