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 del Hilo Eléctrico Mejorado con Contador de Puntos – Arduino Nano

Componentes y Suministros

Componente Cantidad
Arduino Nano R3 1
Zumbador (Buzzer) 1
LED Rojo 5mm 1
LED Verde 5mm 1
Registro Desplazamiento 74HC595 (Serial a Paralelo) 1
Display 7 Segmentos Rojo 1
Resistencias 221 Ω 10
Batería 9V 1

Herramientas Necesarias

Sobre el Proyecto

Tras jugar con Arduino un tiempo, decidí hacer una versión mejorada del clásico "juego del hilo eléctrico" (buzz wire) que cuenta tus fallos y se vuelve loco si tocas el hilo 10 veces.

Código dividido en 3 archivos: nervous_meter_score.ino, score_display.ino, game.ino

En el código hay un "periodo de gracia" de 500ms tras cada fallo. Puedes modificarlo para dar más tregua al jugador.

Los LEDs son bastante brillantes. Siéntete libre de cambiar las resistencias (uso ~100Ω) por valores mayores.

Para el anillo usé el extremo de un llavero: ventaja, se abre y no tienes que volver por todo el hilo.

Código

nervous_meter_score.ino (Lógica Principal)
int latchPin = 3;  // ST_CP [RCK] 74HC595
int clockPin = 4;  // SH_CP [SCK] 74HC595
int dataPin = 2;   // DS [S1] 74HC595

const int STOP_LED = 6;
const int GO_LED = 7;
const int BUZZ = 8;
const int TOUCH = 10;
const int fail_threshold = 9;

enum Status { STOP = 0, GO = 1 };

void setup() {
  Serial.begin(9600);
  displayInitialSetup();
  gameInitialSetup();
}

Status status = GO;
int failCounter = 0;

void loop() {
  while (failCounter > fail_threshold) {
    gameover();
  }
  
  switch (status) {
    case GO:
      digitalWrite(GO_LED, HIGH);
      digitalWrite(STOP_LED, LOW);
      digitalWrite(BUZZ, LOW);
      if (digitalRead(TOUCH) == HIGH) status = STOP;
      break;
      
    case STOP:
      digitalWrite(GO_LED, LOW);
      failCounter++;
      if (failCounter > fail_threshold) break;
      displayDigit(failCounter);
      Serial.println(failCounter);
      failAlarm();
      status = GO;
      break;
  }
}

byte seg_spin[6] = { B10000000, B01000000, B00100000, B00010000, B00001000, B00000100 };

void gameover() {
  for (int i = 0; i < 6; i++) {
    digitalWrite(BUZZ, HIGH); delay(5);
    digitalWrite(BUZZ, LOW); delay(50);
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, seg_spin[i]);
    digitalWrite(latchPin, HIGH);
    delay(10);
  }
}
score_display.ino (Display 7 Segmentos)
byte seg_digits[10] = {
  B11111100, // 0
  B01100000, // 1
  B11011010, // 2
  B11110010, // 3
  B01100110, // 4
  B10110110, // 5
  B10111110, // 6
  B11100000, // 7
  B11111110, // 8
  B11100110  // 9
};

void displayDigit(int x) {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, LSBFIRST, seg_digits[x]);
  digitalWrite(latchPin, HIGH);
}

void displayInitialSetup() {
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  displayDigit(0);
}
game.ino (Lógica Juego)
void gameInitialSetup() {
  pinMode(STOP_LED, OUTPUT);
  pinMode(GO_LED, OUTPUT);
  pinMode(BUZZ, OUTPUT);
  pinMode(TOUCH, INPUT_PULLUP); // Pull-up interno
}

void failAlarm() {
  digitalWrite(STOP_LED, HIGH);
  beep();
  delay(150);
  digitalWrite(STOP_LED, LOW);
  digitalWrite(BUZZ, LOW);
  delay(500);
}

void beep() {
  for(int i = 0; i < 3; i++) {
    digitalWrite(BUZZ, HIGH); delay(50);
    digitalWrite(BUZZ, LOW); delay(50);
  }
}

Esquemático

Ten en cuenta que D10 conectado a 5V constituye un fallo (pitido + contador). En el esquemático no se mostraba así. Construye tu estructura y cableado accordingly.

Proceso de manufactura

  1. El arte y oficio de las tiaras: historia, materiales y diseño moderno
  2. Alambre de Espino: Historia, Construcción y Usos Modernos
  3. Panel de control para Flight Simulator 2020 con Arduino Nano: Pantallas LCD y CDI
  4. Panel de interruptores y LEDs para Microsoft Flight Simulator 2020 con Arduino
  5. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  6. Pantalla de 8 LED activada por sonido con Arduino
  7. Kit MOSMusic: Control de Iluminación de Alta Potencia Sincronizada con Música vía MOSFET y Arduino
  8. Domine la inserción de cables en proyectos eléctricos E3.series con E3.cable
  9. Soluciones pioneras de electroerosión por hilo para producción compleja de moldes y matrices
  10. ¿Reacciona la Malla de Alambre de Tungsteno con el Aire? Una Visión Técnica
  11. Counter de collections en Python: conteo eficiente, actualización y operaciones aritméticas