สารบัญ:

Lapcade Arcade Controller: 6 ขั้นตอน (พร้อมรูปภาพ)
Lapcade Arcade Controller: 6 ขั้นตอน (พร้อมรูปภาพ)

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

วีดีโอ: Lapcade Arcade Controller: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: How To Build An Arcade Joystick From Scratch DIY 2024, มิถุนายน
Anonim
Lapcade Arcade Controller
Lapcade Arcade Controller

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

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

ขั้นตอนที่ 1: ภาพรวม

ภาพรวม
ภาพรวม
ภาพรวม
ภาพรวม

สิ่งนี้คืออะไร?

ก่อนอื่น โปรดทราบว่า Lapcade ไม่ใช่อะไร:

  • มันไม่ใช่เกมคอนโซล
  • ไม่มีเกมและไม่มีความสามารถในการโหลดและเล่นเกม
  • มันไม่เชื่อมต่อกับทีวีหรือจอภาพ

Lapcade เป็นแป้นพิมพ์บลูทูธ ไม่มีอะไรมาก ไม่มีอะไรน้อย

ฉันนำสิ่งนี้ขึ้นมาเนื่องจากมีความสับสนในประเด็นนี้ ฉันมีคำถามมากมายเกี่ยวกับเกมที่สามารถโหลดได้ และชนิดของอินเทอร์เฟซวิดีโอที่ใช้ - ไม่สามารถและไม่ได้! ขึ้นอยู่กับพีซีที่คุณเชื่อมต่อทั้งหมด และท้องฟ้าเป็นข้อจำกัด หากอุปกรณ์ของคุณยอมรับแป้นพิมพ์ Bluetooth ได้ Lapcade ควรใช้งานได้ ฉันไม่ได้ลอง แต่ฉันเห็นโปรเจ็กต์อื่นๆ ที่ใช้ EZ-Key (อธิบายด้านล่าง) ที่เชื่อมต่อกับอุปกรณ์พกพา ดังนั้น ตามทฤษฎีแล้ว คุณสามารถเชื่อมต่ออุปกรณ์นี้กับคอมพิวเตอร์ทุกเครื่องที่ใช้ Windows, Linux, ChromeOS, MAC เป็นต้น รวมทั้ง Raspberry Pi, Android, iOS และอื่นๆ ที่รองรับ Bluetooth v2.1 อย่างไรก็ตาม อาจจำเป็นต้องแก้ไขรหัสคีย์

รุ่นก่อน 1

เดิมที ฉันพบผลิตภัณฑ์ที่เรียกว่า Adafruit Bluefruit EZ-Key bluetooth HID (อุปกรณ์อินเทอร์เฟซสำหรับมนุษย์ - คิดว่าแป้นพิมพ์) ที่จะให้ฉันเชื่อมต่อปุ่มที่คุ้นเคยและส่งการกดแป้นพิมพ์เหมือนแป้นพิมพ์ เมื่อฉันสร้างคอนโทรลเลอร์ตาม EZ-Key เป็นครั้งแรก ฉันปฏิบัติตามชุดคำสั่งเพื่อสร้างคอนโทรลเลอร์ที่เรียบง่ายและตรงไปตรงมา และมันใช้งานได้ดี ฉันใช้ตัวควบคุมในโครงไม้หนักๆ เป็นเวลาสองสามเดือนโดยไม่มีปัญหา อย่างไรก็ตาม คุณถูกจำกัดที่ 12 อินพุต และไม่มีวิธีใดที่จะเปลี่ยนรหัสที่ส่งโดยอุปกรณ์โดยไม่ต้องตั้งโปรแกรมพินอินพุต EZ-Key ใหม่

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

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

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

ถึงเวลาสำหรับการอัพเกรด

เวอร์ชัน 1 DesignProject เป้าหมาย:

  • ยืดหยุ่นได้
  • ชาร์จได้
  • สำหรับ Lefties และ Righties
  • ไม่มีสาย
  • น้ำหนักเบา

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

