Mục lục:

Bảng điều khiển Arduino VGA với 5 trò chơi: 4 bước
Bảng điều khiển Arduino VGA với 5 trò chơi: 4 bước

Video: Bảng điều khiển Arduino VGA với 5 trò chơi: 4 bước

Video: Bảng điều khiển Arduino VGA với 5 trò chơi: 4 bước
Video: Tự học Arduino bài 4: Điều khiển LED Matrix 2024, Tháng bảy
Anonim
Image
Image
Bảng điều khiển Arduino VGA với năm trò chơi
Bảng điều khiển Arduino VGA với năm trò chơi
Bảng điều khiển Arduino VGA với năm trò chơi
Bảng điều khiển Arduino VGA với năm trò chơi

Trong Tài liệu hướng dẫn trước đây của tôi, tôi đã tái tạo các phiên bản đơn giản hóa của một số trò chơi arcade cổ điển phổ biến nhất, bằng Arduino trần và một số thành phần khác. Sau đó, tôi đã ghép năm người trong số họ lại với nhau trong một bản phác thảo. Ở đây tôi sẽ chỉ cho bạn cách bạn có thể xây dựng một bảng điều khiển đơn giản có thể chơi Pong, Breakout, Bomber, Tetris và một đồ chơi vẽ lấy cảm hứng từ Etch-a-Sketch. Bảng điều khiển này cũng có thể được sử dụng để chơi Snake, và hai trò chơi khác do các tác giả khác viết: Bit Ninja của Sandro Maffiodo hay còn gọi là "Smaffer" và Stacker của Nikita Kurylev.

Tính năng chính là tạo ra tín hiệu VGA, nhờ vào thư viện VGAx, do đó bàn điều khiển cần có màn hình VGA. Mục tiêu của tôi, như thường lệ, là tránh bất kỳ "thành phần đặc biệt" nào để xây dựng nó, khi đó bạn không cần bất kỳ vi mạch hoặc lá chắn hỗ trợ nào! Các thành phần duy nhất là hai chiết áp, năm nút, một vài điện trở và một đầu nối DSUB15 (VGA). Một loa piezo là tùy chọn. Bạn có thể xem các trò chơi này trông như thế nào trong các hình ảnh trong trang này.

Thư viện VGAx cho phép sử dụng bốn màu với độ phân giải 120 x 60 pixel, không nhiều nhưng đủ cho máy chơi game retro này. Đồ họa là thô nhưng, nhờ sử dụng chiết áp, trò chơi chạy mượt mà. Hiệu ứng âm thanh đơn giản cũng có sẵn.

Bước 1: Cách xây dựng bảng điều khiển VGA Arduino của riêng bạn

Cách xây dựng bảng điều khiển VGA Arduino của riêng bạn
Cách xây dựng bảng điều khiển VGA Arduino của riêng bạn
Cách xây dựng bảng điều khiển VGA Arduino của riêng bạn
Cách xây dựng bảng điều khiển VGA Arduino của riêng bạn

Trước tiên, hãy tải xuống mã ArduinoVGAgame.ino và / hoặc Snake.ino ở cuối trang này và sao chép chúng vào PC của bạn trong một thư mục có cùng tên. Tải xuống thư viện VGAx từ liên kết này trên GitHub. Cách dễ nhất là sao chép nó trong thư mục con của phần mềm Arduino có tên là "thư viện", để được nhận ra ngay lập tức.

QUAN TRỌNG: thư viện này hoạt động cho Arduno IDE 1.6.4 nhưng nó không hoàn toàn tương thích với các phiên bản cũ hơn hoặc mới hơn.

Tải lên mã trong bảng Arduino của bạn (Tôi đã thử nghiệm cả Uno và Nano). Một cảnh báo cho bộ nhớ khả dụng thấp là bình thường. Nếu bạn không gặp các lỗi khác, mọi thứ đều ổn và bạn có thể bắt đầu ngay lập tức xây dựng bảng điều khiển của riêng mình.

