Mục lục:

Trò chơi xếp chồng Arcade: 6 bước (có hình ảnh)
Trò chơi xếp chồng Arcade: 6 bước (có hình ảnh)

Video: Trò chơi xếp chồng Arcade: 6 bước (có hình ảnh)

Video: Trò chơi xếp chồng Arcade: 6 bước (có hình ảnh)
Video: Tony | Cuộc Thi Ghép Tranh Siêu Tốc - Pizzle Battle 2024, Tháng bảy
Anonim
Trò chơi điện tử xếp chồng
Trò chơi điện tử xếp chồng

Xin chào các bạn, hôm nay tôi muốn chia sẻ với các bạn trò chơi arcade tuyệt vời này mà bạn có thể tạo ra với một loạt đèn LED Ws2812b và một vi điều khiển / FPGA. Kìa Stack Overflow - phần cứng của chúng tôi triển khai một trò chơi arcade cổ điển. Những gì bắt đầu như một dự án trường học nhanh chóng trở thành một công việc của tình yêu khi chúng tôi bắt đầu dành nhiều thời gian hơn để phát triển trò chơi của mình và học hỏi thêm từ nó (và bỏ bê việc học của chúng tôi trong quá trình xD). Cuối cùng, trò chơi của chúng tôi đã được xây dựng tốt và được đón nhận bởi trường học của chúng tôi đến nỗi nó đã bị tịch thu (làm tài liệu demo cho lứa học sinh tiếp theo). Chà, chúng ta luôn có thể xây dựng cái thứ hai. Bắt đầu nào!

Phiên bản trực tuyến của trò chơi:

Bước 1: Bạn cần gì?

Bạn cần gì?
Bạn cần gì?
Bạn cần gì?
Bạn cần gì?
Bạn cần gì?
Bạn cần gì?
Bạn cần gì?
Bạn cần gì?

Vật liệu:

1. Vi điều khiển / Máy vi tính / FPGA - FPGA được sử dụng để thực hiện logic của trò chơi của chúng tôi. Chọn bảng của bạn, đối với dự án của chúng tôi, chúng tôi bắt buộc phải sử dụng bảng Mojo FPGA. Đối với những người mới bắt đầu, nó là một loại bảng sử dụng phần cứng để thực hiện các chức năng của nó chứ không phải mã. Do đó, tôi sẽ nói rằng mức độ của nó khá thấp và hoàn toàn khác so với việc bạn đang sử dụng Arduino hoặc Pi. Nếu bạn sử dụng các bảng khác, bạn phải viết mã của riêng mình, nhưng trò chơi này khá dễ viết và này! Bây giờ bạn cũng có thể học viết mã!

2. Đèn LED Ws2812b - Ở đây chúng tôi đang sử dụng các đèn LED để xây dựng màn hình cho trò chơi của chúng tôi. Không thể là một nhà sản xuất nếu bạn chưa chạm vào Ws2812b trước xD. Đó là một địa chỉ duy nhất có nghĩa là bạn có thể cắt các đèn LED đơn lẻ và dán chúng vào bất kỳ hình dạng nào bạn thích. Và nó là RGB có nghĩa là bạn có thể xuất ra bất kỳ màu nào bạn thích. Hơn nữa, FastLED - thư viện Arduino để điều khiển Ws2812b được phát triển rất tốt. Tôi khuyên mọi người nên sử dụng Arduino thay cho FPGA nếu bạn chưa có. Bạn có thể mua đèn LED từ Taobao / Amazon nhưng chúng tôi đã mua đèn của chúng tôi từ tháp Sim Lim ở Singapore.

3. Gỗ - Đối với vỏ bên ngoài, chúng tôi sử dụng ván ép dày 1 cm và đối với ma trận LED chúng tôi sử dụng ván ép dày 0.3 cm. Chúng tôi tìm thấy nguồn cung cấp gỗ phế liệu từ phòng thí nghiệm fab của trường chúng tôi.

4. Acrylic khuếch tán ánh sáng - Đối với màn hình của chúng tôi, chúng tôi đã thử các loại acrylic khác nhau và chúng tôi nhận thấy loại acrylic mờ này có tên là PL-422 thực sự tốt để khuếch tán ánh sáng. Nếu bạn không thể tìm thấy mô hình chính xác, hãy thử tìm kiếm acrylics mờ. Chúng tôi đã mua của chúng tôi tại Dama Plastics ở Singapore.

