Disminuir el consumo de energía al máximo de Arduino REV UNO.

Gracias @surbyte

Mi problema es de exceso de riego. Coloco un cubo de 5 L para 2 macetas de tomates y el agua desaparece en una noche. Evidentemente eso es un problema porque ahogas a las plantas.

Yo lo que quiero es un código que cuando haya condiciones de riego, funcione la bomba de agua durante 2 minutos y se quede parado durante 3 horas (por ejemplo) y salga de la condificional if para que el código vuelva a ejecutarse el loop por completo en 50 microsegundos.

Por ejemplo, he hecho esta modificación del código.

switch(estado) {
    case 0: // Hay agua en el depósito
     //**************************************************************
     // Condiciones de riego 
     // Si la humedad en el suelo es igual o inferior al 50%, si la luminosidad es inferior al 30%,
     // Si la temperatura es inferior al 30%, entonces el sistema de riego riega. 
     // En caso de que no se  cumpla alguno o ninguno de los 3 requisitos anteriores,
     // el sistema de riego no riega
     //**************************************************************
     if( ground_humidity_value <= 50 && ldr_value < 30 && temperature < 30) {
     digitalWrite(water_pump_pin, HIGH);
     Serial.println("Irrigate");
     analogWrite(water_pump_pin, water_pump_speed);
 delay (120000); // La bomba de agua riega durante 2 minutos
 digitalWrite(water_pun_pin, LOW);
 delay (10800000); // La bomba de agua para durante 3 horas
     }
     //El motor de la bomba de agua arranca con la velocidad elegida anteriormente en el código     
     else{
     digitalWrite(water_pump_pin, LOW);
     Serial.println("Do not irrigate");
     //El motor de la bomba de agua se para y no riega
     }
      break;
    case 1: // No hay agua en el depósito
         digitalWrite(water_pump_pin, LOW);
 Serial.println("NO WATER");
      break;
  } 
  delayMicroseconds (50); 
}

surbyte:
Este sensor acaba destrozado si lo tienes en uso continuo. Si lo usas solo cuando tienes que medir no pasa eso.
Para ello debes alimentalo con un pin y medir con otro. O puedes usar un transistor asociado a un pin.

De todos modos si armaste algo mejor esta resuelto.

El DTH11 mide con resolución de 1 grado. Nada mas que decir. Ya te lo han dicho.

Lo demas, son cosas a resolver. Si tu tanque de agua es pequeño, pues lo agrandas. Una cosa es mantener el riego y otra quedarte sin agua. Pero solo es un comentario.
Para mi el riego no debe ser por RELOJ sino por SOL asi que en parte estoy de acuerdo con el uso del LDR.
Estan dadas las condiciones para regar o no lo estan? El RTC no te lo dirá.. y el sol se pone en diferentes momentos todo el aÑo de modo que un LDR puede ajustarse mejor o fallar, si el dia es malo te dira que puedes regar antes, y si el sensor de humedad de suelo dice que esta húmedo no habrá que hacerlo.

La pregunta es si poniendo 2 delay con tanto tiempo, afecta negativamente al consumo de energía de la placa arduino.

Edito: Hay que tener en cuenta que Arduino es alimentado con una pila de 3,7V y que de nada vale que delay consuma mucha energía si el motor de bomba de agua están funcionando continuamente. Supongo que el motor de la bomba de agua consume mucha más energía que delay.

Edito2: En caso de que no haya agua, el sensor de nivel de líquidos actúa como interruptor y el motor de agua no arranca aunque haya condiciones de riego. Lo que ayuda a optimizar el funcionamiento del sistema de riego y a evitar un consumo de recursos innecesario.

Gracias a todos por contestar.