Đối với điều này, bạn cần:

  • Arduino Uno Rev. 3 hoặc Arduino Nano 3.x (ATmega328)
  • Đầu nối DSUB15, tức là đầu nối VGA cái hoặc cáp VGA bị cắt.
  • điện trở: 2 x 68 Ohm và 2 x 470 Ohm và 5 x 1 đến 2 kOhm
  • hai chiết áp tuyến tính 10 kOhm (các giá trị tương tự cũng tốt)
  • năm nút
  • một số đoạn cáp
  • một hoặc hai hộp đẹp để đặt tất cả các thành phần.

Thuận tiện:

  • một breadboard hoặc một bảng dải
  • loa piezo

Sơ đồ được báo cáo ở đầu bước này, cùng với một ví dụ về “bảng điều khiển” đã hoàn thành.

sơ đồ cho thấy cách kết nối một nút và một chiết áp. Cụ thể hơn, bạn cần kết nối năm nút với các chân 5, 10, 11, 12 và 13 tương ứng. Hành động được thực hiện bởi mỗi nút được mô tả trong bảng phía trên bên phải trong giản đồ. Ở bên trái, nó được hiển thị cách kết nối một chiết áp (bạn cần hai chiết áp vào chân A1 và A2). Loa phải được kết nối với chân analog A0.

Tôi đã đặt bảng Arduino với đầu nối VGA trong một hộp gỗ, nơi chứa chiết áp đầu tiên và bốn nút, trong khi chiết áp của người chơi thứ hai và nút khởi động của nó nằm trong một hộp riêng biệt và nhỏ hơn.

Nếu bạn thích món đồ chơi này và bạn quyết định tái sản xuất nó, tôi đánh giá cao nếu bạn viết bình luận hoặc gửi hình ảnh trong phần bình luận bên dưới.

Bước 2: Trò chơi từ các tác giả khác

Sandro Maffiodo gần đây đã phát hành trò chơi BitNinja. Bạn có thể tìm thêm thông tin tại đây và tải xuống mã tại đây.

Để sử dụng bảng điều khiển của tôi, bạn chỉ cần sửa lại nút trong mã của anh ấy như sau:

#define BTN_UP 11 (thay vì 13)

#define BTN_LEFT 10 (thay vì 12)

#define BTN_RIGHT 12 (thay vì 11)

Stacker, từ Nikita Kurylev, có sẵn tại đây. Thông tin thêm tại đây.

Một lần nữa, bạn phải sửa lại một nút, trong phần khác của mã: chỉ cần thay thế digitalRead (2) bằng digitalRead (13)

Bước 3: Phụ lục 1: Thêm chi tiết về cách tạo bộ điều khiển

Phụ lục 1: Thêm chi tiết về cách tạo bộ điều khiển
Phụ lục 1: Thêm chi tiết về cách tạo bộ điều khiển
Phụ lục 1: Thêm chi tiết về cách tạo bộ điều khiển
Phụ lục 1: Thêm chi tiết về cách tạo bộ điều khiển
Phụ lục 1: Thêm chi tiết về cách tạo bộ điều khiển
Phụ lục 1: Thêm chi tiết về cách tạo bộ điều khiển
Phụ lục 1: Thêm chi tiết về cách tạo bộ điều khiển
Phụ lục 1: Thêm chi tiết về cách tạo bộ điều khiển

Bạn có thể nhận ra bộ điều khiển theo nhiều cách khác nhau, tùy thuộc vào vật liệu có sẵn và sở thích của bạn.

Tôi thích nhận ra chúng bằng hộp gỗ (xem các hình ảnh trong trang này). Một hộp chính cho Arduino, đầu nối VGA và các nút trình phát đầu tiên và máy đo điện tử; một cái thứ hai (nhỏ hơn) chỉ dành cho nút và bánh xe của trình phát thứ hai (cần cho Pong và đồ chơi vẽ). Một khả năng khác là đặt mọi thứ trong một hộp lớn hơn.

