Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Juego Ruleta LED DIY: Crea un Arcade para Una Persona con Arduino Nano

Componentes y suministros

LED (genérico) - 6 rojos, 2 amarillos, 1 verde × 9
Pulsador SparkFun 12mm × 1
Arduino Nano R3 × 1
Conector hembra 8 posiciones 1 fila (0.1") × 1
Conector jack DC × 1

Herramientas y máquinas necesarias

Aplicaciones y servicios online

Sobre este proyecto

Video

(Video no disponible en texto)

Resumen

Llevaba tiempo queriendo crear un juego simple y divertido que solo requiriera una persona. Es extremadamente simple, solo necesita un Arduino Nano. Es ruleta LED. El objetivo: detenerse en el LED verde, evitando rojos y amarillos. Parece fácil de jugar y hacer, y lo es.

Juego Ruleta LED DIY: Crea un Arcade para Una Persona con Arduino Nano

Paso 1

Primero diseñé el dispositivo en Fusion 360. Diseñé la placa frontal con 9 LEDs (6 rojos, 2 amarillos, 1 verde) y hueco para pulsador táctil abajo. Usé mi router CNC Millright para cortar las piezas diseñadas.

Juego Ruleta LED DIY: Crea un Arcade para Una Persona con Arduino Nano
Juego Ruleta LED DIY: Crea un Arcade para Una Persona con Arduino Nano
Juego Ruleta LED DIY: Crea un Arcade para Una Persona con Arduino Nano

Paso 2

Mecánica del juego: Una luz "se mueve" de un lado a otro entre los dos bordes y se detiene al pulsar el botón. Para reacción inmediata usé una interrupción. Cada LED corresponde a un índice en array que se recorre. El índice del LED actual tiene su propia variable. Hay un retraso entre cada paso, correspondiente a la dificultad. Al encender, el usuario selecciona dificultad pulsando botón para reducir retraso entre cambios de LED. Tras encender LED correcto, el usuario puede doble clic para confirmarlo.

Paso 3

Juego Ruleta LED DIY: Crea un Arcade para Una Persona con Arduino Nano

Usé lija para dar buen acabado y redondear piezas de contrachapado. Luego usé pegamento caliente para unir las piezas.

Conclusiones

Juego Ruleta LED DIY: Crea un Arcade para Una Persona con Arduino Nano

Ahora, cuando tengo ganas de jugar un juego simple, ya sea de viaje o para desconectar de pantallas, este dispositivo me da un respiro maravilloso. También puedo hacerlo multijugador asignando puntos a cada LED lejos del verde: quien tenga menos puntos al final gana.

Código

Código C/C++

/* Usa pines 2-10
Puedes conseguir la librería TTBOUNCE aquí: https://github.com/TOLDOTECHNIK/TTBOUNCE */
#include <TTBOUNCE.h>

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 difficulty = 0;
uint8_t current_led = 0;
bool dir_flag = true; // true = derecha, false = izquierda
bool game_ended = false;
bool is_win = false;
bool is_finished_selecting = false;

TTBOUNCE b = TTBOUNCE(button);

void doubleClick(){
  Serial.println("double click");
  is_finished_selecting = true;
  delay_time = floor(500/(difficulty+1));
  // Fórmula: delay (ms) = 500 / (difficulty + 1)
  Serial.println("difficulty: " + String(delay_time));
  sweep();
}

void click(){
  Serial.print("Click | ");
  digitalWrite(led_array[difficulty], LOW);
  difficulty++;
  if(difficulty>8){ difficulty = 0; }
  digitalWrite(led_array[difficulty], HIGH);
  Serial.println("Difficulty is: "+String(difficulty));
  delay(100);
}

void setup() {
  Serial.begin(9600);
  b.attachDoubleClick(doubleClick);
  b.attachClick(click);
  b.setActiveLow();
  b.enablePullup();
  for(int i=0;i<9;i++){
    pinMode(led_array[i], OUTPUT);
  }
  sweep();
  pulse();
  difficulty = 0;
  digitalWrite(led_array[difficulty], HIGH);
  while(!is_finished_selecting){
    b.update();
  }
  b.update();
  pinMode(button, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(button), button_pressed, FALLING);
  delay(1000);
}

void loop() {
  if(game_ended==false){
    move_led();
    delay(delay_time);
  } else if(game_ended){
    Serial.println(game_ended);
    Serial.println("Game over");
    if(is_win){
      Serial.println("you won");
      for(int i=0; i<5;i++){
        pulse();
        delay(100);
      }
    }
    sweep();
    game_ended = false;
    is_win = false;
    delay(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);
  }
  delay(100);
  for(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);
    delay(50);
    digitalWrite(led_array[i], LOW);
  }
  for(int i=8; i>=0;i--){
    digitalWrite(led_array[i], HIGH);
    delay(50);
    digitalWrite(led_array[i], LOW);
  }
}

void button_pressed(){
  Serial.println("Button pressed on 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;
  delay(500);
}

Esquemáticos

Juego Ruleta LED DIY: Crea un Arcade para Una Persona con Arduino Nano

Proceso de manufactura

  1. Construye un Juego Giroscópico en Tiempo Real con Arduino Nano y Sensor MPU-6050
  2. Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
  3. Construye tu Propio Juego de Ruleta de 37 LEDs con Arduino Nano
  4. Mando USB para juegos DIY con Arduino – Construye tu propio gamepad de alto rendimiento
  5. Construye un juego Tetris con Arduino Nano en matriz LED 16x8 DIY
  6. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  7. Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
  8. Pixel Chaser: Juego LED Interactivo de Un Toque con Arduino Nano
  9. Control de brillo LED sin interrupciones con Bolt IoT y Arduino UNO
  10. Reloj flip Arduino con matriz LED 8×8: proyecto DIY de reloj en tiempo real
  11. Mezclador de Colores RGB con Arduino – Proyecto DIY para Principiantes