สารบัญ:

ใช้ Arduino กับคอนโทรลเลอร์ N64: 5 ขั้นตอน (พร้อมรูปภาพ)
ใช้ Arduino กับคอนโทรลเลอร์ N64: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ใช้ Arduino กับคอนโทรลเลอร์ N64: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ใช้ Arduino กับคอนโทรลเลอร์ N64: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: EP 27. Arduino ฉบับไวจนไฟลุก !! - สาระเดฟ ใน 3 นาที 2024, มิถุนายน
Anonim
ใช้ Arduino กับคอนโทรลเลอร์ N64
ใช้ Arduino กับคอนโทรลเลอร์ N64

มีบทช่วยสอนเกี่ยวกับการใช้คอนโทรลเลอร์ NES กับ Arduino แต่การใช้คอนโทรลเลอร์ N64 ที่ซับซ้อนกว่าและจอยสติ๊กแบบอะนาล็อกนั้นมีเสน่ห์ดึงดูดใจ หากคุณมี Arduino อยู่ใกล้ๆ และไม่ต้องการซื้อ Adaptoid คำแนะนำนี้จะทำให้สามารถเล่นเกมจำลองใน Project 64 ด้วย Ardunio และคอนโทรลเลอร์ N64 ได้ ยากไหม / มันจะสร้างความเสียหายให้กับสิ่งของของฉันหรือไม่? การดำเนินการนี้จะไม่แก้ไขคอนโทรลเลอร์ของคุณแต่อย่างใด และการเดินสายทำได้ง่ายมาก ดังนั้น หากคุณทำทุกอย่างอย่างระมัดระวัง ตัวควบคุมของคุณจะไม่มีความเสี่ยง และคุณสามารถปลดมันออกเมื่อใดก็ได้เพื่อใช้กับคอนโซล N64 สิ่งที่คุณจะทำได้ ต้องการ:Arduino - $30 การประมวลผล 1.0 - ฟรีซอฟต์แวร์Arduino - สาย USB ฟรี 3 ชิ้น - ฟรี (ฉันหวังว่า)

ขั้นตอนที่ 1: การเดินสายคอนโทรลเลอร์

การเดินสายไฟคอนโทรลเลอร์
การเดินสายไฟคอนโทรลเลอร์
การเดินสายไฟคอนโทรลเลอร์
การเดินสายไฟคอนโทรลเลอร์
การเดินสายไฟคอนโทรลเลอร์
การเดินสายไฟคอนโทรลเลอร์

สิ่งแรกที่คุณต้องทำคือเชื่อมต่อ Arduino ของคุณกับคอนโทรลเลอร์ คอนโทรลเลอร์ใช้ลีดสามตัวเท่านั้น: +3.3V, สัญญาณ และกราวด์ มองตรงที่ปลั๊ก กราวด์อยู่ซ้ายสุด สัญญาณอยู่ตรงกลาง และ +3.3V อยู่ทางขวา ใช้สายเชื่อมต่อกราวด์และ +3.3V กับพินตามลำดับบน Arduino และเชื่อมต่อสัญญาณที่นำไปสู่ขา Digital 2 บน Ardunio หมายเหตุ: หากคุณมีรหัสอื่นบน Arduino คุณควรถอดคอนโทรลเลอร์ออกและอัปโหลด รหัสใหม่จากหน้าถัดไปไปยัง Arduino ก่อนที่จะเปิดเครื่องโดยต่อกับคอนโทรลเลอร์เชื่อมต่อ Arduino ต่อสาย USB และ Arduino จะมีพลังงาน

ขั้นตอนที่ 2: แกะและเรียกใช้รหัส

ฉันเขียนรหัสนี้โดยมีส่วนต่างๆ ของไฟล์ N64_Arduino ตามรหัสแอสเซมบลีที่เขียนโดย Andrew Brown คลังเก็บ ZIP: ไฟล์ Zip สองไฟล์ด้านล่างมีรหัสที่จำเป็นในการเรียกใช้ Arduino จากนั้นจึงตีความข้อมูลที่ส่งไปยังคอมพิวเตอร์ ต้องคอมไพล์ไฟล์ N64_Arduino ใน Arduino IDE และ N64_Controller ทำงานในการประมวลผล 1.0. N64_Arduino ไฟล์ PDE นี้ควรอัปโหลดไปยัง Arduino ของคุณและทำงานโดยไม่มีปัญหาหากคุณเชื่อมต่อทุกอย่างถูกต้อง เพียงแค่สอบถามข้อมูลคอนโทรลเลอร์ N64 บนปุ่มและอนาล็อกสติ๊ก และส่งกลับไปยังคอมพิวเตอร์ผ่านพอร์ตอนุกรม มันง่ายพอที่จะแก้ไข ตัวอย่างเช่น คุณสามารถใช้เมธอดจากไฟล์นี้เพื่อสอบถามคอนโทรลเลอร์และใช้ข้อมูลเพื่อรันหุ่นยนต์ Arduino แทนที่จะส่งกลับไปยังคอมพิวเตอร์N64_Controller นี่คือโปรเจ็กต์ Processing 1.0 ที่นำ ข้อมูลที่ส่งโดย Arduino และแปลงเป็นแป้นพิมพ์ที่คุณสามารถแมปกับโปรแกรมจำลองเช่น Project 64 คุณอาจต้องเปลี่ยนบรรทัด String portName = Serial.list()[1]; เพื่อให้ตรงกับ Arduino ของคุณ ควรเป็น Serial.list()[0]; Serial.list()[1]; หรือ Serial.list()[2]; แก้ไข: เพิ่ม "นำเข้า java.awt. Robot;" "นำเข้า java.awt. AWTException;" "นำเข้า java.awt.event. InputEvent;" ไปยังโค้ดหากคุณกำลังใช้การประมวลผล 1.1N64_Controller_mouse ซึ่งจะเหมือนกับ N64_Controller ยกเว้นว่าแท่งอนาล็อกจะควบคุมเมาส์ของคุณ ไม่ใช่ปุ่มลูกศร A และ B คลิกขวาและซ้ายตามลำดับ ในการเปิดใช้งานเมาส์ ให้กดปุ่มเริ่มต้นบนคอนโทรลเลอร์ของคุณ