Đầu tiên tôi reccomand để kết nối cổng VGA. Trong hình đầu tiên và thứ hai, bạn có thể thấy một số chi tiết: lưu ý hai điện trở 470 Ohm cho Đỏ và Xanh lá cây được kết nối tương ứng với chân 6 và 7, và hai 68 Ohm vào chân 3 và 9 cho tín hiệu đồng bộ ngang và dọc.

Bạn có thể chọn các kết hợp màu sắc khác nhau tùy thuộc vào các chân cắm mà bạn kết nối trên đầu nối VGA DSUB15, các chân 1, 2 và 3 lần lượt đại diện cho Đỏ, Xanh lá cây, Xanh lam (RGB). Tôi đã kết nối các chân 1 và 2, do đó tôi có sự kết hợp màu sau: (0, 0) = black; (1, 0) = đỏ; (0, 1) = xanh lục; (1, 1) = màu vàng.

Đối với tất cả các khả năng khác nhau, tôi khuyên bạn nên đọc chi tiết trong trang nơi bạn tải xuống các thư viện VGAx.

Ngay sau khi đầu nối VGA đã sẵn sàng, bạn có thể chuẩn bị tất cả các loại cáp khác cho các nút, bánh xe và loa (xem hình 2).

Bây giờ chỉ cần đặt mọi thứ lại với nhau: hãy nhớ rằng mỗi chân nút cần được kết nối với đất thông qua một điện trở 1 hoặc 2 kOhm, nếu không khi nút đang mở, trạng thái của chân có thể không được xác định. Điều này có nghĩa là nếu chân cắm trái bị ngắt kết nối, bạn có thể có một điện áp ngẫu nhiên (tĩnh) trên đó có thể kích hoạt nó. Xem để biết thêm chi tiết về sơ đồ trong bước thứ hai của hướng dẫn này.

Bước cuối cùng là sửa chữa mọi thứ tại chỗ. Tôi đã sử dụng súng bắn keo nóng, nhưng bạn có thể sử dụng phương pháp ưa thích của mình.

Bước 4: Phụ lục 2: Một số lưu ý về giới hạn bộ nhớ

Thật tuyệt vời khi một Arduino đơn giản lại có thể tạo ra tín hiệu VGA và tất cả các trò chơi này cùng nhau. Cổ chai thực sự là thiếu SRAM. Bộ vi điều khiển AVR chỉ có sẵn 2048 byte để lưu trữ và thao tác các biến, và thư viện VGAx lưu trữ các biến màn hình trong bộ đệm khung 120x60 pixel trong đó mỗi pixel cần 2 bit (4 màu), tổng cộng là 1800 byte. Điều này có nghĩa là chỉ còn lại 248 byte cho các biến phác thảo. Hơn nữa, theo kinh nghiệm của tôi, người ta nên để trống ít nhất 100 byte để tránh sự bất ổn. Sử dụng trên 1950 byte bộ nhớ động, bộ vi điều khiển bắt đầu thể hiện những hành vi kỳ lạ và không thể đoán trước được.

Điều này có nghĩa là tất cả các biến phải được chia sẻ giữa các trò chơi khác nhau và điều này làm cho mã khá khó đọc và khó gỡ lỗi. Nó không chỉ là một vấn đề để "thêm một trò chơi mới" vào bản phác thảo trước đó, mà tất cả các mã phải được sửa đổi sâu và tối ưu hóa.

Hơn nữa, tôi phải sử dụng định dạng biến tối thiểu có thể có: ví dụ: đối với tất cả các tọa độ, tôi phải sử dụng "byte" thay vì "int" hoặc, trong các trường hợp khác, tôi phải thích "int" thay vì "float".

Cuối cùng, kiến thức của tôi thuộc về Sandro Maffiodo hay còn gọi là Smaffer, người tạo ra thư viện VGAx và trò chơi tuyệt vời BitNinja. Nếu không có thư viện này, dự án này đã không thể thành hiện thực.

Cũng xin cảm ơn Nikita Kurylev về trò chơi Stacker đơn giản nhưng vui nhộn.

Đề xuất: