Mục lục:

Jammarduino DUE - Tự làm giao diện PC to Jamma cho tủ Arcade: 6 bước
Jammarduino DUE - Tự làm giao diện PC to Jamma cho tủ Arcade: 6 bước

Video: Jammarduino DUE - Tự làm giao diện PC to Jamma cho tủ Arcade: 6 bước

Video: Jammarduino DUE - Tự làm giao diện PC to Jamma cho tủ Arcade: 6 bước
Video: Arcade1UP Mod - Turn Everything, Yes Everything OFF with Stock Power Switch 2024, Tháng mười một
Anonim
Jammarduino DUE - Tự làm giao diện PC to Jamma cho tủ Arcade
Jammarduino DUE - Tự làm giao diện PC to Jamma cho tủ Arcade

Tài liệu hướng dẫn này sẽ chỉ cho bạn cách tạo một lá chắn đơn giản cho Arduino DUE để giao tiếp một máy arcade chính hãng có CRT độ phân giải thấp và đầu nối jamma với PC của bạn.

Các dạng đổ chính của lá chắn là:

- để khuếch đại tín hiệu video từ card màn hình (điện áp quá thấp đối với màn hình Arcade CRT chính hãng)

- để bảo vệ màn hình CRT độ phân giải thấp của bạn khỏi các tín hiệu đồng bộ ngang tần số quá cao

- để "dịch" các lần nhấn nút trên bảng điều khiển arcade sang thứ mà PC có thể xử lý

Tôi sẽ chỉ cho bạn cách mở rộng giao diện sử dụng để điều khiển các bánh xe và con quay Arcade Racing.

Lưu ý: lá chắn KHÔNG buộc tín hiệu đồng bộ video ở tần số thấp: bạn đang cần một số phần mềm cụ thể cho việc đó. Tôi khuyên bạn nên sử dụng trình giả lập CRT hoặc Soft15KHz.

Bước 1: Phần cứng

Tôi sẽ cho rằng bạn có một trạm hàn và một số thiếc bằng tay và bạn biết cách sử dụng chúng. Vì bộ khuếch đại video là một SMD với cao độ 0,65 mm, tôi khuyên bạn nên mua một số thông lượng hàn để giúp hàn vi khuẩn đó. Tôi đã sử dụng một cây bút Rosing Mildly Activated (RMA) rẻ tiền "không sạch" với kết quả tuyệt vời.

Giao diện được tạo thành từ:

- 1x bảng vi điều khiển Arduino DUE

- 1x bộ khuếch đại video THS7374

- 1x bộ chuyển đổi TSSOP14 sang DIP14

- Bộ khuếch đại âm thanh 1x

- 1x bao ngón tay jamma

- Bảng nguyên mẫu 1x 5x7 cm, hai mặt

- 1x 1N4148 diode

- Điện trở 7x 1Kohm

- Điện trở 1x 820 ohm

- Điện trở 3x 220 ohm

- 1x dải, khoảng cách 2,54 mm

- 1x cáp VGA

- 1x cáp âm thanh

Bước 2: Sơ đồ

Sơ đồ
Sơ đồ

Đây là một sơ đồ màu của dự án wholel. Tôi hy vọng không phải quá chính thống nhưng dễ theo dõi hơn.

Các dây dễ dàng như chúng trông:

- các đường màu đến từ đầu nối VGA của PC đến bộ khuếch đại video; điện trở 1Kohm nối đất làm giảm dòng điện tới đầu vào bộ khuếch đại video. Ở phía đầu ra, một điện trở nối tiếp làm giảm dòng điện đến CRT arcade.

- Đường dây đồng bộ bằng cách nào đó "phức tạp" hơn: đồng bộ hóa riêng biệt từ VGA được thực hiện tổng hợp, đầu tiên, sau đó được hạ xuống bởi một bộ chia điện áp để tuân theo các thông số kỹ thuật của Arduino DUE (logic 3.3V). Bộ phân áp được tính toán giả sử tín hiệu đồng bộ 5V.

- bộ khuếch đại video (THS7374) có thể được cấp nguồn ở 3,3V hoặc 5V; là cấp nguồn ở 5V cho phép phạm vi điện áp / tín hiệu đầu vào rộng hơn và THS7374 có thể được điều khiển bằng 3.3V ngay cả khi được cấp nguồn ở 5V, tôi đã đi theo cách 5V.

- đất video, mặt đất arduino DUE, mặt đất THS7374 và mặt đất đầu nối jamma bị đoản mạch.

- Dòng Arduino DUE 5V và Jamma 5V KHÔNG PHẢI ĐƯỢC MẠCH NGẮN.

- KHÔNG cấp nguồn cho bộ khuếch đại âm thanh từ cáp USB: bạn cần một nguồn bên ngoài vì giới hạn hiện tại (tức là PC ATX PSU). Làm như vậy bạn sẽ làm hỏng cổng USB hoặc thậm chí cả PC của mình.

Đầu nối VGA: một lời cảnh báo

