Índice:

Stackers Arcade Game: 6 etapas (com imagens)
Stackers Arcade Game: 6 etapas (com imagens)

Vídeo: Stackers Arcade Game: 6 etapas (com imagens)

Vídeo: Stackers Arcade Game: 6 etapas (com imagens)
Vídeo: burger cheese (extended) 2024, Novembro
Anonim
Stackers Arcade Game
Stackers Arcade Game

Oi pessoal, hoje eu quero compartilhar com vocês este incrível jogo de arcade que você pode fazer com um monte de LEDs Ws2812b e um microcontrolador / FPGA. Behold Stack Overflow - nossa implementação de hardware de um jogo de arcade clássico. O que começou como um projeto escolar rapidamente se tornou um trabalho de amor à medida que passamos a gastar cada vez mais tempo desenvolvendo nosso jogo e aprendendo mais com ele (e negligenciando nossos estudos no processo xD). No final, nosso jogo foi tão bem construído e bem recebido por nossa escola que foi confiscado (como material de demonstração para o próximo lote de alunos). Bem, sempre podemos construir um segundo. Vamos começar!

Versão online do jogo:

Etapa 1: O que você precisa?

O que você precisa?
O que você precisa?
O que você precisa?
O que você precisa?
O que você precisa?
O que você precisa?
O que você precisa?
O que você precisa?

Materiais:

1. um Microcontrolador / Microcomputador / FPGA - O FPGA é usado para implementar a lógica do nosso jogo. Escolha sua placa, para o nosso projeto, somos obrigados a usar a placa FPGA Mojo. Para os não iniciados, é um tipo de placa que usa hardware para implementar suas funções ao invés de códigos. Portanto, eu diria que é um nível bastante baixo e completamente diferente do que se você estiver usando Arduino ou Pi. Se você usar outras placas, terá que escrever seu próprio código, mas este jogo é muito fácil de codificar e ei! Agora você também pode aprender a programar!

2. LEDs Ws2812b - Aqui estamos usando os LEDs para construir a tela do nosso jogo. Não pode ser um fabricante se você não tocou no Ws2812b antes do xD. É endereçável único, o que significa que você pode cortar LEDs únicos e colá-los em qualquer formação que desejar. E é RGB, o que significa que você pode imprimir qualquer cor que desejar. Além disso, FastLED - a biblioteca Arduino para controlar o Ws2812b é muito bem desenvolvida. Eu recomendaria que as pessoas usassem o Arduino no lugar do FPGA se você não tiver um. Você pode comprar os LEDs da Taobao / Amazon, mas compramos os nossos da torre Sim Lim em Cingapura.

3. Madeira - Para o invólucro externo usamos compensado de 1 cm de espessura e para a matriz de LED usamos compensado de 0,3 cm de espessura. Encontramos nosso suprimento de sobras de madeira do laboratório de fabricação de nossa escola.

4. Acrílico de difusão de luz - Para a nossa tela, experimentamos diferentes tipos de acrílico e encontramos este acrílico fosco chamado PL-422 que é realmente bom para difundir a luz. Se você não conseguir encontrar o modelo exato, tente procurar acrílicos foscos. Compramos o nosso na Dama Plastics em Cingapura.

5. Placa de espuma - Para separar cada pixel individual de luz, precisávamos de uma estrutura de grade e essa espuma é o material ideal para isso. Compramos placa de espuma de 0,5 cm de espessura na livraria da escola.

6. Botão vermelho grande - Ok, não é necessário que tenhamos um botão vermelho grande, mas é sempre bom ter um botão para as pessoas baterem! xD Nós o compramos na torre Sim Lim em Cingapura.

Ferramentas:

1. cola para madeira

2. Ferro de soldar

3. Solda

4. Fios. É melhor se você tiver fios macios em comparação com os mais rígidos. E um único núcleo em comparação com vários núcleos.

5. Decapador de fios

6. Cortador de fio

7. Perfure com brocas de 1 mm

8. Rolo serra

9. Serra de fita

Depuração:

1. Unidade de fonte de alimentação variável

2. Osciloscópio

Etapa 2: Prototipagem Rápida

Prototipagem Rápida
Prototipagem Rápida
Prototipagem Rápida
Prototipagem Rápida
Prototipagem Rápida
Prototipagem Rápida
Prototipagem Rápida
Prototipagem Rápida

Para nosso projeto, empregamos prototipagem rápida antes de construir nossa matriz de LED e programar nosso jogo. A razão para fazer isso é que não queremos construir a matriz de LEDs apenas para perceber que nossos códigos não funcionam ou que nossa lógica de jogo está falha de alguma forma.

No lado do hardware, no primeiro estágio, nós apenas testamos nossa lógica em mudar os padrões de luz em nossa própria matriz de LED simples. Depois de testarmos se a lógica funciona bem, cortamos tiras de 5 LEDs Ws2812b apenas para testar nossa lógica de jogo com linhas diferentes. Uma vez que isso funcione, passamos a fabricar a matriz de LED em escala real.

Também testamos diferentes amostras de acrílico com o LED antes de escolher o PL-422 como o melhor difusor de luz. E para a estrutura do separador, também testamos diferentes alturas para o LED se difundir totalmente. No final, percebemos um quadrado de 3cm * 3cm com 4cm de altura para ser o melhor para difusão. Com base neste tamanho ideal, também decidimos qual é o tamanho do compensado necessário para uma matriz de LED 5 x 11, deixando uma lacuna de 0,5 cm para a espuma entre os quadrados.

No lado do software, tentamos ser o mais modular possível - primeiro testamos se os LEDs podem ser acesos antes de prosseguir para adicionar a função shift e depois outros. Os resultados podem ser catastróficos se você não fizer isso. Aprendemos isso da maneira mais difícil ao tentar codificar todo o jogo em um grande bloco, antes de perceber que não poderíamos depurá-lo. Ai!

Etapa 3: Fazendo o revestimento

Fazendo o Invólucro
Fazendo o Invólucro
Fazendo o Invólucro
Fazendo o Invólucro
Fazendo o Invólucro
Fazendo o Invólucro
Fazendo o Invólucro
Fazendo o Invólucro

Para o nosso case, optamos por sensações e aparências clássicas de máquinas de fliperama. Primeiro, cortamos um compensado fino para criar um protótipo rápido da forma, pois é mais fácil e rápido cortar compensado fino e testá-lo. Uma vez que estávamos satisfeitos com nossas dimensões e forma, começamos a usar compensado mais espesso para construir a caixa. Usamos uma serra de fita para cortar o compensado mais grosso e uma serra circular para cortar os mais finos. Depois disso, usamos cola de madeira para colá-los.

Para a parte de trás da madeira compensada, queríamos acessar facilmente os componentes eletrônicos internos, portanto, a transformamos em uma peça de encaixe que você pode remover facilmente quando quiser.

Para colocar o botão, primeiro desenhamos um círculo do tamanho do diâmetro do microinterruptor (a parte inferior longa do botão). Em seguida, perfuramos um buraco perto da borda e usamos a serra de pergaminho para serrar um círculo. Em seguida, colocamos o botão e o aparafusamos.

Também cortamos um pedaço fino de compensado como base de nossa matriz de LED de acordo com os tamanhos que calculamos antes.

Nota: Peço desculpas pela falta de processo passo a passo. Não documentamos as etapas até o fim e, quando percebemos que precisávamos documentar as etapas, o revestimento já estava feito. O diagrama também não é as dimensões finais.

Etapa 4: Fazendo a matriz de LED

Fazendo a matriz de LED
Fazendo a matriz de LED
Fazendo a matriz de LED
Fazendo a matriz de LED

Usando a peça fina que recortamos anteriormente, primeiro marcamos a posição de cada LED desenhando um quadrado com base em nossa estrutura de espuma e desenhando uma cruz no meio do quadrado como o lugar onde devemos colocar o LED. Em seguida, também perfuramos 3 pequenos orifícios em cada lado do LED para os fios passarem e os soldamos em cada LED.