EZ-Key นั้นไม่สามารถตั้งโปรแกรมได้โดยตรงในแบบเรียลไทม์ ดังนั้นวิธีแก้ปัญหาต่อไปคือการใช้คอนโทรลเลอร์ เช่น Arduino เพื่อจัดการการทำงาน EZ-Key จะใช้เพื่อส่งรหัสคีย์ไปยังพีซีผ่าน Bluetooth เท่านั้น ฉันเลือก Arduino Pro Mini เนื่องจากสามารถใช้งานร่วมกับ UNO ได้โดยตรง (ซึ่งฉันมีประสบการณ์มาแล้ว) และด้วยขนาดที่กะทัดรัด

ฉันไม่ต้องการจัดการกับแบตเตอรี่ด้วยกล่องใหม่นี้เหมือนกับที่ฉันทำกับ Lapcade รุ่นก่อน ฉันจึงเลือกใช้แบตเตอรี่ลิเธียมโพลิเมอร์แบบชาร์จไฟได้และแท่นชาร์จ/แผงจ่ายไฟ นั่นหมายความว่าฉันสามารถใช้ที่ชาร์จ USB แบบมาตรฐานได้ นอกจากนี้ยังหมายความว่าฉันไม่ต้องเปิดเคสทุกครั้งที่แบตเตอรี่หมด EZ-Key และ PowerBoost 500C ทั้งคู่มีไฟแสดงที่จำเป็นต้องถ่ายโอนไปยังด้านบนของคอนโทรลเลอร์สำหรับสถานะการจับคู่และไฟแสดงสถานะแบตเตอรี่เหลือน้อย ฉันเพิ่มไฟ LED บางส่วนลงในการออกแบบเพื่อที่ฉันจะได้แสดงตัวบ่งชี้สถานะที่มีประโยชน์เหล่านี้แก่ผู้ใช้ระหว่างการทำงาน

เมื่อการทดสอบการออกแบบของฉันพัฒนาเต็มที่ ฉันพบว่าแนวคิดดั้งเดิมหลายอย่างของฉันไม่เป็นไปตามที่ฉันคาดไว้ ตัวอย่างเช่น ตัวบ่งชี้ LBO บน PowerBoost ไม่ทำงานตามที่คาดไว้เมื่อเชื่อมโยงกับไมโครคอนโทรลเลอร์ จะช่วยให้กระแสไหลผ่านพื้นดินทั่วไปจากแบตเตอรี่ในขณะที่อุปกรณ์ "ปิด" หรือปิดใช้งาน ไฟ LBO จะสว่างและติดสว่าง คนอื่นๆ ในฟอรัม Adafruit ก็พบปัญหานี้เช่นกัน และเสนอวิธีแก้ปัญหาที่ดีกว่าในการสุ่มตัวอย่างแรงดันไฟฟ้าของแบตเตอรี่โดยตรงบนอินพุตแบบอะนาล็อก เมื่อแรงดันไฟฟ้าลดลงถึงระดับหนึ่ง ก็ถึงเวลาแจ้งให้ผู้ใช้ทราบว่าแบตเตอรี่กำลังจะปิด

ขั้นตอนที่ 2: สิ่งที่คุณต้องการ

รายการชิ้นส่วนอิเล็กทรอนิกส์

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

1 Arduino Pro Mini 5V - ฉันชอบ Pro เพราะมันกะทัดรัด คุณสามารถใช้ Uno พิน/บอร์ดที่เข้ากันได้กับการขัดจังหวะด้วยรหัสที่ให้มา

1 Adafruit Bluefruit EZ-Key Bluetooth HID - ตามที่อธิบายไว้ข้างต้น นี่คือ Bluetooth HID ที่อนุญาตให้ส่งรหัสคีย์ไปยังโฮสต์พีซี

1 MCP23017 - i2c 16 ตัวขยายพอร์ตอินพุต/เอาต์พุต - ชิปนี้ใช้เพื่อเพิ่มอินพุต 16 ตัวให้กับ Arduino ผ่านโปรโตคอลการสื่อสาร I2C

1 Adafruit PowerBoost 500 + Charger - นี่คือแผงควบคุมพลังงานสำหรับเปิดเครื่อง Lapcade และชาร์จ LiPo

แบตเตอรี่ลิเธียมโพลิเมอร์ 1 ก้อน (ฉันใช้ 2500mAh แต่คุณสามารถใช้ความจุที่สูงขึ้น / ต่ำลงได้)

1 8-Way Arcade Joystick - โปรดดูส่วน "ความคิดสำหรับเวอร์ชัน 2" ด้านล่างเกี่ยวกับจอยสติ๊ก

ปุ่มกดอาร์เคด 9 ปุ่ม - คละสีและภาพพิมพ์

ปุ่มกดชั่วขณะเรืองแสง 2 ปุ่ม - ฉันใช้ 2 ปุ่มนี้สำหรับปุ่มกลาง 4 และ 5 และมาจาก Adafruit: สีแดง (ตรงกลาง 4) สีน้ำเงิน (ตรงกลาง 5)

1 ปุ่มกดสลักเรืองแสง ฉันใช้สิ่งนี้กับปุ่มเปิดปิดจาก Adafruit: Green

ไฟ LED 2 ดวง ใช้สำหรับอ้างอิงสัญญาณการจับคู่และแบตเตอรี่เหลือน้อย ฉันใช้ RadioShack สองส่วน 2760270 และ 2760271

1 16 x 2 หน้าจอ LCD

1 I2C/SPI LCD backpack - ใช้สำหรับการสื่อสาร I2C ไปยังจอแสดงผล 16x2

1 สายต่อ USB แบบยึดกับแผงควบคุม - ใช้เพื่อต่อขั้วต่อ micro-b USB ของ PowerBoost เข้ากับผนังตู้

1 Adafruit Perma-Proto Full-sized Breadboard PCB - ไม่จำเป็นแต่ทำให้การติดตั้งแบบถาวรง่ายขึ้นมาก

5 ตัวต้านทาน 220 โอห์ม

ตัวต้านทาน 7 1K โอห์ม

ตัวต้านทาน 2 ตัว 2.2K โอห์ม

ตัวต้านทาน 1 4.7K โอห์ม

18 #10 Female Spade Connectors - สำหรับเชื่อมต่อกับหน้าสัมผัสปุ่มอาร์เคด แนะนำให้ใช้มากกว่าการบัดกรีเนื่องจากปุ่มต่างๆ จะเสื่อมสภาพในที่สุด

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

ไม่จำเป็นต้องใช้รายการต่อไปนี้แต่จะทำให้ mounging ง่ายขึ้น และในกรณีที่คุณปิ้งส่วนประกอบ ให้เปลี่ยนได้ง่ายขึ้น:

  • ซ็อกเก็ต IC - สำหรับชิป 28 ขา 0.3"
  • ซ็อกเก็ต IC - สำหรับ 28-pin 0.6" Chips
  • หัวต่อตัวเมีย 0.1" (อย่างน้อย 1 หัวต่อ 36 พิน)

ชิ้นส่วนตู้:

  • 3 12 x 24 1/8 นิ้วแผงไม้เบิร์ช
  • 1 แผงอะคริลิคใสขนาด 12 x 24 1/8 นิ้ว

ไฟล์:

  • Lapcade V1.xlsx - สเปรดชีตที่กล่าวถึงด้านล่างที่มีการเชื่อมต่อวงจร
  • LapcadeV1-code.zip - ไฟล์ Zip ที่มีโค้ด Arduino ที่เขียนขึ้นสำหรับโครงการนี้
  • Lapcade_v1.zip - ไฟล์ Zip ที่มีภาพวาด svg สำหรับตู้
  • LapcadeV1-Circuit_Diagram_Large.zip - ไฟล์ซิปที่มีไดอะแกรมวงจรฟริตซิ่งเวอร์ชันความละเอียดสูงที่แสดงด้านล่าง

ลิงค์ไปยังแหล่งข้อมูลเพิ่มเติม:

  • Adafruit Bluefruit EZ-Key เอกสาร
  • Adafruit PowerBoost 500 + เอกสารประกอบ
  • เอกสารประกอบกระเป๋าเป้สะพายหลัง LCD I2C/SPI
  • MCP23017 I2C Port Extender เอกสารประกอบ
  • Adafruit MCP23017 Arduino Library

ขั้นตอนที่ 3: การประกอบ - คณะรัฐมนตรี