Gần đây tôi đã có cơ hội cập nhật PC được sử dụng với jammarduino DUE của mình. Ngay cả khi tôi đã thử nghiệm nó với hai PC khác nhau trước đó, cả hai đều sử dụng thẻ ATI của cùng một họ (ATI 9250 và 9550). Máy tính mới được trang bị HD5750 với một đầu ra analog DVI duy nhất (không có VGA). Điều này buộc tôi phải sử dụng bộ chuyển đổi DVI sang VGA (thụ động). Vâng, sau một số đấu tranh, tôi nhận thấy rằng cáp VGA kết nối với bộ điều hợp PHẢI chỉ có mặt đất kết nối với chân 5 của đầu nối VGA để hoạt động, không phải chân từ 6 đến 10 như được báo cáo trong hầu hết các sơ đồ trên web. Hãy ghi nhớ điều này trong trường hợp bạn không thể thấy bất kỳ tín hiệu đồng bộ nào từ thẻ video của mình.

Bước 3: Phác thảo / Mã

Phác thảo / Mã
Phác thảo / Mã

Bạn phải cài đặt Arduino IDE trước; bạn cũng phải cài đặt SAM Cortex M3 Core (không có sẵn theo mặc định). Cuối cùng nhưng không kém phần quan trọng, hãy cài đặt trình điều khiển Arduino DUE. Tham khảo hướng dẫn chính thức "Bắt đầu với Arduino Do" để biết hầu hết thông tin cập nhật.

Bản phác thảo bạn cần tải lên Arduino DUE được đính kèm ở đây. Giải nén và tải "jammarduinoDUE.ino" vào Arduino IDE của bạn, sau đó tải lên arduino DUE thông qua cổng "lập trình". Sau khi bản phác thảo được tải lên thành công, hãy ngắt kết nối cáp USB khỏi cổng "lập trình" và kết nối Arduino DUE qua cổng "USB gốc", nếu không phần đầu vào của mã sẽ không hoạt động.

Về cơ bản, Arduino DUE đo tần số đồng bộ hóa và tắt bộ khuếch đại video khi đồng bộ hóa quá cao đối với CRT độ phân giải thấp. Arduino DUE cũng xử lý các đầu vào đến từ bảng điều khiển, gửi các phím MAME mặc định khi nhấn nút cụ thể. Một chức năng thay đổi (được kích hoạt bằng cách nhấn nút BẮT ĐẦU P1) cũng được bao gồm, giống như các giao diện thương mại.

Trong bảng, sơ đồ bàn phím mặc định. Bạn có thể thay đổi bản đồ phím mặc định hoặc thêm các nút theo ý muốn trực tiếp trên bản phác thảo một cách dễ dàng.

Ví dụ: nếu bạn muốn gán các phím điều khiển âm lượng cho trình mô phỏng của mình, bạn nên xác định các phím đó (giả sử bàn phím "+" để tăng âm lượng và bàn phím "-" để giảm âm lượng) trong menu phím emu của bạn, trước tiên; sau đó thêm phím đã dịch chuyển vào các nút bạn muốn gán tăng hoặc giảm âm lượng. Giả sử tôi muốn tăng âm lượng bằng cách nhấn phím shift và nút Trình phát 1 3. Tôi sẽ sửa đổi dòng

{26, HIGH, 0, 180, 180}, // khoảng trắng - P1 B3

đến

{26, CAO, 0, 180, 223}, // khoảng trắng - P1 B3 (+)

"223" đó là mã ký tự ASCII cho bàn phím "+".

Tôi sẽ cho bạn tìm ra cách gán dấu "-" (hoặc bất cứ thứ gì bạn thích) cho hàm "giảm âm lượng" như một bài tập (Gợi ý: ASCII mã 222):)

Xin lưu ý rằng trong MAME, bạn chỉ có thể ấn định khối lượng chế độ dịch vụ, không phải khối lượng mô phỏng chung; điều này có nghĩa là nếu bo mạch mô phỏng không cho phép điều khiển âm lượng bằng phần mềm, âm lượng sẽ không bị ảnh hưởng.

Bước 4: Còn về độ trễ đầu vào?

Tôi đã thực hiện một số thử nghiệm để xem mã có thể giới thiệu độ trễ bao nhiêu; tốt, bằng cách nhấn cùng lúc 3 nút, một vòng lặp hoàn chỉnh mất khoảng 4 mili giây để được thực thi, cho đến nay chưa đến 33 mili giây, một khung hình kéo dài ở 30 FPS.

Bước 5: Còn về Tủ đua Jamma?

Còn về Tủ đua Jamma thì sao?
Còn về Tủ đua Jamma thì sao?

Bánh xe chiết áp

Nếu tủ của bạn là tủ đua, rất có thể bánh xe được sử dụng chiết áp (bạn có thể thấy chiết áp 5Kohm ở phía sau của bảng điều khiển).

Điều đầu tiên, hãy tải và cài đặt thư viện Joystick (cho đến ngày hôm nay chỉ có phiên bản 1 của thư viện được cho là tương thích với arduino DUE, nhưng nó vẫn là một thư viện rất tốt).