Conectamos cada linha de LED em série por meio de seus pinos de entrada e saída de dados e soldamos cada GND e VCC a um fio comum. O Data In principal irá gerar os padrões de luz para cada linha e nós o conectamos à pinagem do microcontrolador / FPGA. Você também pode soldar o último Data Out de uma linha para o Data In principal de outra linha. A maneira como o LED Ws2812b funciona é que cada LED contém um IC que pegará os dados necessários do fio e passará o resto pela cadeia. Baseamos nosso LED em outro fantástico Instructables (na verdade, nós o copiamos exatamente! XD)

Aqui, também gostaríamos de enfatizar a importância do uso de fios macios. Se você usar fios rígidos e rígidos para o pino principal de entrada de dados, o que acontece é que toda vez que você puxa o fio, ele pode arrancar o revestimento de cobre de seu Ws2812b, o que irá destruí-lo. Neste projeto, antes de mudarmos para fios macios, destruímos um total de 40 LEDs, que é 1/3 dos LEDs necessários para nosso projeto.

Instrutível:

Etapa 5: escrever os códigos do jogo e depurar o hardware

Escrevendo os códigos do jogo e o hardware de depuração
Escrevendo os códigos do jogo e o hardware de depuração
Escrevendo os códigos do jogo e o hardware de depuração
Escrevendo os códigos do jogo e o hardware de depuração
Escrevendo os códigos do jogo e o hardware de depuração
Escrevendo os códigos do jogo e o hardware de depuração

O Mojo roda em Lucid HDL, que não é a linguagem mais popular que existe. Não encontramos nenhuma biblioteca de LED Ws2812b no Lucid, portanto, recorremos a escrever nossa própria biblioteca, o que é uma experiência muito interessante. Para fazer isso, primeiro analisamos o sinal transmitido usando a biblioteca FastLED do Arduino e escrevemos códigos para replicá-lo. Aqui está um truque de depuração de hardware, o osciloscópio é muito, muito útil para analisar sinais, seja depurando seu próprio sinal que você não tem certeza ou verificando e copiando outros sinais.

Depois de escrever a biblioteca para o Ws2812b, passamos a codificar o jogo, usamos as funções de deslocamento de bits para mover cada bloco para a esquerda e para a direita e usamos AND bit a bit para AND os quadrados de cada linha para a linha anterior. Você também pode pensar em implementar isso no Arduino, o que não deve ser tão difícil. Nós até codificamos telas de jogos para se divertir!

Nosso jogo tinha 2 níveis, que é o jogo de empilhamento visível (Verde) e o jogo de empilhamento invisível de segundo nível (Azul).

Mesmo depois de termos códigos e matriz de LED funcionando, às vezes ainda enfrentamos problemas como luzes piscando ou acendendo quando não deveriam. O problema geralmente é devido ao aterramento inadequado, nível de fonte de alimentação ou interferência. É aqui que você precisará de outras ferramentas de depuração de hardware, como a unidade de fonte de alimentação variável para verificar se a fonte de alimentação do Mojo / Arduino é suficiente ou muito alta. Na minha experiência, o Ws2812b tem uma faixa bastante ampla de tensões de trabalho de 2,8 V - 5 V. Aqui eu tenho um vídeo que mostra as luzes ficando todas malucas depois que aumento a potência.

No entanto, uma verificação posterior revelou que tínhamos soldas inadequadas, após soldá-las novamente, nosso problema foi resolvido. Também pode haver um problema com interferência ou conversa cruzada, mas felizmente, nunca enfrentamos nenhum deles.

Códigos Github:

Arduino Bitwise Shift:

Arduino Bitwise AND:

Etapa 6: juntando tudo

Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo
Juntando tudo

Você tem o invólucro e a matriz de LED. Agora é hora de colocar tudo junto. Primeiro colocamos a espuma na frente e a matriz de LED atrás dela e ajustamos a posição. Como a espuma tem um atrito muito alto, ela foi montada apenas por atrito enquanto a matriz de LED é colada a quente no lugar. Depois disso, colocamos a tela na frente da grade. Em seguida, conectamos o pino de cada linha ao microcontrolador e começamos a jogar!: D

Uma coisa que gosto neste projeto é sua flexibilidade, você sempre pode reprogramar o microcontrolador para fazer parte de outro jogo e tentar algo como fazer uma animação ou um jogo de reação. Espero que gostem de fazer isso e aprendam algo para fazer isso. GgEz!

Recomendado: