sommeil-batterie.ino

LilyPad Arduino · Archivo : sommeil-batterie.ino · Lenguaje : Arduino · Uso : Endormir la carte entre deux mesures pour économiser la batterie

En modo power-down el 328P consume unos microamperios frente a varios miliamperios despierto: la clave de los proyectos cosidos o a pila. Pulsar el pin 2 (INT0) despierta el microcontrolador.

Hardware necesario

Una LilyPad Arduino (ATmega168V/328V, 8 MHz, 3,3 V) con sus pastillas para coser, programada con cable FTDI (breakout) y alimentada por 3,7 V (LiPo) o 5 V en V-REG. 1 botón para despertar; alimentación a pilas.

Cableado

Botón entre el pin 2 y GND (pull-up interna).

Funcionamiento

set_sleep_mode apaga todo salvo la interrupción externa; el despertar ejecuta la ISR y reanuda tras sleep_cpu. Quite el pull-up si despierta un sensor. En el Arduino IDE, elija « LilyPad Arduino » y el puerto FTDI, y suba. El hilo conductor añade unos ohmios de resistencia: mantenga tiradas cortas y aísle los cruces.

Para ir más lejos

Despierte también periódicamente con el watchdog (wdt_enable) para un registrador autónomo.

sommeil-batterie.ino

// Sommeil profond (mode power-down) reveille par interruption externe.
#include <avr/sleep.h>
#include <avr/wdt.h>

const int REVEIL = 2; // interruption externe INT0

void reveilISR() { wdt_reset(); }

void setup() {
  Serial.begin(9600);
  pinMode(REVEIL, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(REVEIL), reveilISR, LOW);
}

void loop() {
  int mesure = analogRead(A0);
  Serial.print(F("Mesure: "));
  Serial.println(mesure);
  delay(50);          // laisse partir la ligne serie
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  sleep_enable();
  sleep_cpu();        // ~microampere ; reveil sur appui (broche 2 LOW)
  sleep_disable();
  Serial.println(F("Reveil !"));
}

← Volver a la ficha