การประกอบ - คณะรัฐมนตรี
การประกอบ - คณะรัฐมนตรี
การประกอบ - คณะรัฐมนตรี
การประกอบ - คณะรัฐมนตรี
การประกอบ - คณะรัฐมนตรี
การประกอบ - คณะรัฐมนตรี
การประกอบ - คณะรัฐมนตรี
การประกอบ - คณะรัฐมนตรี

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

เพื่อแก้ปัญหานี้และเนื่องจาก Lapcade กว้าง 20 นิ้ว การออกแบบของฉันจึงเพิ่มซี่โครงแนวตั้งสองซี่ที่ยึดด้านบนและด้านซ้ายและด้านขวา ระหว่างการติดตั้งแบบแห้ง การออกแบบสามารถทนต่อหนังสือน้ำหนัก 70 ปอนด์ที่วางอยู่บนนั้นได้ เมื่อติดกาวแล้ว กล่องมีความทนทานมากขึ้นหลังจากได้รับวัสดุที่ตัดแล้วในตอนแรกฉันหลวมพอดีกับแผงทั้งหมดเพื่อให้แน่ใจว่าพวกเขาทำงานจากนั้นฉันขัดเบา ๆ และปัดฝุ่นด้วยอากาศ ฉันใช้กาวไม้เพื่อติดชิ้นส่วนเข้าด้วยกัน

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

หลังจากทำความสะอาดพื้นผิวแล้ว ฉันก็ทาโพลียูรีเทนหลายชั้น เพื่อให้สามารถแข็งตัวระหว่างชั้นเคลือบต่างๆ ผลลัพธ์ที่ได้คือกล่องไม้น้ำหนักเบาที่มีฝาปิดด้านล่างเป็นอะครีลิค เดิมทีฉันต้องการกล่องใสทั้งหมด แต่เมื่อเขาส่งชิ้นส่วน "ทดสอบ" ของเบิร์ช ฉันก็เปลี่ยนใจทันที มันไม่เพียงแต่เบากว่าเท่านั้น แต่ยังเป็นการดีที่จะย้อนกลับไปสู่แนวคิดการเล่นเกมตู้ ไฟล์ svg อยู่ด้านล่าง

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

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

หมายเหตุที่สาม: ฉันไม่ได้รวมช่องตัดสำหรับสายชาร์จ USB ไว้ในภาพวาดต้นฉบับ เพียงเพราะฉันไม่แน่ใจว่าจะวางมันไว้ที่ใด จึงไม่รบกวนการใช้งาน ต่อมาฉันเจาะรูทางด้านซ้ายใกล้กับตำแหน่งที่คุณเห็นคำว่า "Lapcade" ในภาพด้านล่าง เวอร์ชัน 2 จะมีพอร์ตการชาร์จในตำแหน่งที่ต่างออกไป:)

ขั้นตอนที่ 4: การประกอบ - อิเล็กทรอนิกส์

การประกอบ - อิเล็กทรอนิกส์
การประกอบ - อิเล็กทรอนิกส์
การประกอบ - อิเล็กทรอนิกส์
การประกอบ - อิเล็กทรอนิกส์
การประกอบ - อิเล็กทรอนิกส์
การประกอบ - อิเล็กทรอนิกส์
การประกอบ - อิเล็กทรอนิกส์
การประกอบ - อิเล็กทรอนิกส์

ก่อนอื่น มาดูแผนภาพการเดินสายไฟที่แสดงด้านบนกัน

สิ่งแรกที่ควรทราบที่นี่คือพลังและรางกราวด์ของเขียงหั่นขนม รางที่มีเส้นสีน้ำเงินคือกราวด์ (-) และรางที่มีเส้นสีแดงคือกำลัง (+) นี่เป็นมาตรฐาน แต่ฉันกำลังจดบันทึกไว้เพราะจอยสติ๊กทั่วไป (สายสีดำ) เชื่อมต่อกับพลังงานไม่ใช่กราวด์ ใน Fritzing ฉันใช้สีลวดของจอยสติ๊กมากกว่าสีแบบแผนและคิดว่าอาจทำให้เกิดความสับสนได้ ดังนั้นควรหลีกเลี่ยงมันให้ได้ดีที่สุด

การเชื่อมต่อส่วนประกอบ

แทนที่จะพยายามระบุทุกการเชื่อมต่อในรูปแบบยาวที่นี่ (Arduino analog pin 0 ผ่านตัวต้านทาน 220 โอห์มไปยังพิน PowerBoost Bat) ฉันสร้างสเปรดชีตที่มีการเชื่อมต่อทั้งหมดจากมุมมองของส่วนประกอบ ดังนั้น บนแท็บ Arduino ของสเปรดชีต คุณจะเห็น APM A0 -> 2.2K OHM -> PB Bat และบนแท็บ PowerBoost คุณจะเห็น PB BAT -> 2.2K OHM -> APM A0 โปรดดูส่วนทรัพยากรด้านล่างสำหรับไฟล์ทั้งหมดที่เกี่ยวข้องกับโครงการนี้

ข้อสังเกตอีกอย่างหนึ่งเกี่ยวกับสเปรดชีตคืออุปกรณ์บางตัวแสดงคอลัมน์การเชื่อมต่อสองคอลัมน์ นี่เป็นการแสดงการเชื่อมต่อกับพินมากกว่าหนึ่งรายการ ตัวอย่างเช่น การเชื่อมต่อจอยสติ๊กแต่ละอันยกเว้นสายทั่วไปใช้ตัวต้านทานแบบดึงลงเพื่อให้แน่ใจว่าตัวขยายพอร์ตได้รับสัญญาณสูงหรือต่ำที่มั่นคง ในการแสดงสิ่งนี้สำหรับจอยสติ๊ก 2 คุณจะเห็นสองคอลัมน์สำหรับเชื่อมต่อ อันหนึ่งสำหรับสายจอยสติ๊กกับพิน MCP 21 และอีกคอลัมน์หนึ่งสำหรับการเชื่อมต่อจากพิน 21 ผ่านตัวต้านทานลงกราวด์ ฉันแน่ใจว่ามีวิธีที่ดีกว่าในการจัดทำเอกสารนี้ แต่ฉันเกรงว่าคุณจะติดอยู่กับวิธีการทำสิ่งต่างๆ ของฉันในเรื่องนี้:)

ปุ่มอาร์เคดแต่ละปุ่มมีหน้าสัมผัสทั่วไป (com) ปุ่มเปิดตามปกติ (ไม่) และปุ่มปิดปกติ (nc) สำหรับแต่ละปุ่มเหล่านี้ ฉันใช้การเชื่อมต่อ com และ nc

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

รหัส
รหัส

ก่อนอื่นฉันต้องให้เครดิตเมื่อถึงกำหนด ฉันอาศัยบทความต่อไปนี้เป็นอย่างมากเพื่อเขียนโค้ด Lapcade:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid ขอขอบคุณเป็นพิเศษกับ Benjamin Gould สำหรับโครงการที่เขียนและจัดทำเป็นเอกสารอย่างดี!

ดังนั้น หัวใจของโครงการนี้คือคีย์บอร์ด จากมุมมองของพีซี Lapcade เป็นเพียงแป้นพิมพ์ที่เชื่อมต่อผ่านบลูทูธ ซึ่งเป็นสิ่งที่ EZ-Key ทำได้ดีมาก มันใช้โปรโตคอล Bluetooth การกำหนดเวลาและรหัสที่ซับซ้อนและห่อหุ้มไว้ ดังนั้นทั้งหมดที่ฉันต้องทำกับ Arduino ก็คือส่งคีย์โค้ดไป ในการทำเช่นนั้น ฉันใช้โค้ดแมปในโครงการด้านบนและอาร์เรย์ของฉันเองเพื่อสร้างโหมดการทำงาน แต่ละโหมดจะเปลี่ยนสิ่งที่กดปุ่มเดียวกันบน Lapcade และสิ่งที่จะถูกส่งไปยังพีซี มีโหมดการทำงาน "ในตัว" สามโหมด และโหมดทั้งหมดหลังจากนั้นคือโหมดแอปพลิเคชัน

โหมดการทำงาน

