This is functional. I would do more by making a function to be called with the time and state information. It would reduce the number of if statements. But this is simple to understand. I started with Blink without delay.
/*
Blink without Delay
http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/
const int On = 1;
const int Off = 0;
// constants won't change. Used here to set a pin number:
const int ledPin = LED_BUILTIN;// the number of the LED pin
const int relay1 = 5;
const int relay2 = 6;
// Variables will change:
int ledState = LOW; // ledState used to set the LED
// Generally, you should use "unsigned long" for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0; // will store last time LED was updated
int secondCount = 0;
// constants won't change:
const long interval = 1000; // interval at which to blink (milliseconds)
#define onTime 2 //relay on time
#define relay1_on1 0
#define relay1_on2 (relay1_on1+onTime+1250)
#define relay2_on1 62
#define relay2_on2 (relay2_on1+onTime+630)
void setup() {
// set the digital pin as output:
digitalWrite(relay1, Off);
digitalWrite(relay2, Off);
pinMode(ledPin, OUTPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
}
void loop() {
// here is where you'd put code that needs to be running all the time.
// check to see if it's time to blink the LED; that is, if the difference
// between the current time and last time you blinked the LED is bigger than
// the interval at which you want to blink the LED.
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
//------------------------------
// Relay 1
if (secondCount == relay1_on1) {
digitalWrite(relay1, On);
}
if (secondCount == (relay1_on1 + 2)) {
digitalWrite(relay1, Off);
}
if (secondCount == relay1_on2) {
digitalWrite(relay1, On);
}
if (secondCount == (relay1_on2 + 2)) {
digitalWrite(relay1, Off);
}
//------------------------------
// Relay 2
if (secondCount == relay2_on1) {
digitalWrite(relay2, On);
}
if (secondCount == (relay2_on1 + 2)) {
digitalWrite(relay2, Off);
}
if (secondCount == relay2_on2) {
digitalWrite(relay2, On);
}
if (secondCount == (relay2_on2 + 2)) {
digitalWrite(relay2, Off);
}
//------------------------------
// if the LED is off turn it on and vice-versa:
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
secondCount++;
if (secondCount == 180) {
secondCount = 0;
}
}
}