5. Tấm xốp - Để tách từng pixel ánh sáng riêng lẻ, chúng tôi cần một cấu trúc lưới và tấm xốp này là vật liệu lý tưởng để làm điều đó. Chúng tôi mua bảng xốp dày 0,5cm ở hiệu sách của trường.

6. Nút lớn màu đỏ - Ok, chúng ta không cần thiết phải có một nút lớn màu đỏ như vậy nhưng luôn tốt khi có một nút để mọi người đóng sầm! xD Chúng tôi đã mua nó tại tháp Sim Lim ở Singapore.

Công cụ:

1. Keo dán gỗ

2. Sắt hàn

3. Hàn

4. Dây điện. Tốt nhất nếu bạn có dây mềm so với dây cứng hơn. Và lõi đơn so với đa lõi.

5. Dụng cụ thoát y dây

6. Máy cắt dây

7. Khoan với mũi khoan 1mm

8. Cưa cuộn

9. Cưa dây

Gỡ lỗi:

1. Đơn vị cung cấp điện biến đổi

2. Máy hiện sóng

Bước 2: Tạo mẫu nhanh

Tạo mẫu nhanh
Tạo mẫu nhanh
Tạo mẫu nhanh
Tạo mẫu nhanh
Tạo mẫu nhanh
Tạo mẫu nhanh
Tạo mẫu nhanh
Tạo mẫu nhanh

Đối với dự án của chúng tôi, chúng tôi đã sử dụng tạo mẫu nhanh trước khi xây dựng ma trận LED và lập trình trò chơi của chúng tôi. Lý do để làm như vậy là chúng tôi không muốn xây dựng ma trận LED chỉ để nhận ra rằng các mã của chúng tôi không hoạt động hoặc logic trò chơi của chúng tôi có sai sót theo một cách nào đó.

Về mặt phần cứng, ở giai đoạn đầu tiên, chúng tôi chỉ kiểm tra logic của chúng tôi về việc thay đổi các mẫu ánh sáng trên ma trận LED đơn giản của riêng chúng tôi. Khi chúng tôi đã kiểm tra rằng logic hoạt động tốt, sau đó chúng tôi đã cắt bỏ 5 dải đèn LED Ws2812b chỉ để kiểm tra logic trò chơi của chúng tôi với các hàng khác nhau. Khi điều đó thành công, chúng tôi sau đó tiến hành chế tạo ma trận LED trên quy mô đầy đủ.

Chúng tôi cũng đã thử nghiệm các mẫu acrylic khác nhau với đèn LED trước khi xác định PL-422 là bộ khuếch tán ánh sáng tốt nhất. Và đối với cấu trúc dải phân cách, chúng tôi cũng đã thử nghiệm các độ cao khác nhau để đèn LED có thể khuếch tán hoàn toàn. Cuối cùng, chúng tôi nhận ra hình vuông 3cm * 3cm với chiều cao 4cm là tốt nhất để khuếch tán. Dựa trên kích thước tối ưu này, chúng tôi cũng quyết định kích thước ván ép cần thiết cho ma trận LED 5 x 11 bằng cách để lại khoảng cách 0,5cm cho bọt giữa các ô vuông..

Về mặt phần mềm, chúng tôi cố gắng trở nên mô-đun nhất có thể - trước tiên chúng tôi kiểm tra xem các đèn LED có thể sáng lên hay không trước khi tiến hành thêm chức năng shift và sau đó là các chức năng khác. Chúng tôi đã học được điều này một cách khó khăn khi chúng tôi cố gắng mã hóa toàn bộ trò chơi thành một đoạn lớn trước khi nhận ra rằng chúng tôi không thể gỡ lỗi nó. Ầm ầm!

Bước 3: Làm vỏ bọc

Làm vỏ bọc
Làm vỏ bọc
Làm vỏ bọc
Làm vỏ bọc
Làm vỏ bọc
Làm vỏ bọc
Làm vỏ bọc
Làm vỏ bọc

Đối với vỏ của chúng tôi, chúng tôi đã sử dụng cảm giác và ngoại hình của máy arcade cổ điển. Đầu tiên, chúng tôi cắt một số ván ép mỏng để nhanh chóng tạo mẫu hình dạng vì việc cắt ván ép mỏng và kiểm tra sẽ dễ dàng và nhanh hơn. Khi chúng tôi hài lòng với kích thước và hình dạng của mình, chúng tôi bắt đầu sử dụng ván ép dày hơn để chế tạo vỏ. Chúng tôi sử dụng một chiếc cưa vòng để cắt qua tấm ván ép dày hơn và một chiếc cưa cuộn để cắt qua những tấm mỏng hơn. Sau đó, chúng ta dùng keo dán gỗ để dán chúng lại với nhau.

Đối với mặt sau của ván ép, chúng tôi muốn dễ dàng tiếp cận các thiết bị điện tử bên trong do đó chúng tôi đã làm nó thành một miếng khóa tại chỗ mà bạn có thể dễ dàng tháo ra bất cứ khi nào bạn muốn.

Để gắn nút, trước tiên chúng tôi vẽ một vòng tròn có kích thước bằng đường kính microwitch của nút (phần dài dưới cùng của nút). Sau đó, chúng tôi khoan một lỗ gần mép và sử dụng cưa cuộn để cưa một vòng tròn. Sau đó, chúng tôi đặt nút và vặn nó vào.

Chúng tôi cũng cắt một miếng ván ép mỏng làm nền cho ma trận LED của chúng tôi theo kích thước chúng tôi đã tính toán trước đó.

Lưu ý: Tôi xin lỗi vì thiếu quy trình từng bước. Chúng tôi đã không ghi lại tất cả các bước và vào thời điểm chúng tôi nhận ra rằng chúng tôi cần phải ghi lại các bước, cách viết hoa đã được thực hiện. Sơ đồ cũng không phải là kích thước cuối cùng.

Bước 4: Tạo ma trận LED

Tạo ma trận LED
Tạo ma trận LED
Tạo ma trận LED
Tạo ma trận LED

Sử dụng miếng mỏng mà chúng tôi đã cắt ra trước đó, trước tiên chúng tôi đánh dấu vị trí của mỗi đèn LED bằng cách vẽ một hình vuông dựa trên cấu trúc bọt của chúng tôi và vẽ một chữ thập ở giữa hình vuông làm nơi chúng ta nên dán đèn LED. Sau đó, chúng tôi cũng khoan 3 lỗ nhỏ trên mỗi bên của đèn LED cho các dây dẫn đi qua và hàn chúng vào mỗi đèn LED.

Chúng tôi nối từng hàng LED bằng các chân Dữ liệu vào và Đầu ra Dữ liệu của chúng và chúng tôi hàn từng GND và VCC vào một dây chung. Dữ liệu đầu vào sẽ tạo ra các mẫu ánh sáng cho mỗi hàng và chúng tôi đã kết nối nó với sơ đồ chân của bộ vi điều khiển / FPGA. Bạn cũng có thể hàn Dữ liệu cuối cùng của một hàng với Dữ liệu đầu trong của hàng khác. Cách thức hoạt động của đèn LED Ws2812b là mỗi đèn LED chứa một vi mạch sẽ lấy dữ liệu cần thiết từ dây và chuyển phần còn lại xuống chuỗi. Chúng tôi dựa trên đèn LED của chúng tôi dựa trên một tài liệu hướng dẫn tuyệt vời khác (Trên thực tế, chúng tôi đã sao chép nó một cách chính xác! XD)

Ở đây chúng tôi cũng muốn nhấn mạnh tầm quan trọng của việc sử dụng dây mềm. Nếu bạn sử dụng dây cứng và cứng cho chân Data In hàng đầu, điều sẽ xảy ra là mỗi khi bạn kéo mạnh dây, nó có thể kéo lớp đệm đồng trên Ws2812b của bạn ra và sẽ phá hủy nó. Trong dự án này, trước khi chúng tôi thay đổi sang dây mềm, chúng tôi đã phá hủy tổng cộng 40 đèn LED, bằng 1/3 số đèn LED cần thiết cho dự án của chúng tôi.

Có thể hướng dẫn:

Bước 5: Viết mã trò chơi và gỡ lỗi phần cứng

