Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Verbeterde Buzz Wire Game met Ingebouwde Score-teller – Arduino Nano Project

Onderdelen en benodigdheden

Arduino Nano R3 × 1
Buzzer × 1
5mm LED: Rood × 1
5mm LED: Groen × 1
Texas Instruments Shift Register - Serieel naar Parallel (74HC595) × 1
7-segment LED-display, Rood × 1
Weerstand 221 ohm × 10
9V-batterij (standaard) × 1

Nodige tools en machines

Boormachine, Schroevendraaier
Solderbout (standaard)

Over dit project

Na een tijdje met Arduino te hebben geëxperimenteerd om de tijd te doden, besloot ik een verbeterde versie van de klassieke "buzz wire" game te maken die je fouten telt en helt als je 10 keer de draad raakt!

Hier is een video van mezelf die slecht presteert in mijn eigen spel:

De broncode is verdeeld over drie bestanden.

In de code is een "genadeperiode" van 500ms ingesteld na elke fout. Je kunt dit aanpassen om de speler een grotere pauze te geven na elke buzz.

Ook iets wat ik aan het einde opviel: de LEDs zijn een beetje te fel! Voel je vrij om de twee weerstanden die op ze zitten te vervangen door sterkere. De mijne zijn slechts ongeveer 100 ohm.

Voor de ring heb ik het uiteinde van een sleutelhanger gebruikt. Het goede daran is dat je het kunt openen en niet hoeft terug te navigeren over de hele draad.

Ik hoop dat je mijn project leuk vindt!

Code

  • nervous_meter_score.ino
  • score_display.ino
  • game.ino
nervous_meter_score.inoArduino
int latchPin = 3; // ST_CP [RCK] op 74HC595
int clockPin = 4; // SH_CP [SCK] op 74HC595
int dataPin = 2;  // DS [S1] op 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.inoArduino
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.inoArduino
void gameInitialSetup() {
  pinMode(STOP_LED, OUTPUT);
  pinMode(GO_LED, OUTPUT);
  pinMode(BUZZ, OUTPUT);
  pinMode(TOUCH, HIGH);
  digitalWrite(TOUCH, LOW);
}

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);
  }
}

Schema's

Houd er rekening mee dat D10 verbonden met 5V een fout zal constituteren, wat de buzzer doet piepen en de teller oploopt. In het schema was er geen manier om dit weer te geven.
Bouw dus je draden en structuur dienovereenkomstig :)

Verbeterde Buzz Wire Game met Ingebouwde Score-teller – Arduino Nano Project

Productieproces

  1. De Kunst en Vakmanschap van Tiara's: Geschiedenis, Materialen en Modern Ontwerp
  2. Prikkeldraad Uitgelegd: Geschiedenis, Constructie en Modern Gebruik
  3. Arduino Nano Flight Simulator 2020 Bedieningspaneel – LCD & CDI Display
  4. Arduino-gebaseerd schakelaar- & LED-paneel voor Microsoft Flight Simulator 2020
  5. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  6. Geluidsgeactiveerd 8-LED Lichtdisplay met Arduino
  7. MOSMusic Project Kit: MOSFET, Arduino en meer
  8. Draadinvoeging beheersen in E3.series met E3.cable
  9. Pionerende Wire EDM-oplossingen voor complexe vorm- en matrijsproductie
  10. Reageert tungsten draadgaas met lucht? Een technisch overzicht
  11. Python Counter in collections – Efficiënt tellen, updaten en rekenkundige operaties