Controling mutliple LEDs with various OFF&ON time

Hello everybody

For a bioreactor project i need to control several machines at the same time over a duration of 8 hours. (E.g. A whole run should take eight hours, firstly a water pump pumps water for 15 minutes, next step would be a stirrer to stir for 30 minutes, at the same time another pump pumps methanol and so on until the 8 hours are over and the cycle starts again. (in total 5 things to control))

Since these stirrers etc. do need 230V, the arduino switches 5 relays. To test the whole thing i thought of just using LEDs since it's much easier:

What i've found out until yet is that i can't use delay() so i've tried the blinking without delay() with millis() etc.
The problem is that all the LEDs seem to "start" at the same time, since there is only either voltage LOW or voltage HIGH.
Instead what i need is an LED that has the voltage LOW for X seconds, then has the voltage HIGH for y seconds and then again has the voltage LOW for z seconds.

This means i could basically say that the stirrer firstly has its voltage low for 30 minutes, then stirs for 30 minutes and then again has it's voltage low for 7 hours and then repeats again.

I somehow just can't figure out how to do this and any help on how i could solve this problem is greatly appreciated!

Greetings

You need to expand the blink without delay into a state machine.
Post an example of what you have so far for just one LED and we can point out where you are going wrong.

Hey thanks for your answer!

Following a tutorial i've defined a class and a constructor, afterwards the usual blinking is defined:

class Flasher
{
	int ledPin;      
	long OnTime;     
	long OffTime;    
 
	
	int ledState;             		
	unsigned long previousMillis;  	
 
  public:
  Flasher(int pin, long on, long off)
  {
	ledPin = pin;
	pinMode(ledPin, OUTPUT);     
	  
	OnTime = on;
	OffTime = off;
	
	ledState = LOW; 
	previousMillis = 0;
  }
 
  void Update()
  {
    
    unsigned long currentMillis = millis();
     
    if((ledState == HIGH) && (currentMillis - previousMillis >= OnTime)){
    	ledState = LOW;  // Turn it off
      previousMillis = currentMillis;  // Remember the time
      digitalWrite(ledPin, ledState);  // Update LED 
    }
    else if ((ledState == LOW) && (currentMillis - previousMillis >= OffTime)){
      ledState = HIGH;  // turn it on
      previousMillis = currentMillis;   // Remember the time
      digitalWrite(ledPin, ledState);	  // Update LED
    }
  }
};
  Flasher ledA(3, 5000, 1000);
 
void setup(){
}
 
void loop(){
    ledA.Update();
}

Probably it'd be possible to define another "Offtime" and add it to the Flasher()?

That's the best i've come up with yet (with the help of that tutorial) but it couldn't get it to work with an additional Offtime.

Thanks again and greetings

You need a state variable that defines what stage you are at turning things on and off. I am oldfashioned and don't bother with OOP myself.
Have you seen these tutorials on the state machine:-
http://www.thebox.myzen.co.uk/Tutorial/State_Machine.html
Or Robin2's several things at once
http://forum.arduino.cc/index.php?topic=223286.0