Viết mã trò chơi và gỡ lỗi phần cứng
Viết mã trò chơi và gỡ lỗi phần cứng
Viết mã trò chơi và gỡ lỗi phần cứng
Viết mã trò chơi và gỡ lỗi phần cứng
Viết mã trò chơi và gỡ lỗi phần cứng
Viết mã trò chơi và gỡ lỗi phần cứng

Mojo chạy trên Lucid HDL, đây không phải là ngôn ngữ phổ biến nhất hiện có. Chúng tôi không thể tìm thấy bất kỳ thư viện LED Ws2812b nào trong Lucid, do đó chúng tôi đã sử dụng cách viết thư viện của riêng mình, đó là một trải nghiệm rất thú vị. Để làm điều đó, trước tiên chúng tôi phân tích tín hiệu được truyền ra bằng cách sử dụng thư viện FastLED của Arduino và viết mã để tái tạo điều đó. Đây là một thủ thuật gỡ lỗi phần cứng, máy hiện sóng rất, rất hữu ích để phân tích tín hiệu, có thể là gỡ lỗi tín hiệu của chính bạn mà bạn không chắc chắn hoặc kiểm tra và sao chép các tín hiệu khác.

Sau khi viết thư viện cho Ws2812b, chúng tôi tiến hành viết mã cho trò chơi, chúng tôi sử dụng các chức năng Bit shift để di chuyển từng khối sang trái và sang phải và sử dụng Bitwise AND để VÀ các ô vuông của mỗi hàng đến hàng trước đó. Bạn cũng có thể nghĩ đến việc triển khai điều đó trong Arduino, điều này không khó lắm. Chúng tôi thậm chí còn mã hóa các màn hình trò chơi để tạo sự thú vị cho nó!

Trò chơi của chúng tôi có 2 cấp độ, đó là trò chơi xếp chồng có thể nhìn thấy (Xanh lá cây) và trò chơi xếp chồng vô hình cấp độ thứ hai (Xanh lam).

Ngay cả khi chúng tôi đã có mã hoạt động và ma trận LED hoạt động, đôi khi chúng tôi vẫn phải đối mặt với các vấn đề như đèn nhấp nháy hoặc đèn sáng lên khi chúng không nên. Sự cố thường là do nối đất không đúng, cấp nguồn hoặc nhiễu. Đây là lúc bạn sẽ cần các công cụ gỡ lỗi phần cứng khác như bộ cấp nguồn thay đổi để kiểm tra xem nguồn cung cấp của Mojo / Arduino là đủ hay quá cao. Theo kinh nghiệm của tôi, Ws2812b có dải điện áp làm việc khá rộng từ 2,8v - 5v. Ở đây tôi có một video cho thấy các đèn phát sáng sau khi tôi tăng công suất.

Tuy nhiên, kiểm tra kỹ hơn cho thấy chúng tôi có một số vật hàn không phù hợp, sau khi hàn lại chúng một lần nữa, vấn đề của chúng tôi đã được giải quyết. Cũng có thể có vấn đề với sự can thiệp hoặc nói chuyện chéo, nhưng may mắn thay, chúng tôi chưa bao giờ phải đối mặt với bất kỳ vấn đề nào trong số đó.

Mã Github:

Arduino Bitwise Shift:

Arduino Bitwise VÀ:

Bước 6: Kết hợp mọi thứ lại với nhau

Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau
Kết hợp mọi thứ lại với nhau

Bạn có vỏ và ma trận LED. Bây giờ là lúc để kết hợp mọi thứ lại với nhau. Đầu tiên, chúng tôi đặt miếng bọt ở phía trước và ma trận LED phía sau nó và điều chỉnh vị trí. Bởi vì bọt có ma sát rất cao, nó chỉ được gắn ma sát trong khi ma trận LED được dán nóng tại chỗ. Sau đó, chúng tôi đặt màn hình ở phía trước của lưới. Sau đó, chúng tôi cắm chân của mỗi hàng vào bộ vi điều khiển và bắt đầu chơi!:NS

Một điều tôi thích ở dự án này là tính linh hoạt của nó, bạn luôn có thể lập trình lại bộ vi điều khiển để trở thành một phần của một trò chơi khác và thử một cái gì đó chẳng hạn như làm hoạt hình hoặc trò chơi phản ứng. Hy vọng các bạn thích làm món này và học được điều gì đó để làm món này. GgEz!

Đề xuất: