Я хочу, чтобы Arduino Pro Mini работал на 3,7 В (4,2 В при полностью заряженном) литий-ионном аккумуляторе.
В проекте я буду использовать ИК-датчик для управления реле. На основании принятого ИК-кода я переключу вывод цифрового выхода реле (ВЫСОКИЙ или НИЗКИЙ). Сначала arduino устанавливается в режим глубокого сна, и когда он получает внешнее прерывание (контакт 2 на мини-мониторе), он обрабатывает ИК-код и включает реле.
//Interrupts using Arduino
//Circuit Digest
#include "LowPower.h"
#include <IRremote.h>
volatile int output = LOW;
int i = 0;
#define RECV_PIN 2
volatile boolean sleepEnabled = true;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
irrecv.enableIRIn();
pinMode(RECV_PIN, INPUT);
attachInterrupt(digitalPinToInterrupt(RECV_PIN), buttonPressed1, RISING); // function for creating external interrupts at pin2 on Rising (LOW to HIGH)
}
void loop()
{
Serial.println(i);
++i;
delay(1000);
output = LOW;
digitalWrite(13, output); //Turns LED ON or OFF depending upon output value
if (sleepEnabled == true) {
Serial.println("Going to sleep");
delay(1000);
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
}
delay(500);
readIR();
}
void buttonPressed1() //ISR function excutes when push button at pinD2 is pressed
{
sleepEnabled = false;
}
void readIR() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == 0xff4ab5) {
sleepEnabled = true;
}
}
irrecv.resume(); // Receive the next value
}
Когда устройство -мини возвращается в сон, все выключено.
Как я могу заставить pro-mini потреблять минимальную мощность, когда вывод реле ВЫСОКИЙ?