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 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; unsigned long timeStart = 0; unsigned long timeEnd = 0; int totalTime = 0; int timeLoop = 1; int winner = 1; void setup(){ pinMode(redLed, OUTPUT); pinMode(greenLed, OUTPUT); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(buzzerPin, OUTPUT); pinMode(sw1, INPUT); pinMode(sw2, INPUT); randomSeed(analogRead(A0)); Serial.begin(9600); } void loop(){ redMainLed(); mainLedWait(); winnerWinner(); timeLoop = 1; winner = 1; } void redMainLed(){ digitalWrite(redLed, HIGH); digitalWrite(greenLed, LOW); } void greenMainLed(){ digitalWrite(greenLed, HIGH); digitalWrite(redLed, LOW); } void mainLedWait(){ while ( timeLoop == 1){ timeStart = millis(); int randomNumber = random(3,7); while (totalTime < randomNumber * 1000 && timeLoop == 1 ){ totalTime = timeEnd - timeStart; timeEnd = millis(); Serial.println(totalTime); Serial.println(randomNumber); if (digitalRead(sw1) == 0) { pressedEarly(led1); } if (digitalRead(sw2) == 0) { pressedEarly(led2); } } greenMainLed(); timeLoop = 0; } } void pressedEarly(int x){ tone(buzzerPin, 200); for (int i = 0; i < 2000; i ++){ if (i < 500){ digitalWrite(redLed, LOW); digitalWrite(x, HIGH); } else if ( i >= 500 && i < 1000){ digitalWrite(redLed, HIGH); digitalWrite(x, LOW); } else if ( i >= 1000 && i < 1500){ digitalWrite(redLed, LOW); digitalWrite(x, HIGH); } else if ( i >= 1500 && i < 2000){ digitalWrite(redLed, LOW); digitalWrite(x, HIGH); } } noTone(buzzerPin); digitalWrite(x, LOW); winner = 0; timeLoop = 0; } void winnerRoutine(int x){ for (int i = 0; i < 2000; i ++){ if (i < 500){ digitalWrite(greenLed, LOW); digitalWrite(x, HIGH); tone(buzzerPin, 750); } else if ( i >= 500 && i < 1000){ digitalWrite(greenLed, HIGH); digitalWrite(x, LOW); tone(buzzerPin, 1000); } else if ( i >= 1000 && i < 1500){ digitalWrite(greenLed, LOW); digitalWrite(x, HIGH); tone(buzzerPin, 1250); } else if ( i >= 1500 && i < 2000){ digitalWrite(greenLed, LOW); digitalWrite(x, HIGH); tone(buzzerPin, 1500); } } noTone(buzzerPin); digitalWrite(x, LOW); winner = 0; } void winnerWinner(){ while (winner == 1){ if (digitalRead(sw1) == 0){ winnerRoutine(led1); } else if (digitalRead(sw2) == 0){ winnerRoutine(led2); } } }