Poner Arduino en modo sleep esperando una interrupcion?

Hola!

Tengo puesto un arduino mini pro como controlador de un enchufe "mando a distancia".
Vamos, lo que viene a ser poder apagar el ventilador a las 5 la mañana con un mando IR, sin tener que levantarte :sweat_smile:

Como podéis imaginar, el código es muy simple:

#include <NECIRrcv.h>
#define IRPIN 8    // Pin donde esta conectado el sensor IR

#define n1 0xE619BD02
#define n2 0xE619BD02

NECIRrcv ir(IRPIN) ;
bool encendido=false;
void setup()
{
  pinMode(9,OUTPUT);
  
  Serial.begin(9600) ;
  ir.begin() ;
}

void loop(){
  unsigned long ircode ;

  while (ir.available()) {
    ircode = ir.read() ;
    //Serial.println(ircode);
    if(ircode==n1){
      if(encendido){
        digitalWrite(9,LOW);
        encendido=false;
      }
    else{
        digitalWrite(9,HIGH);   
        encendido=true;
      }
    }    
  }
}

Pero tengo dudas respecto a si es bueno o no , dejar el Arduino 10 - 12 horas todos los días ejecutando básicamente "while (ir.available())" para cuando yo pulse el mando.

¿Creéis que sería mejor ponerlo en modo sleept, y hacer una interrupción para cuando pulse el mando? Nunca he puesto el Arduino en modo sleep hasta ahora. Pero imagino que será mejor tenerlo así que ejecutando código todo el rato.

Un saludo y gracias

nadie? :frowning:

¿Creéis que sería mejor ponerlo en modo sleept, y hacer una interrupción para cuando pulse el mando?

Sí, pues ahorras energía y si usas pilas puede durar varios años, en vez de días. Puedes visitar este tutorial: Reducing Arduino Power Consumption - SparkFun Learn. Si no sabes inglés puedes usar un traductor online.