Sau đó, thêm một vài dòng tiếp theo vào bản phác thảo ở Bước 4 để dễ dàng xử lý bánh xe (vị trí đặt các dòng là một bài tập…)

#bao gồm

int deadZone = 0;

void setup () {

Joystick.begin ();}

void loop () {

int readPot = analogRead (A3);

int wheelPos = map (readPot, 0, 1023, -127, 127);

if (wheelPos> deadZone || wheelPos <-deadZone) {Joystick.setXAxis (wheelPos);}

else {Joystick.setXAxis (0);}

}

Như bạn có thể thấy, bạn có thể đặt deadzone nếu cần thiết (trong một bánh xe arcade hoạt động tốt, tốt nhất là đặt nó về 0).

Việc đấu dây chiết áp vào Arduino DUE rất đơn giản: chân bên của chiết áp đi tới + 3.3V và GND, chân gạt nước vào cổng tương tự arduino DUE (xem hình để tham khảo). Ở đây tôi đã xác định chân analog 3 (A3) là đầu vào cho cần gạt nước của chiết áp bánh xe, nhưng bạn có thể đặt chân analog phù hợp nhất với nhu cầu của mình.

PS: bạn có biết bàn đạp trong tủ đua thường được điều khiển bằng chiết áp, hơn nữa về mặt kỹ thuật bánh xe và bàn đạp là một thiết bị giống nhau nhưng có hình dáng khác nhau? Điều này có nghĩa là mã ở đây cũng có thể được sử dụng để điều khiển bàn đạp arcade chính hãng;)

Bánh xe quang học

Nếu bánh xe của bạn là quang học, nó cũng có thể dễ dàng được xử lý, một lần nữa, với một sửa đổi nhỏ cho bản phác thảo bắt đầu.

Sơ đồ chân rất phổ biến cho bộ mã hóa Arcade quang học (bộ quay Taito, bộ mã hóa bánh xe Atari, v.v.) là:

1. OptoA OUT

2. + 5V

3. GND

4. OptoB OUT

Kết nối 2. và 3. với Arduino DUE 5V và GND, và 1. và 4. với bất kỳ chân kỹ thuật số nào bạn thích, chú ý rằng cần có bộ chia điện áp để hạ đầu ra 5V từ bộ mã hóa quang xuống 3.3V arduino DUE có thể xử lý. Không gửi trực tiếp đầu ra OptoA và / hoặc OptoB 5V đến các chân đầu vào của arduino DUE, nếu không bạn có thể sẽ làm hỏng các đầu vào đó hoặc thậm chí toàn bộ bảng. Bạn đã được cảnh báo.

Trong bản phác thảo ví dụ ở đây, tôi sẽ sử dụng chân kỹ thuật số 2 và chân kỹ thuật số 3 làm đầu ra quang A và đầu ra quang B.

#bao gồm

boolean optA_state = CAO;

int xAxisMov = 2;

void setup () {

pinMode (2, INPUT_PULLUP); // OptA

pinMode (3, INPUT_PULLUP); // OptB

Mouse.begin ();

}

void loop () {

if (optA_state == HIGH && digitalRead (2) == LOW) {

optA_state =! optA_state;

if (digitalRead (3) == HIGH) {Mouse.move (xAxisMov, 0, 0);} else {Mouse.move (-xAxisMov, 0, 0);}}} // kết thúc vòng lặp

Đây là mã hóa quang học Đếm 1X có độ phân giải thấp. Nó là quá đủ cho các ứng dụng Arcade, nhưng bạn có thể tăng độ phân giải một cách dễ dàng bằng cách thêm một số dòng mã.

Tái bút: bạn có biết rằng bánh xe arcade quang học và máy quay arcade về mặt kỹ thuật là cùng một thiết bị với hình dạng khác nhau không? Bạn có biết rằng bi xoay về mặt kỹ thuật là một con quay 2 trục không? Điều này có nghĩa là mã ở đây có thể được sử dụng để điều khiển các máy quay trò chơi điện tử chính hãng và, với một số ít thay đổi, cũng có thể dễ dàng sửa đổi các bi xoay;)

Bước 6: Một số bức ảnh, hoặc nó không xảy ra

Một số bức ảnh, hoặc nó đã không xảy ra!
Một số bức ảnh, hoặc nó đã không xảy ra!
Một số bức ảnh, hoặc nó đã không xảy ra!
Một số bức ảnh, hoặc nó đã không xảy ra!
Một số bức ảnh, hoặc nó đã không xảy ra!
Một số bức ảnh, hoặc nó đã không xảy ra!
Một số bức ảnh, hoặc nó đã không xảy ra!
Một số bức ảnh, hoặc nó đã không xảy ra!

Đây là một số hình ảnh về chiếc khiên tôi đã làm. Nó không phải là một tác phẩm cấp cao (cá là tôi không phải dân chuyên nghiệp), nhưng nó sẽ làm rung chuyển 100% trong Tủ Arcade jamma của tôi!

Đề xuất: