Arnemi icon

Reaksjonsspill - grunnversjonen

Arnemi | PRO | 02/12/18 09:32:40 AM UTC | 0 ⭐ | 352 👁️ | Never ⏰ | []
text |

2.41 KB

|

None

|

0 👍

/

0 👎

//  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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