ขั้นตอนที่ 3: ตั้งค่าโครงการ 64

ตั้งค่าโครงการ 64
ตั้งค่าโครงการ 64

ก่อนที่คุณจะใช้คอนโทรลเลอร์ได้ คุณต้องเชื่อมต่อ Arduino และรันโค้ดที่คุณดาวน์โหลดในขั้นตอนสุดท้าย และต้องเปิดการประมวลผล 1.0 โดยที่โปรแกรม N64_Controller ทำงานอยู่ ทดสอบใน Notepad กดปุ่ม A ควรพิมพ์ A B ควรพิมพ์ A B ฯลฯ ดังนั้นตอนนี้คุณมีตัวควบคุมที่ใช้งานได้ (หวังว่า) และคุณต้องการเล่นเกมบางเกม Downl0ad PJ 64https://www.pj64 -emu.com/downloads/Set Key Mappings เริ่ม PJ 64 และเปิดเมนูการตั้งค่าก่อน (Ctrl+T) เปลี่ยนตัวควบคุมอินพุตเป็นอินพุตโดยตรงของ N-Rage เปิดเมนู "กำหนดค่าปลั๊กอินตัวควบคุม" และตั้งค่าการแมปโดยใช้คอนโทรลเลอร์ เริ่มเล่น! คุณควรพร้อมแล้วที่จะไปตอนนี้! ดาวน์โหลด ROM บางตัวและเริ่มเพลิดเพลินกับอะแดปเตอร์ homebrew N64 ของคุณ

ขั้นตอนที่ 4: รหัส Arduino ในเชิงลึก

รหัส Arduino ในเชิงลึก
รหัส Arduino ในเชิงลึก

โปรโตคอล N64 บิตที่ส่งไปและกลับจากคอนโทรลเลอร์ N64 บนอินเทอร์เฟซแบบสายเดียวถูกเข้ารหัสในพัลส์กว้าง 4 µs '0' มีค่าต่ำ 3 µ และสูง 1 µ '1' มีค่าต่ำ 1 µ และสูง 3 µ รหัส Arduino ในวิธี N64_send หรือ N64_receive ใช้รหัสแอสเซมบลีที่กำหนดเวลาอย่างระมัดระวังซึ่งเขียนโดย Andrew Brown เพื่อบิตแบงสายข้อมูลเพื่อสื่อสารกับคอนโทรลเลอร์ บล็อค nop ใช้เพื่อรอปริมาณ µs ที่เหมาะสมก่อนที่จะทำการโพลบรรทัดการส่งข้อมูล เมื่อเริ่มต้น 0x00 จะถูกส่งไปยังคอนโทรลเลอร์และหลังจากนั้นคำสั่งเดียวที่ใช้คือ 0x01 เพื่อสอบถามสถานะของคอนโทรลเลอร์การเข้ารหัสข้อมูลเมื่อได้รับข้อมูลหลังจาก 0x01 จะมาถึงเป็นข้อมูลปุ่ม 16 บิตและ 16 บิต ข้อมูลจอยสติ๊กแบบอะนาล็อก ข้อมูลจะมีลักษณะดังนี้ 44000000000000400044440044000444 รูปแบบของบิตคือ: A, B, Z, Start, Dup, Ddown, Dleft, Dright, 0, 0, L, R, Cup, Cdown, Cleft, Cright + 16 bits of analog ตำแหน่งติด เมธอด translate_raw_data() จะผ่าน 32 บิต โดยแทรกลงใน struct N64_status 16 บิตแรกนั้นง่าย 1 หรือ 0 แต่ 16 บิตสุดท้ายจะถูกแปลเป็นจำนวนเต็มโดยประมาณในช่วง (-80, 80) โดย for (i=0; i<8; i++) { N64_status.stick_x |= N64_raw_dump[16+i] ? (0x80 >> ผม): 0; } หลังจากที่ข้อมูลอยู่ในรูปแบบง่ายๆ นี้แล้ว คุณจะสามารถทำทุกอย่างที่คุณต้องการได้อย่างง่ายดาย ในกรณีนี้ มันเพียงส่งผ่านพอร์ตอนุกรมในเมธอด loop() เป็นสตริงของข้อมูลไบนารีที่มีจำนวนเต็มสองตัวสำหรับค่า x และ y ข้อมูลที่ส่งผ่านพอร์ตอนุกรมอาจมีลักษณะดังนี้: 040000000000000400 63 -67 ซึ่งหมายความว่ามีการกดปุ่มสองปุ่มและแท่งควบคุมอยู่ที่ 63, -67

ขั้นตอนที่ 5: การอ้างอิง

อ้างอิง
อ้างอิง

โครงการของ Andrew Brown ในการสร้าง gamecube เป็นอะแดปเตอร์ N64 ด้วย Arduino นั้นมีค่ามากในขณะที่เขียนโค้ดสำหรับโครงการนี้:

แผนผังที่เป็นประโยชน์สามารถพบได้ที่นี่: https://www.raphnet.net/electronique/gc_n64_usb/index_en.php ข้อมูลเกี่ยวกับโปรโตคอลที่เป็นกรรมสิทธิ์ของคอนโทรลเลอร์ N64 สามารถพบได้ที่นี่:

แนะนำ: