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 de roleta LED

Componentes e suprimentos

LED (genérico)
6 vermelhos, 2 amarelos, 1 verde
× 9
SparkFun Botão de pressão 12 mm
× 1
Arduino Nano R3
× 1
Cabeçalho feminino 8 posição 1 linha (0,1 ")
× 1
DC Barrel Jack
× 1

Ferramentas e máquinas necessárias

Roteador CNC

Aplicativos e serviços online

Arduino IDE

Sobre este projeto





Vídeo:





Visão geral


Há um bom tempo, desejo criar um jogo simples, mas divertido, que requer apenas uma pessoa para jogar. É extremamente simples, bastando apenas um Arduino Nano para executá-lo. É roleta de LED. O objetivo do jogo é parar no LED verde, evitando o vermelho e o amarelo. Parece fácil de jogar e fazer, e é.





Etapa 1


Primeiro, comecei projetando o dispositivo no Fusion 360. Projetei a placa frontal para conter 9 LEDs, 6 vermelhos, 2 amarelos e 1 verde. Também criei um espaço para uma troca de tato na parte inferior. Usei então a minha fresadora CNC Millright para cortar as peças que desenhei.





Etapa 2


A mecânica do jogo é a seguinte:uma luz "se moverá" para frente e para trás entre as duas bordas e irá parar sempre que houver um pressionamento de botão. Para que ele reagisse imediatamente, usei uma interrupção. Cada LED corresponde a um índice em uma matriz que é alternada. o índice atual do LED também obtém sua própria variável. Também existe um atraso entre cada etapa, correspondendo à dificuldade. Na inicialização, o usuário seleciona a dificuldade pressionando o botão para reduzir o atraso entre cada mudança do LED. Depois que o LED correto acender, o usuário pode clicar duas vezes para travá-lo.





Etapa 3


Usei uma lixa para dar um bom acabamento e arredondamento às peças de compensado. Depois disso, usei cola quente para prender as peças.





Conlusões


Agora, sempre que estou com vontade de jogar um jogo simples, seja para a estrada ou apenas para fugir da tela, este dispositivo me dá um alívio maravilhoso. Também posso torná-lo multiplayer fazendo com que cada LED afastado do verde uma certa quantidade de pontos, fazendo com que a pessoa que obtiver a menor quantidade de pontos no final vença.

Código

  • Código
Código C / C ++
 / * Use os pinos 2-10Você pode obter a biblioteca TTBOUNCE aqui:https://github.com/TOLDOTECHNIK/TTBOUNCE*/#include  int delay_time =0; const uint8_t led_array [9] ={ 4,3,5,6,7,8,9,10,11}; const uint8_t button =2; uint8_t dificuldade =0; uint8_t current_led =0; bool dir_flag =true; // verdadeiro vai para a direita, falso vai para a esquerdabool game_ended =false; bool is_win =false; bool is_finished_selecting =false; TTBOUNCE b =TTBOUNCE (botão); void doubleClick () {Serial.println ("duplo clique"); is_finished_selecting =true; delay_time =floor (500 / (dificuldade + 1)); // Fórmula:atraso (em ms) =500 / (dificuldade + 1) Serial.println ("dificuldade:" + String (atraso_time)); sweep ();} void click () {Serial.print ("Click |"); digitalWrite (led_array [dificuldade], BAIXO); dificuldade ++; if (dificuldade> 8) {dificuldade =0; } digitalWrite (led_array [dificuldade], HIGH); Serial.println ("A dificuldade é:" + String (dificuldade)); atraso (100);} configuração vazia () {Serial.begin (9600); b.attachDoubleClick (doubleClick); b.attachClick (clique); b.setActiveLow (); b.enablePullup (); para (int i =0; i <9; i ++) {pinMode (led_array [i], OUTPUT); } varrer(); pulso(); dificuldade =0; digitalWrite (led_array [dificuldade], HIGH); while (! is_finished_selecting) {b.update (); } b.update (); pinMode (botão, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (botão), button_pressed, FALLING); delay (1000);} void loop () {if (game_ended ==false) {move_led (); atraso (atraso_tempo); } else if (game_ended) {Serial.println (game_ended); Serial.println ("Fim do jogo"); if (is_win) {Serial.println ("você ganhou"); para (int i =0; i <5; i ++) {pulse (); atraso (100); } } varrer(); game_ended =false; is_win =false; atraso (2000); }} void move_led () {digitalWrite (led_array [current_led], LOW); if (current_led ==8) {dir_flag =false; current_led - =1; } else if (current_led ==0) {dir_flag =true; current_led + =1; } else if (dir_flag) {current_led + =1; } else if (! dir_flag) {current_led - =1; } digitalWrite (led_array [current_led], HIGH);} void pulse () {for (int i =0; i <9; i ++) {digitalWrite (led_array [i], HIGH); } atraso (100); para (int i =0; i <9; i ++) {digitalWrite (led_array [i], LOW); }} void sweep () {for (int i =0; i <9; i ++) {digitalWrite (led_array [i], HIGH); atraso (50); digitalWrite (led_array [i], LOW); } para (int i =8; i> =0; i -) {digitalWrite (led_array [i], HIGH); atraso (50); digitalWrite (led_array [i], LOW); }} void button_pressed () {Serial.println ("Botão pressionado no LED:" + String (current_led)); game_ended =true; if (current_led ==4) {is_win =true; } else if (current_led! =4) {is_win =false; } current_led =0; atraso (500);} 

Esquemas


Processo de manufatura

  1. Jogo Arduino Gyroscope com MPU-6050
  2. Dados digitais Arduino
  3. DIY 37 LED Roulette Game
  4. Controlador de jogo Arduino
  5. Jogo Arduino Nano Tetris em Matriz 16x8 caseira
  6. Arduino com Bluetooth para controlar um LED!
  7. Arduino Quadruped
  8. Jogo Pixel Chaser
  9. Controle de brilho do LED usando Bolt e Arduino
  10. Relógio giratório Arduino de matriz de LED único