const int light = 0; // pin that the light is attached to (PWM pin) const int motor = 1; // pin that the motor is attached to const int water = 2; // pin that the water sensor is attached to const int water_power = 4; // pin that the water sensor power is attached to unsigned long timing = 0; // variable for clock unsigned long power_timing = 0; // variable for water check turn-on time unsigned long sensor_timing = 0; // variable for water check clock int light_state = 0; void light_on(int state) // smooth turn-on { if(state == 0) { for(int i = 0; i < 255; i++) { analogWrite(light, i); delay(2300); } light_state = 1; } else digitalWrite(light, 1); } void light_off(int state) // smooth turn-off { if(state == 1) { for(int i = 0; i < 255; i++) { analogWrite(light, 255 - i); delay(2300); } light_state = 0; } else digitalWrite(light, 0); } void water_check() // water check function { power_timing = millis(); digitalWrite(water_power, 1); while(millis() - power_timing < 2000) { // Serial.println ("Water sensor is turning on"); } while(digitalRead(water) == 1) { digitalWrite(motor, 1); } digitalWrite(motor, 0); digitalWrite(water_power, 0); // Serial.println ("Water sensor is turned off"); } void setup() { //Serial.begin(9600); pinMode(motor, OUTPUT); pinMode(light, OUTPUT); pinMode(water_power, OUTPUT); pinMode(water, INPUT); } void loop() { timing = millis(); while(millis() - timing < 86400000) // 24h set up (86400000) { if(millis() - timing < 57600000) // 16h-on state (57600000) { // Serial.println ("light is on"); // Serial.println ((millis() - timing)/1000); light_on(light_state); } if(millis() - timing >= 57600000) // 8h-off state { // Serial.println ("light is off"); // Serial.println ((millis() - timing)/1000); light_off(light_state); } if(millis() - sensor_timing >= 3600000) // water level is checking 1 time per hour (3600000) { // Serial.println ("water_check is on"); water_check(); // Serial.println ("Water check finished"); sensor_timing = millis(); } } }