Paso 4: Bosquejo: la alimentación y la interrupción de base de despertador (bajo consumo)
Para ahorrar consumo de energía/batería, sería beneficioso para arduino bajo modo de consumo de energía o hibernación hasta que el sensor PIR detecta el movimiento. Lograremos esto mediante interrupciones hardware y energía por modo de ATMEGA328P microcontrolador de arduino de la Junta. Por otra parte, se desactivar convertidores analógicos a digital (ADC) ya que no necesitamos a ningún ADC.
"El energía-abajo modo salva el contenido del registro pero congela el oscilador, desactivar todas las funciones de chip de othe r hasta el reset nex t interrupción o hardware.
En este bosquejo, estamos usando pin entrada D2 o interrupción 0 para que la salida de PIR sensor conectado.
Detector PIR sí mismo tiene temporizador de estado, no es necesario ningún temporizador de arduino para mantener el pin de salida D13 en tiempo fijo. ON time físicamente regulable mediante potenciómetro de Tx, como se muestra en el paso anterior.
-Arduino en el primer encendido, parpadea LED en el pin 13 para un minuto, esto es sólo para la indicación visual del periodo de calentamiento requerido por sensor PIR para estabilizar a temperatura ambiente.
para (int i = 1; i < = 120; i ++) {}
digitalWrite (LedPin, alto);
Delay(100);
digitalWrite (LedPin, LOW); Delay(100); }
-El Arduino se mantiene en hibernación hasta D2 pin es baja.
En la función Hibernate();
vamos a poner todos los pines de entrada excepto el pin 13 a la que hemos conectado nuestro LED o un relé.
para (int i = 0; i < 20; i ++) {}
Si (yo! = 13)
pinMode (, entrada);}
y reposo de arduino a modo de consumo de energía más bajo
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
y desactivar la ADCs
ADCSRA & = ~ (1 << 7);
y desactivar Brown un detector que se utiliza para comprobar nivel de voltaje de entrada
sleep_bod_disable();
atribuimos la interrupción 0 del perno 2 en detectar cambios en el estado de señal en el pin 2
attachInterrupt (PIRsensorInterrupt, wakeUpNow, cambio);
Finalmente se llama a función de sueño mediante
sleep_mode();
-Cuando el sensor PIR detecta el movimiento, cambios en el estado de baja a alta de salida del sensor PIR. Esta señal de borde de levantamiento es recogida por la interrupción 0, arduino se despierta del modo de espera, las interrupciones están deshabilitadas temporalmente y en consecuencia pin D13 va alto.
Una vez, es el paso del tiempo, PIR salida otra vez vuelve al bajo de alta, esta señal de borde cae levanta otra interrupción, poner arduino en hibernación una vez más.