สร้างเกม Arduino Controller Based SNES: 8 ขั้นตอน

สร้างเกม Arduino Controller Based SNES: 8 ขั้นตอน

สารบัญ:

Anonim

ในคำแนะนำนี้ฉันจะแสดงวิธีใช้คอนโทรลเลอร์ SNES เชื่อมต่อกับ Arduino และสร้างเกม Simon Says อย่างง่าย

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

วัสดุ:

ขั้นตอนที่ 1: วัสดุที่ต้องการ

วัสดุที่จำเป็นมีดังนี้:

-1 Arduino

-1 เขียงหั่นขนมเล็ก ๆ

คอนโทรลเลอร์ SNES รุ่นเก่า -1 ตัวที่คุณจะไม่ต้องเสียใจ

-10-15 สายจัมเปอร์ (ฉันใช้ 11)

-5 LEDs

-เทป

ขั้นตอนที่ 2: เชื่อมต่อสายทั้งหมดสำหรับ Arduino

เสียบสายจัมเปอร์เข้ากับพิน 2-9 ที่ arduino ดูด้านล่างเพื่อดูว่าแต่ละหมุดทำอะไรพร้อมกับโทนสีที่แนะนำของฉัน

Pin 2: Strobe Pin เชื่อมต่อกับสายสีส้มจากตัวควบคุมดังนั้นฉันจะทำให้จัมเปอร์สีชมพูหรือสีส้ม

เข็มที่ 3: เข็มนาฬิกา เชื่อมต่อกับสายสีเหลืองจากคอนโทรลเลอร์ดังนั้นฉันแนะนำจัมเปอร์สีเหลือง

Pin 4: Data Pin สายสีแดงบนคอนโทรลเลอร์ดังนั้นจัมเปอร์สีแดงจะดีที่สุด

Pin 5: Power สำหรับไฟ led ด้านบน

Pin 6: Power สำหรับไฟ led ด้านขวา

Pin 7: Power สำหรับไฟ led ด้านล่าง

Pin 8: Power สำหรับไฟ LED ด้านซ้าย

หมุด 5-8 ควรมีสายจัมเปอร์สีเดียวกัน ฉันเลือกสีเขียวเข้ม

Pin 9: Power สำหรับไฟแสดงสถานะของเกม ฉันใช้ไฟเขียว

5V: ขั้วต่อสายไฟเชื่อมต่อกับสายสีขาวจากคอนโทรลเลอร์ดังนั้นฉันจึงใช้จัมเปอร์สีขาว

GND: สายสีน้ำตาลจากคอนโทรลเลอร์ฉันใช้จัมเปอร์สีดำ

GND: ใช้เพื่อเชื่อมต่อบริเวณทั้งหมดจากเขียงหั่นขนมกลับไปที่ arduino ฉันใช้สีฟ้าสำหรับสายกราวด์ทั้งหมด

ขั้นตอนที่ 3: การตั้งค่า LEDs และ Breadboard

วางไฟ LED ของคุณบนเขียงหั่นขนมในรูปเพชร ตรวจสอบให้แน่ใจว่าไม่มีพิน LED 2 ตัวที่ใช้ร่วมกันในแถวหมายเลขเดียวกัน เดินสายแคโทดทั้งหมด (หมุดสั้น ๆ บนไฟ LED) ไปยังเส้นกราวด์บนเขียงหั่นขนมของคุณจากนั้นต่อสายกราวด์ของคุณเข้ากับ GND หนึ่งอันบนอาร์ดิโน เชื่อมต่อจัมเปอร์บนพิน 5-8 กับแอโนดของแอลอีดีของคุณตามตำแหน่งในขั้นตอนสุดท้าย

สำหรับ LED ตัวบ่งชี้เกมเพียงแค่นำมันออกจากตัวอื่น ๆ เชื่อมต่อขั้วบวกของมันกับ Pin 9 และแคโทดของมันกับรางพื้น

ขั้นตอนที่ 4: การเชื่อมต่อคอนโทรลเลอร์

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

ไม่ถูกต้อง.

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

ขั้นตอนที่ 5:

ณ จุดนี้คุณควรมีทุกสิ่งที่มีสายอย่างถูกต้องและพร้อมที่จะไป ดาวน์โหลดร่าง Arduino ที่เชื่อมโยงรวบรวมจากนั้นอัปโหลดไปยัง Arduino ของคุณ ในการเล่นให้รอให้ไฟ LED ตัวบ่งชี้เกมหยุดกะพริบจากนั้นใช้ AXBY เป็นทิศทางสำคัญทั้ง 4 ทิศทาง ในขั้นตอนต่อไปฉันจะพยายามอธิบายรหัส แต่ถ้าคุณต้องการเพียงแค่เกมที่ใช้งานได้คุณสามารถหยุดที่นี่

Simon_Says_snes.ino

ขั้นตอนที่ 6: รหัสตอนที่ 1

