Hi,
I have a problem. I'm using Millis to create a timer. I two timers, which are connected to relays. The first timer need to go on after 20min (120000) and the other timer after 30min (180000) and they need to go off after 5sec. (5000). But its not working.
Here is my code:
// PUMP 1
int PUMP1_DELAY = 120000; //Pump 1 Change for dalay (1000 = 1 second)
int PUMP1_TIME_ON = 5000; //Pump 1 Change for pump running time (1000 = 1 second)
// PUMP 2
int PUMP2_DELAY = 180000; //Pump 2 Change for dalay (1000 = 1 second)
int PUMP2_TIME_ON = 5000; //Pump 2 Change for pump running time (1000 = 1 second)
// ------------------------------------------------------
const int RELAY1 = 2;
const int RELAY2 = 4;
int INTERVAL_PUMP1 = PUMP1_DELAY;
int INTERVAL_PUMP2 = PUMP2_DELAY;
unsigned long time_1 = 0;
unsigned long time_2 = 0;
boolean PUMP1_ON = true;
boolean PUMP2_ON = true;
boolean TURN_PUMP_ON=LOW;
boolean TURN_PUMP_OFF=HIGH;
void print_time(unsigned long time_millis);
void setup() {
Serial.begin(115200);
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
digitalWrite(RELAY1, TURN_PUMP_OFF);
digitalWrite(RELAY2, TURN_PUMP_OFF);
}
void loop() {
//Pump 1
if (millis() > time_1 + INTERVAL_PUMP1) {
time_1 = millis();
print_time(time_1);
if (PUMP1_ON) {
digitalWrite(RELAY1, TURN_PUMP_ON);
Serial.println("Pump 1 on!");
PUMP1_ON = false;
INTERVAL_PUMP1 = PUMP1_TIME_ON;
} else {
digitalWrite(RELAY1, TURN_PUMP_OFF);
PUMP1_ON = true;
Serial.println("Pump 1 off!");
INTERVAL_PUMP1 = PUMP1_DELAY;
}
}
//Pump 2
if (millis() > time_2 + INTERVAL_PUMP2) {
time_2 = millis();
print_time(time_2);
if (PUMP2_ON) {
digitalWrite(RELAY2, TURN_PUMP_ON);
Serial.println("Pump 2 on!");
PUMP2_ON = false;
INTERVAL_PUMP2 = PUMP2_TIME_ON;
} else {
digitalWrite(RELAY2, TURN_PUMP_OFF);
PUMP2_ON = true;
Serial.println("Pump 2 off!");
INTERVAL_PUMP2 = PUMP2_DELAY;
}
}
}
//Function for printing to serial. Debug only.
void print_time(unsigned long time_millis) {
Serial.print("Time: ");
Serial.print(time_millis / 1000);
Serial.print("s - ");
}