Wie weet wat leuks om te maken?

Ah ik snap hem. Ik heb het zowaar werkend gekregen:

  • De functie randLed stoort niet meer met de andere functie en hij knippert dus random een ledje met de gewenste tijd
  • De functie pressButton werkt MAAR er zit een bug in:

Als ik button van de rode led in druk gaat ineens de groene led aan
Als ik de button van de groene led in druk gaat de blauwe aan
Als ik de blauwe in druk gaat de rode aan

M.a.w. ze zijn allemaal een pin opgeschoven (ze staan op RGB volgorde en dus via de buttons op GBR), terwijl ik toch echt niets in het circuit veranderd heb.

Code (zie de wijziging waarbij ik de buttonstate onthoud):

int ledRed = 8;
int ledGreen = 9;
int ledBlue = 10;
int buttonRed = 5;
int buttonGreen = 6;
int buttonBlue = 7;
int aRandom[] = {};
int iRandomNum = 0;
unsigned long iTimer = 0;
unsigned long iTimerCurrent = 0;
int ledState = LOW;
int numUsed = 0;
int buttonState = LOW;
int randLedState = LOW;

void setup()
{
   pinMode(ledRed, OUTPUT);
   pinMode(ledGreen, OUTPUT);
   pinMode(ledBlue, OUTPUT);
   pinMode(buttonRed, INPUT);
   pinMode(buttonGreen, INPUT);
   pinMode(buttonBlue, INPUT);
}

void pressButton(int button, int led, int randLedState)
{
   if(buttonState == HIGH)
   {
      digitalWrite(led, HIGH); 
   }
   else if(randLedState == LOW)
   {
      digitalWrite(led, LOW);   
   }
   
   buttonState = digitalRead(button);
}

boolean randLed()
{
   if(numUsed == 0)
   {
     iRandomNum = random(8, 11);
   }
   iTimerCurrent = millis(); 
   
   if(iTimerCurrent-iTimer > 500)
   {
       iTimer = iTimerCurrent;
  
      // if the LED is off turn it on and vice-versa:
      if (ledState == LOW)
        ledState = HIGH;
      else
        ledState = LOW;
      
      numUsed ++;
  
      // set the LED with the ledState of the variable:
      digitalWrite(iRandomNum, ledState);
   }
   
   if(numUsed >= 2)
   {
      numUsed = 0; 
   }
   
   return ledState;
   
}

void loop()
{  
   randLedState = randLed();
   
     
     
     pressButton(buttonRed, ledRed, randLedState);
     pressButton(buttonGreen, ledGreen, randLedState);
     pressButton(buttonBlue, ledBlue, randLedState);
}