พื้นหลังเล็กน้อยก่อนว่าตัวควบคุมส่งข้อมูลอย่างไร ในการรับข้อมูลจากคอนโทรลเลอร์คุณต้องตั้งค่า strobe pin ให้สูงจากนั้นอ่านบิตแรกของข้อมูล (บิตสำคัญน้อยที่สุด) ในการรับบิตที่สองคุณสามารถสลับเข็มนาฬิกาแล้วอ่านจากเข็มข้อมูล คุณทำเช่นนี้ 16 ครั้ง สถานะของคอนโทรลเลอร์คือหมายเลข 2 ไบต์โดย 12 ไบต์สำคัญน้อยที่สุดที่มีปุ่มถูกกดอยู่ในขณะนี้และไบต์ที่สำคัญที่สุด 4 ไบต์ไม่มีประโยชน์

ดังนั้น 7 บรรทัดแรกนั้นค่อนข้างง่ายเพราะพวกเขาเพียงกำหนดชื่อให้กับคอนโทรลเลอร์ 3 ตัวและตัวบ่งชี้เกม

บรรทัดที่ 8-20 ประกาศข้อมูลฐานสิบหกที่ใช้ในการตรวจสอบว่ามีการกดปุ่มใดบนคอนโทรลเลอร์ ค่าฐานสิบหกแต่ละค่าจะเปิดบิตแยกต่างหากในสตรีมข้อมูลดังนั้นวิธีที่คุณสามารถใช้การเลื่อนบิตเพื่อกำหนดว่ามีการกดปุ่มบางปุ่มหรือใช้บิตและ

ตัวแปร 'array' เป็นเพียงอาร์เรย์ของจำนวนเต็มที่มีความยาว 30 int วิธีนี้จะเก็บลำดับของการกดสำหรับเกม

'pos' เป็นตัวแปรตำแหน่ง เพิ่มเติมในภายหลัง

'timeForPress' คือระยะเวลาที่คุณต้องกดปุ่ม

ถัดไปคือวิธีการตั้งค่า () เราเริ่มต้นด้วยการสร้างเครื่องกำเนิดตัวเลขสุ่มแล้วตั้งค่าโหมดพินสำหรับแต่ละหมุด 2-9 ต่อไปเราจะเปิดการสื่อสารแบบอนุกรมเพื่อจุดประสงค์ในการดีบั๊กและตั้งค่าลำดับของปุ่มเป็น '4's ทั้งหมด ฉันทำสิ่งนี้ b / c ระบบการนับสำหรับ LEDs เพียงแค่ขึ้นไปที่ 3 ดังนั้น 4 จึงเป็นเพียงตัวยึดตำแหน่ง ตอนนี้เราตั้งค่า timeForPress เป็น 1,000 และเรียกใช้วิธี genSequence () ซึ่งเติมอาร์เรย์ของเราด้วยจำนวนเต็มแบบสุ่มระหว่าง 0 ถึง 3 (รวม) ต่อไปมันตั้งค่าตำแหน่งของเราเป็น 0 เพื่อแสดงว่ามันยังไม่เริ่มเกมและจากนั้นจะกะพริบตัวบ่งชี้เกมเพื่อแสดงว่าเกมกำลังจะเริ่มขึ้น

ขั้นตอนที่ 7: รหัสตอนที่ 2

ในขั้นตอนนี้ฉันจะกล่าวถึงวิธีที่ใช้ในการรับข้อมูลจากคอนโทรลเลอร์อย่างรวดเร็ว ฉันบอกคุณถึงทฤษฎีในขั้นตอนก่อนหน้า แต่ตอนนี้ฉันจะจัดโครงแบบการเรียกใช้งานจริง

ฉันคิดว่าฉันได้รหัสนี้เล็กน้อยจากคำสั่งนี้ ไม่แน่ใจทั้งหมด

มีสามวิธีที่ใช้ในการตรวจสอบอินพุตคอนโทรลเลอร์:

ปุ่ม ()

ไฟแฟลช ()

shiftin ()

ปุ่ม () วิธีแรกตั้งค่าตัวแปรส่งคืนและตัวนับสถานที่ จากนั้น strobe (โดยใช้ strobe ()) และป้อน for () ลูป ในการวนรอบมันจะอ่านและเก็บข้อมูลทีละหนึ่งบิตโดยใช้วิธีการ shiftin () และผู้ประกอบการระดับบิต

วิธี strobe () ค่อนข้างตรงไปตรงมา โดยทั่วไปเพียงแค่ตั้งค่า strobe pin เป็น HIGH จากนั้นกลับสู่ LOW ทันที เรื่องง่าย ๆ สิ่งนี้บอกให้คอนโทรลเลอร์เริ่มส่งข้อมูล

วิธี shiftin () อ่านข้อมูลจริง ใช้ข้อมูลจากดาต้าพินแล้วสลับพินนาฬิกาซึ่งบอกให้คอนโทรลเลอร์ส่งบิตถัดไป

ใช้เพียงสามวิธีเท่านั้นคุณสามารถอ่านสถานะของคอนโทรลเลอร์ได้ คุณไม่ควรเรียก strobe () หรือ shiftin () โดยตรง ในบันทึกย่อสุดท้ายเมื่อตรวจสอบเพื่อดูว่ามีการกดปุ่มคุณต้องใช้ตัวดำเนินการ 2 บิต เครื่องหมาย ~ (tilde) ไม่ใช่ค่าบิตและกลับค่าข้อมูลจากนั้นปุ่ม & จะตรวจสอบสถานะเทียบกับปุ่มใด ๆ ที่คุณต้องการกด

ขั้นตอนที่ 8: รหัสตอนที่ 3

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

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

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

โชคดี!