Christoph Holler
Published © GPL3+

Fastest hit wins

Who hits the target first wins and the respective LED will light up. Hits only count once the traffic lights turn to green.

IntermediateShowcase (no instructions)2 hours127
Fastest hit wins

Things used in this project

Hardware components

Resistor 1k ohm
Resistor 1k ohm
×2
Arduino UNO
Arduino UNO
×1
5 mm LED: Red
5 mm LED: Red
×4
LED Traffic lights
×1
Wood leftovers
×1
Piezo Sensor
ControlEverything.com Piezo Sensor
×2
Metal target
×2

Story

Read more

Schematics

Scheme

This is the scheme

Code

Arduino File

Arduino
Here comes the code
const boolean inputMode = HIGH; //define input mode for the sensor reading
const int LED1 = 8; //define LED 1 on pin8
const int LED2 = 9; //define LED 2 on pin 9
const int AMPR = 5; //define traffic light red on pin 5
const int AMPY = 6; //define traffic light yellow on pin 6
const int AMPG = 7; //define traffic light green on pin 7
const int SWI1 = A0; //define sensor SWI1 on analog pin 0
const int SWI2 = A1; //define sensor SWI2 on analog pin 1
const int THR1 = 10; //define threshold for sensor 1
const int THR2 = 10; //define threshold for sensor 2

int sensorReading1 = 0; //set sensor reading 1 to 0
int sensorReading2 = 0;  //set sensor reading 2 to 0
 
void setup() { //make the setup
  Serial.begin(9600);
  pinMode(LED1, OUTPUT); //define LED1 as output
  pinMode(LED2, OUTPUT); //define LED2 as output
  pinMode(AMPR, OUTPUT); //define traffic light red as output
  pinMode(AMPY, OUTPUT); //define traffic light yellow as output
  pinMode(AMPG, OUTPUT); // define traffic light green as output
  pinMode(SWI1, INPUT);  //define switch 1 as input
  pinMode(SWI2, INPUT); //define switch 2 as input
  delay(1000); //wait for 1 sec
}

void loop() //Game
{
  randomSeed(millis());
  digitalWrite(AMPR, HIGH); //switch on red traffic light
  digitalWrite(AMPG, LOW); //switch off green traffic light
  digitalWrite(AMPY, LOW);  //switch off yellow traffic light
  delay(1000); //wait 1 second
  digitalWrite(AMPR, LOW); //switch off red traffic light
  digitalWrite(AMPY, HIGH); //switch on yellow traffic light (green is anyway off)
  delay(1000);
  digitalWrite(AMPY, LOW); //switch off yellow traffic light
  delay(random(2000)+4000); //wait for 2 seconds plus 0 to 4 seconds (so min 2, max 6 seconds)
  digitalWrite(AMPG, HIGH); //afterwards switch on green traffic light
  int i=0;
  while (i < 1)
    {
      sensorReading1 = analogRead(SWI1); //read out sensor 1
      sensorReading2 = analogRead(SWI2); //read out sensor 2
      if (sensorReading1 >= THR1) { //check if sensor 1 reading is above threshold, if so
        Serial.println(sensorReading1); //print result of sensorreading 1 in serial monitor
        Serial.println(sensorReading2); //and print result of sensorreading 2 in serial monitor 
        digitalWrite(LED1, HIGH); //switch on LED 1 in order to show that player 1 is the winner
        digitalWrite(AMPG, LOW); //switch off green light
        delay(5000); // wait for 5 seconds
        digitalWrite(LED1, LOW); //switch off LED 1
        break; //end the while
      }
      if (sensorReading2 >= THR2) { //check if sensor 2 reading is above threshold, if so
        Serial.println(sensorReading1); //print result of sensorrading 1 in serial monitor
        Serial.println(sensorReading2); //and print result of sensorreading 2 in serial monitor
        digitalWrite(LED2, HIGH); //switch on LED 2 in order show that player 2 is the winner
        digitalWrite(AMPG, LOW); //switch off green traffic light
        delay(5000); //wait for 5 secs
        digitalWrite(LED2, LOW); //switch off LED 2
        break; //end the while 
      }
    }
delay(2000); //wait for 2 secs
}

Credits

Christoph Holler
1 project • 0 followers
Contact

Comments

Please log in or sign up to comment.