ต่อไปนี้จะสรุปโหมดการทำงานของ Lapcade:

  1. เริ่มต้น - โหมดนี้จะตรวจสอบการเชื่อมต่อกับพีซีและตั้งค่าตัวแปรเริ่มต้น หาก EZ-Key ไม่ได้จับคู่กับพีซี มันจะเปลี่ยนเป็นโหมดจับคู่
  2. การจับคู่ - ในโหมดนี้ EZ-Key กำลังรอที่จะจับคู่กับพีซี
  3. เลือกโหมด - โหมดนี้อนุญาตให้ผู้ใช้เลือกโหมดแอปพลิเคชันที่จะใช้ ไม่มีการส่งรหัสคีย์ไปยังพีซีในโหมดนี้ นอกจากนี้ยังมีการเลือกโหมดด่วนตามโหมดแอปพลิเคชันก่อนหน้าอีกด้วย เช่น กดโหมดแล้วกดปุ่ม 2 ปุ่มเมื่ออยู่ในโหมด Mame player 1 เพียงสลับโหมดโดยไม่ต้องค้นหาและเลือก Mame Player 2 บนหน้าจอ

โหมดแอปพลิเคชัน

โหมดแอปพลิเคชันใช้เพื่อส่งรหัสที่เหมาะสมไปยังพีซีตามแอปพลิเคชันที่ผู้ใช้อยู่ ตัวอย่างเช่น ในโหมด Kodi ปุ่มการกระทำ 2 จะส่ง "P" ซึ่งจะหยุดชั่วคราว ใน Mame ปุ่มเดียวกันนั้นจะส่งปุ่ม Alt ด้านซ้าย หากต้องการใช้คอนโทรลเลอร์เพื่อเล่น Minecraft สำหรับพีซี สิ่งที่ต้องทำคือเพิ่มแผนที่อาร์เรย์ที่เหมาะสม

แต่ละแอปพลิเคชันจะต้องถูกกำหนดใน 4 อาร์เรย์ของข้อมูล

  • โหมด - อาร์เรย์นี้มีข้อความที่จะนำเสนอบนหน้าจอสำหรับแต่ละโหมด หากต้องการใช้บรรทัดที่สองของจอแสดงผล เพียงวาง ~ ในอาร์เรย์เพื่อขึ้นบรรทัดใหม่
  • keyModes[14] - เมทริกซ์อาร์เรย์นี้มีคีย์โค้ดที่ส่งไปยังพีซี แต่ละบรรทัดของ 14 องค์ประกอบแสดงถึงแต่ละปุ่มสำหรับการแมปคีย์โค้ด
  • keyModifiers[14] - เมทริกซ์อาร์เรย์นี้มีตัวแก้ไขคีย์โค้ดสำหรับการกดแป้นแต่ละครั้ง เช่น การกดแป้น Shift ค้างไว้
  • quickMode[3] - เมทริกซ์อาร์เรย์นี้มีรูปแบบการเลือกโหมดด่วนสำหรับโหมดปัจจุบัน

การใช้งานพื้นฐาน

เมื่อเปิดระบบ ระบบจะเข้าสู่โหมดเริ่มต้นซึ่งมีการตรวจสอบสถานะการเชื่อมต่อ Bluetooth และแสดงให้ผู้ใช้เห็น Arduino รับสถานะของ EZ-Key จากการนับและจับเวลาพัลส์จากพิน L1 ของ EZ-Key มีสี่สถานะย่อยสำหรับโหมดเริ่มต้น:

  • การจับคู่ - EZ-Key อยู่ในโหมดจับคู่ที่ทำงานอยู่เพื่อรอเชื่อมต่อกับอุปกรณ์
  • จับคู่แต่ไม่ได้เชื่อมต่อ - EZ-Key ได้รับการจับคู่ก่อนหน้านี้แต่ไม่ได้เชื่อมต่อกับอุปกรณ์โฮสต์ในขณะนี้
  • จับคู่และเชื่อมต่อ - EZ-Key ได้รับการจับคู่และเชื่อมต่อกับโฮสต์แล้ว ณ จุดนี้ระบบจะย้ายไปที่ Mode Select
  • สถานะที่ไม่รู้จัก - EZ-Key กำลังส่งคืนรหัสที่ไม่รู้จักหรือมีสัญญาณรบกวนที่สร้างรูปแบบสัญญาณที่ไม่รู้จัก ระบบจะระงับและแจ้งให้ผู้ใช้บริการทราบ ต้องรีสตาร์ทหากสิ่งนี้เกิดขึ้น

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

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

