// Et reaksjonsspill på Arduino
// Laget av Olympia Circuits
int redLED = 10; //RGB-rød
int greenLED = 9; //RGB-grønn
int buzzerPin = 11;
int LED1 = 6; //Spiller 1 - LED
int LED2 = 7; //Spiller 2 - LED
int SW1 = 3; //Spiller 1 - knapp
int SW2 = 4; //Spiller 2 - knapp
int winner = 0; //Initialiserer vinnerindikatoren
int winnerBeep = 750; //Buzzer-pitchen for vinnerfanfaren
int fault = 0; //Initialiserer feilindikatoren
int faultBeep = 200; //Buzzer-pitchen for feillyden
unsigned long wait = 0;
unsigned long now = 0;
void setup(){
pinMode(redLED,OUTPUT);
pinMode(greenLED,OUTPUT);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(SW1,INPUT);
pinMode(SW2,INPUT);
}
void loop(){
digitalWrite(redLED,HIGH); //Slår på RGB-rød
//Setter opp den randomiserte forsinkelsen for rød-->grønn i RGB:
fault = 0;
now = millis();
wait = now + random(300,600);
while(millis() < wait && digitalRead(SW1)==HIGH && digitalRead(SW2)==HIGH){
}
//Finner ut om vi har en taper: knapp trykket før forsinkelsen løp ut:
if(digitalRead(SW1)==LOW)fault = LED1;
if(digitalRead(SW2)==LOW)fault = LED2;
digitalWrite(redLED,LOW); //Slår av RGB-rød
//Hvis forsinkelsen fikk løpe helt ut, dvs. uten feiltrykk:
if(fault == 0){
digitalWrite(greenLED,HIGH); //Slår på RGB-grønn. The game is on!
//Kjør venteløkke til en spiller har trykt på knappen sin:
while(digitalRead(SW1)==HIGH && digitalRead(SW2)==HIGH){
}
//Vi har forlatt løkka fordi en knapp ble trykt. Hvem vant? :
if(digitalRead(SW1)==LOW){
winner = LED1;
}
else{
winner = LED2;
}
//Kjør lys- og lyd-fanfare for vinneren:
for(int k = 0; k < 5; k++){
tone(buzzerPin,(winnerBeep+(k*20)));
digitalWrite(greenLED,HIGH);
digitalWrite(winner,HIGH);
delay(50);
digitalWrite(winner,LOW);
digitalWrite(greenLED,LOW);
delay(50);
}
noTone(buzzerPin);
}
//Hvis vi hadde feiltrykk, dvs fault ikke == 0, så hadde vi en taper:
else{
//Kjør en feillyd i 5 sekunder og blink for taperen:
tone(buzzerPin,faultBeep,500);
for(int k = 0; k < 10; k++){
digitalWrite(redLED,HIGH);
digitalWrite(fault,HIGH);
delay(50);
digitalWrite(redLED,LOW);
digitalWrite(fault,LOW);
delay(50);
}
}
}
Comments
0 B
|👍
/👎