Arduino Project #10:
Buzz Wire Game With 7 Segment LED timer with Arduino UNO
Buzz Wire with Score Counter
After playing around with Arduino just to pass time for a while, I decided to make an enhanced version of the good old buzz wire game that counts your failures and goes nuts if you hit the wire 10 times!
The good old buzz wire game, this time with score counter (as well as indicator lights).
Things used in this project
Hardware components
Arduino Nano R3
× 1
Buzzer
× 1
5 mm LED: Red
× 1
5 mm LED: Green
× 1
Texas Instruments Shift Register- Serial to Parallel
× 1
7 Segment LED Display, Red
× 1
Resistor 221 ohm
× 10
9V battery (generic)
× 1
Hand tools and fabrication machines
Drill, Screwdriver
Soldering iron (generic)
Here is a video of myself sucking at my own game:
Schematics
Code:
int latchPin = 3; // ST_CP [RCK] on 74HC595
int clockPin = 4; // SH_CP [SCK] on 74HC595
int dataPin = 2; // DS [S1] on 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);
}
}
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);
}
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);
}
}
No comments:
Post a Comment