Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Jogo Pixel Chaser

Componentes e suprimentos

Arduino Nano R3
× 1
Anel Adafruit NeoPixel:WS2812 5050 RGB LED
× 1
Tábua de pão sem solda meio tamanho
× 1
Resistor 10k ohm
× 1
SparkFun Botão de pressão 12 mm
× 1
Fios de jumpers (genérico)
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto




Eu costumava ser um desenvolvedor de jogos, e um dos santo grails no desenvolvimento de jogos para celular é fazer o jogo definitivo de "um toque".

Eu queria ver se eu poderia fazer um jogo incrível de "física" com um clique usando um microcontrolador, um botão e alguma forma de feedback visual.

Apresentando PIXEL CHASER!

É uma construção bastante fácil, então vamos direto ao assunto!





De que peças precisamos?


Precisamos do seguinte:
  • Arduino Nano (ou qualquer microcontrolador com 2 pinos IO disponíveis)
  • Anel ou faixa RGB "NeoPixel"
  • Botão momentâneo
  • resistor de 10k
  • placas de ensaio
  • fios





Etapa 1


Coloque o Nano em uma extremidade da placa de ensaio com o conector USB na extremidade.





Etapa 2


Coloque o botão na outra extremidade da placa de ensaio, o mais próximo possível da borda para que seja fácil de chegar.





Etapa 3


Adicione o resistor de 10k entre um dos lados do botão e o trilho GND da placa de ensaio. Este será o estado padrão BAIXO do botão. Usamos um resistor para garantir que não haja curto entre VCC e GND quando o botão é pressionado, pois isso pode danificar o microcontrolador e outros componentes.





Etapa 4


Conecte um fio de jumper do lado oposto do botão ao trilho VCC. O botão ficará alto quando for pressionado.





Etapa 5


Conecte um fio de jumper do lado GND do botão para D3 no Nano. Leremos D3 para determinar o estado do botão.





Etapa 6


Conecte a tira / anel RGB à placa de ensaio. Conecte o fio VCC ao barramento de alimentação VCC, o fio GND ao barramento de alimentação GND e o fio DI (entrada de dados) ao D4 no Nano. Estaremos controlando os pixels com D4.





Etapa 7


Conecte um jumper de fio do pino 5 V no Nano ao barramento de alimentação VCC e, em seguida, conecte um fio jumper do pino GND no Nano ao barramento de alimentação GND.





Etapa 8


Carregue o código e jogue!

Espero que tenham gostado desse projeto!

Você pode encontrar mais projetos divertidos como este no meu canal do YouTube.





Siga-me:


http://twitter.com/unexpectedmaker

https://www.facebook.com/unexpectedmaker/

https://www.instagram.com/unexpectedmaker/

https://www.patreon.com/unexpectedmaker

https://www.tindie.com/stores/seonr/

Código

  • Jogo Pixel Chaser - Código Arduino
Jogo Pixel Chaser - Código Arduino Arduino
Adicione este código no Arduino e siga as instruções de construção!
 / * ---------------------------------- ----------------------------------------- Jogo Pixel Chaser - v1.0.0 - 24 /03/2019.AUTHOR/LICENSE:Criado por Seon Rozenblum - [email protected] Licença de copyright 2016:GNU GPL v3 http://www.gnu.org/licenses/gpl-3.0.htmlLINKS:Blog:inesperadomaker.comYOUTUBE:youtube .com / c /pectedmakerDISCLAIMER:Este software é fornecido "como está", sem suporte técnico e sem garantia, expressa ou implícita, quanto à sua utilidade para qualquer finalidade. OBJETIVO:Este controlador é o software executado no Reflow Master controlador de torradeira fabricado por Unexpected MakerHISTORY:24/03/2019 v1.0.0 - Versão inicial. NOTA:Este é um trabalho em andamento ...------------------- -------------------------------------------------- ------ * /// Precisamos dessas bibliotecas instaladas a partir do gerenciador de biblioteca # include  #include "OneButton.h" // Qual GPIO é a faixa conectada a # define PIXELPIN 4 // Quantos Ne oPixels na faixa # define NUMPIXELS 24 // A qual GPIO o botão está conectado? #define BUTTON_TAP 3 // Inicialize o botão, com um botão lowOneButton padrãoTAP (BUTTON_TAP, false); // Inicialize o pixel stripAdafruit_NeoPixel pixels =Adafruit_NeoPixel (NeoPixel pixels =Adafruit_NeoPixel , PIXELPIN, NEO_GRB + NEO_KHZ800); // Um ​​monte de variáveisint playerIndex =-1; int playerIndexTrail =-1; int playerDirection =1; float nextMove =0; float currentPlayerSpeed ​​=150; contagem regressiva longa sem sinal =0; int inimigoIndex =- 1; int coinIndex =-1; int score =0; int bestScore =0; int lastScore =0; bool gameOver =false; void setup () {// torna o pino do botão um pinMode de entrada (BUTTON_TAP, INPUT); // Atribui funções de clique ao botão buttonTAP.attachClick (singleClick); buttonTAP.attachLongPressStart (longClick); // Inicialize a faixa e defina seu brilho para 20% pixels.begin (); pixels.setBrightness (20); // define uma contagem regressiva de 2 segundos antes que o jogador apareça e comece a se mover contagem regressiva =millis () + 2000;} void loop () {// A cada ciclo, precisamos marcar o estado do botão buttonTAP.tick (); // Se o jogo estiver no estado game over, saia do loop mais cedo if (gameOver) return; // Define o estado de exibição de pixel do nível // Isso define a posição do inimigo e a posição da moeda SetLevel (); // aguarde um segundo para o jogador ficar pronto if (countdown> millis ()) {pixels.show (); Retorna; } // Toda a exibição do jogador, movimento e lógica do jogo estão aqui DisplayPlayer (); // Isso envia a cor de pixel atualizada para o hardware. pixels.show ();} // Limpa o nível, definindo todos os pixels para blackvoid ClearLevel () {for (int i =0; i  =0) pixels.setPixelColor (playerIndexTrail, pixels.Color (0, 0, 0)); if (playerIndex> =0) {pixels.setPixelColor (playerIndex, pixels.Color (0, 100, 0)); playerIndexTrail =playerIndex; } // Mova o jogador em sua direção atual playerIndex + =playerDirection; // Envolva o jogador nas bordas da faixa if (playerIndex <0) playerIndex =NUMPIXELS - 1; else if (playerIndex ==NUMPIXELS) playerIndex =0; pixels.setPixelColor (playerIndex, pixels.Color (0, 255, 0)); // O jogador acertou a moeda? // Em caso afirmativo, aumente a pontuação, redefina a moeda e as posições inimigas e limpe o nível // Próximo loop o SetLevel () irá redefinir o inimigo e a moeda // A velocidade do jogador também é aumentada para cada moeda atingida se (playerIndex ==coinIndex) {inimigoIndex =-1; coinIndex =-1; pontuação ++; currentPlayerSpeed ​​=constrain (currentPlayerSpeed ​​- 10, 50, 150); ClearLevel (); pixels.setPixelColor (playerIndex, pixels.Color (0, 255, 0)); } // O jogador atingiu o inimigo? // Definir a última / melhor pontuação e cancelar o jogo else if (playerIndex ==inimigoIndex) {lastScore =score; if (pontuação> =bestScore) bestScore =pontuação; Fim de jogo(); gameOver =true; inimigoIndex =-1; coinIndex =-1; playerIndex =-1; }}} // Botão único clickvoid singleClick () {// Nenhuma entrada até que o jogador esteja visível if (countdown> millis ()) return; // muda a direção do jogador playerDirection =-playerDirection;} // Botão longo clickvoid longClick () {// Alterna o estado do jogo // Se o jogo acabou, inicia o jogo, caso contrário cancela um jogo em andamento gameOver =! gameOver; if (gameOver) {inimigoIndex =-1; coinIndex =-1; playerIndex =-1; currentPlayerSpeed ​​=150; ClearLevel (); } else {ClearLevel (); pontuação =0; currentPlayerSpeed ​​=150; contagem regressiva =milis () + 2000; }} 

Processo de manufatura

  1. Jogo Arduino Gyroscope com MPU-6050
  2. Dados digitais Arduino
  3. Jogo Arduino Pong - Tela OLED
  4. DIY 37 LED Roulette Game
  5. Controlador de jogo Arduino
  6. Jogo Arduino Touch Breakout
  7. Jogo Arduino Nano Tetris em Matriz 16x8 caseira
  8. Levitação eletromagnética repulsiva Arduino
  9. Jogo Dino automatizado usando arduino
  10. Arduino Home Controller ativado por Alexa