Arduino Leonardo / Micro (ATMega32u4) เป็น Gamepad / ตัวควบคุมเกม: 8 ขั้นตอน

Arduino Leonardo / Micro (ATMega32u4) เป็น Gamepad / ตัวควบคุมเกม: 8 ขั้นตอน

สารบัญ:

Anonim

ATMega32u4 ชิปที่ใช้ใน Arduino Leonardo, Micro หรือ Pro Micro มีความสามารถในการใช้ USB HID Descriptors แบบกำหนดเอง ขอบคุณความสามารถนี้ที่เราสามารถทำให้ Arduino ของเราเป็น Gamepad ทั่วไป!

ไลบรารีนี้มีทุกสิ่งเพื่อ "จำลอง" แป้นเกม PS2 (ดังนั้นสองปุ่มและ 16 ปุ่ม)

วัสดุ:

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

ห้องสมุดต้องการ Arduino IDE 1.6.6 หรือสูงกว่าเพื่อการทำงานที่เหมาะสม

ต่อไปเราต้องดาวน์โหลดไลบรารี

ข้อมูลและเอกสารทั้งหมดได้รับการจัดเก็บไว้ในที่เก็บ GitHub:

github.com/GAMELASTER/ArduinoGamepad

สำหรับการดาวน์โหลดคลิกปุ่ม "ดาวน์โหลด ZIP" ทางด้านขวา

สร้างไดเรกทอรีใหม่ชื่อ "Gamepad" ใน (โดยทั่วไปจะอยู่ใน Windows ที่) เอกสาร> Arduino> ไลบรารีและคัดลอกไฟล์ทั้งหมดจากไดเรกทอรี "ArduinoGamepad-master" ใน ZIP ที่ดาวน์โหลดมาลงในไดเรกทอรีนั้น

จากนั้นเริ่มต้น Arduino IDE และไลบรารีจะปรากฏในรายการไลบรารีและในรายการตัวอย่าง

ขั้นตอนที่ 2: Comiple และเรียกใช้แบบร่างการทดสอบ

เพียงแค่เปิดตัวอย่างสเก็ตช์ในภาพรวบรวมและอัปโหลดไปยัง Arduino ของคุณ

ขั้นตอนที่ 3: ตรวจสอบการทำงานของห้องสมุด

ไปที่แผงควบคุม> อุปกรณ์และเครื่องพิมพ์และค้นหาอุปกรณ์ของคุณ (สำหรับฉันคือ Arduino Leonardo)> คลิกขวา> การตั้งค่าอุปกรณ์เกม> คุณสมบัติ> ทดสอบ

หากปุ่มเปิดใช้งาน / ปิดใช้งานทีละขั้นตอนจะเป็นไร!

ขั้นตอนที่ 4: เชื่อมต่อ Thumbaxises และปุ่มเข้ากับ Arduino

สำหรับการทดสอบการเชื่อมต่อจริงระหว่างฮาร์ดแวร์ Arduino และพีซีเราจำเป็นต้องใช้ปุ่มหรือ thumbaxises

ฉันได้รับ thumbaxises สองปุ่ม + 2 ปุ่ม (กดเป็น thumbaxises) เชื่อมต่อกับ Pro Micro และปล่อยให้เป็น Arduino Sketch

ฉันเชื่อมต่อ Thumbstick ซ้ายไปที่:

  • X ถึง A2
  • Y ถึง A3
  • Z ถึง 4

ฉันเชื่อมต่อ Thumbstick ขวาไปที่

  • X ถึง A0
  • Y ถึง A1
  • Z ถึง 3

ขั้นตอนที่ 5: ทดสอบ Thumbsticks

tkkrlab.nl/wiki/Arduino_KY-023_XY-axis_joystick_module

รวบรวมปรับใช้และเปิดการตรวจสอบแบบอนุกรม

ลองเคลื่อนย้ายด้วย thumbstick ไปต่ำสุด - สูงสุดลองคลิก ฯลฯ

thumbsticks อาจแตกต่างกัน สำหรับฉันมันมีค่าสัมพัทธ์

ค่าแกนต่ำสุดคือ 0 และสูงสุดเต็มคือ 1,000 ดังนั้นศูนย์กลางคือ 500

ที่ Thumbstick ของฉันเป็นปัญหาศูนย์มีค่าเกือบจะแตกต่างกันดังนั้นเมื่อเราจะทำการรวมเข้ากับไลบรารีเราต้องทำการปรับเทียบเสถียรภาพและการจัดรูปแบบค่าสุดท้าย

และ Z (การกด) ฉันมี 0 เมื่อกดและ 1 เมื่อถูกปล่อย (นี่ไม่ใช่ความจริงมันกลับด้านกลับด้านกลับด้านทำ INPUT_PULLUP)

ขั้นตอนที่ 6: การรวมค่ากับไลบรารี

ร่าง:

github.com/GAMELASTER/ArduinoGamepad/blob/master/examples/ThumbsticksTest/ThumbsticksTest.ino

ในร่างนี้ฉันรวม Thumbsticks ของฉันไว้ในขั้นตอนก่อนหน้า

ตอนนี้ฉันจะอธิบายมัน

  1. ก่อนอื่นเราต้องมีห้องสมุด (บรรทัด 7)
  2. ต่อไปเราจำเป็นต้องกำหนดค่าศูนย์สำหรับทุกแกนฉันตั้งค่าทั้งหมด 500 เพราะเป็นศูนย์เริ่มต้น (บรรทัดที่ 10 - 13)
  3. เรากำหนดตัวคูณสำหรับการจัดรูปแบบค่า เนื่องจากค่าสูงสุดคือ 127 เราได้รับตัวคูณโดยหาร 127 กับศูนย์กลางดังนั้น 500 (บรรทัดที่ 14 - 17)
  4. การเริ่มต้นคลาส Gamepad (บรรทัดที่ 20)
  5. การเริ่มต้นโหมด Pin (บรรทัดที่ 23 - 28)
  6. การสอบเทียบเริ่มจาก Thumbsticks (บรรทัดที่ 29)
    1. เรากำหนดตัวแปรและสิ่งอื่น ๆ นี้ (บรรทัดที่ 72 - 73)
    2. ในขณะที่ … ขณะนี้มีไว้สำหรับ "การตรวจสอบ axises ของ thumbsticks" ถ้าอยู่ในพื้นที่กึ่งกลาง (บรรทัดที่ 74)
    3. เราอ่านอินพุตแบบอะนาล็อกจากแกน (สาย 76 - 79)
    4. เราจำเป็นต้องตรวจสอบว่าแกนอยู่ใน "พื้นที่กึ่งกลาง" ฉันเลือกช่วง 100 (เส้น 80 - 83)
    5. ถ้าเป็นสิ่งที่ดีในขณะที่ไปอีกครั้งจนถึง 8 ดียืนยันดังนั้นเราได้รับศูนย์จริง (บรรทัดที่ 84 - 89)
    6. เราตั้งค่า axises ให้กับตัวแปรทั่วโลกและเราคำนวณตัวคูณสำหรับแกนทั้งหมดดังนั้น realCenter หารด้วย 127
  7. ในวงเราอ่านอินพุตแบบอะนาล็อกและปุ่มบางปุ่ม (บรรทัด 33 - 37 และบรรทัดอื่น ๆ)
  8. ตอนนี้เราต้องการรูปแบบและค่าคงที่
    1. ดังนั้นก่อนอื่นเราต้องได้ค่าแกนที่ 0 คือศูนย์กลางดังนั้นค่าแกนลบด้วยแกนศูนย์
    2. จากนั้นเราคูณตัวคูณด้วยแกน
    3. และเพื่อรักษาเสถียรภาพเราปูพื้นมัน (ไม่มีรอบ)
  9. และสิ่งสุดท้ายคือ "ส่ง" ตัวแปรในไลบรารี

หมายเลขของปุ่มอธิบายไว้ในภาพด้านบน

ขั้นตอนที่ 7: ทดสอบผลลัพธ์สุดท้าย

รวบรวมปรับใช้และปล่อยให้เล่นเกมบางเกม!

ฉันเลือก Mirrors Edge แต่ Mirrors Edge รองรับเฉพาะ XBOX 360 gamepad ซึ่งสามารถแก้ไขได้ง่ายๆโดยการดาวน์โหลด X360CE

ขั้นตอนที่ 8: ข้อมูลเพิ่มเติมบัก ฯลฯ

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

เอกสาร, บัก ฯลฯ อยู่ใน GitHub:

github.com/GAMELASTER/ArduinoGamepad/

หรือบอกฉันมันเป็นความคิดเห็น!