ในการเลือกโหมด การกระทำของจอยสติ๊กขึ้นและลงจะย้ายคุณผ่านโหมดแอปพลิเคชันที่มีอยู่บนจอ LCD หากต้องการเลือกโหมดใดโหมดหนึ่ง ให้กดปุ่ม Enter (ตรงกลาง 5)

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

โหมดด่วน

เมื่อเลือกโหมดแอปพลิเคชันแล้ว จะมีการตั้งค่าคำจำกัดความโหมดด่วน พูดง่ายๆ คือ โหมดด่วนคือโหมดแอปพลิเคชันที่สามารถเลือกได้ด้วยปุ่มกลางสามปุ่มแรก (ตรงกลาง 1-3) ปุ่มสามปุ่มนี้สอดคล้องกับองค์ประกอบอาร์เรย์ในเมทริกซ์

ตัวอย่างเช่นในการกำหนดค่าปัจจุบันเมื่อใช้ Mame ในโหมดผู้เล่น 1 (โหมด 4 หรือโหมดที่ห้าที่กำหนดไว้) จากนั้นกดปุ่มโหมดจากนั้นผู้เล่นสองปุ่มจะโหลดองค์ประกอบอาร์เรย์ Quickmode [4][1] (Arduino ใช้ 0 การจัดทำดัชนีอาร์เรย์ฐาน) ซึ่งเท่ากับ 5. จากนั้นระบบจะสลับไปที่โหมดแอปพลิเคชัน 5 ซึ่งก็คือ Mame ผู้เล่นที่ 2

ขั้นตอนที่ 6: แนวคิดสำหรับเวอร์ชัน 2

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

จอยสติ๊ก 4-Way vs 8-Way - อีกสิ่งหนึ่งที่ชัดเจนเมื่อฉันเริ่มใช้จอยสติ๊กคือเกมที่เก่ากว่าไม่ได้ตั้งใจจะใช้จอยสติ๊กแบบ 8 ทิศทาง กรณีตรงประเด็นคือ pac-man ตั้งแต่สร้างคอนโทรลเลอร์นี้ ฉันพบว่ามีจอยสติ๊กอยู่ข้างนอกที่สามารถเปลี่ยนจาก 4 ทางเป็น 8 ทางได้ ใช่ อันนั้นอยู่ในรายการ และหากคุณกำลังวางแผนที่จะเล่นเกมอาร์เคดคลาสสิก ให้ข้ามไปยังเกมที่เปลี่ยนแปลงได้ แน่นอน ตรวจสอบให้แน่ใจว่าคุณได้พิจารณาการเปลี่ยนแปลงในการเดินสายและการเขียนโปรแกรมตามจอยสติ๊กที่คุณใช้งาน นี่คือซัพพลายเออร์บางส่วนของการควบคุมอาเขตแบบคลาสสิก:

  • https://www.ultimarc.com/controls.html
  • https://groovygamegear.com/webstore/index.php?main…

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

การควบคุมอื่นๆ - ฉันกำลังดูความสามารถในการเพิ่มการควบคุมทั่วไปอื่นๆ เช่น แทร็กบอลและ / หรือสปินเนอร์ในเวอร์ชันถัดไป เนื่องจาก EZ-Key สามารถส่งพิกัดของเมาส์ได้ จึงไม่น่าจะยากเกินไป

การเขียนโปรแกรมออนบอร์ด - เวอร์ชันถัดไปต้องมีความสามารถในการเพิ่มการกำหนดค่าใหม่โดยไม่ต้องเปิดเคสแตก ฉันต้องการเพิ่มสิ่งนี้ในเวอร์ชัน 1 แต่ต้องใช้เวลาและทรัพยากรมากกว่าที่ฉันมี

การแข่งขันไร้สาย
การแข่งขันไร้สาย
การแข่งขันไร้สาย
การแข่งขันไร้สาย

รางวัลที่สองในการประกวดไร้สาย

แนะนำ: