Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int ledPinRed = 13;
- int ledPinBlue = 12;
- int ledPinGreen = 11;
- int ledPinYellow = 10;
- int buttonRed = 9;
- int buttonBlue = 8;
- int buttonGreen = 7;
- int buttonYellow = 6;
- int buttonState = LOW;
- int prevButtonState = -1;
- int ledButtonDiff = ledPinRed - buttonRed;
- int colorOrderID = 0;
- int colorOrder[100] = { };
- bool isPlayerTurn = false;
- int playerOrder = 0;
- unsigned long prevTime = 0;
- void setup() {
- Serial.begin(9600);
- pinMode(ledPinRed, OUTPUT);
- pinMode(ledPinBlue, OUTPUT);
- pinMode(ledPinGreen, OUTPUT);
- pinMode(ledPinYellow, OUTPUT);
- pinMode(buttonRed, INPUT);
- pinMode(buttonBlue, INPUT);
- pinMode(buttonGreen, INPUT);
- pinMode(buttonYellow, INPUT);
- //Let's make it more random
- randomSeed(analogRead(A0));
- }
- void allLedsToggle(int state) {
- for (int i = 10; i <= 13; i++) {
- digitalWrite(i, state);
- }
- }
- void doColors() {
- Serial.println("---");
- for (int i = 0; i <= colorOrderID; i++) {
- digitalWrite(colorOrder[i], HIGH);
- Serial.println(colorOrder[i]);
- delay(750);
- digitalWrite(colorOrder[i], LOW);
- delay(500);
- }
- }
- void loop() {
- // computer laat zien wat de volgorde is
- if (!isPlayerTurn) {
- int randomColor = random(ledPinYellow, ledPinRed+1);
- colorOrder[colorOrderID] = randomColor;
- doColors();
- colorOrderID++;
- isPlayerTurn = true;
- // beurt van de speler
- } else {
- int buttonPressed = -1;
- int buttonStateRed = digitalRead(buttonRed);
- int buttonStateBlue = digitalRead(buttonBlue);
- int buttonStateGreen = digitalRead(buttonGreen);
- int buttonStateYellow = digitalRead(buttonYellow);
- // Dit zou 0 (LOW), 1 (HIGH) of meer moeten teruggeven.
- // Als het meer dan 1 is (meerdere knoppen ingedrukt dus) dan negeren we het
- buttonState = buttonStateRed + buttonStateBlue + buttonStateGreen + buttonStateYellow;
- // kijk of een knop is ingedrukt en welke
- if (buttonState == HIGH && prevButtonState == LOW) {
- if (buttonStateRed == HIGH) {
- buttonPressed = buttonRed;
- } else if (buttonStateBlue == HIGH) {
- buttonPressed = buttonBlue;
- } else if (buttonStateGreen == HIGH) {
- buttonPressed = buttonGreen;
- } else {
- buttonPressed = buttonYellow;
- }
- // als er een knop is ingedrukt controleren we hem
- if (buttonPressed > -1) {
- int buttonToPinID = buttonPressed + ledButtonDiff;
- if (buttonToPinID == colorOrder[playerOrder]) {
- digitalWrite(buttonToPinID, HIGH);
- delay(500);
- digitalWrite(buttonToPinID, LOW);
- playerOrder++;
- // we hebben de ronde voltooid. Door naar de volgende ronde.
- if (playerOrder == colorOrderID) {
- Serial.println("Beurt is over. Volgende ronde!");
- isPlayerTurn = false;
- playerOrder = 0;
- delay(1000);
- }
- } else {
- // we zijn af. Nieuwe ronde!
- Serial.println("FOUT! We beginnen opnieuw.");
- allLedsToggle(HIGH);
- delay(1000);
- allLedsToggle(LOW);
- isPlayerTurn = false;
- playerOrder = 0;
- colorOrderID = 0;
- delay(1000);
- }
- }
- }
- }
- prevButtonState = buttonState;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement