Чтобы Arduino по умолчанию находился в спящем режиме и чтобы кнопка выводила его из режима сна.
Я видел библиотеку LowPower_LowPowerLab, которая может переводить Arduino в спящий режим. В их примере они переводят Arduino в спящий режим с помощью внешней кнопки. Можно ли как-нибудь инвертировать это поведение? Я хочу, чтобы Arduino экономил заряд батареи, находясь в спящем режиме, а затем, когда мне это нужно, удерживайте кнопку нажатой, чтобы Arduino не спал, а затем отпустите кнопку, чтобы снова перевести его в спящий режим. В приведенном ниже примере я попытался изменить AttachInterrupt на HIGH/RISING/FALLING без каких-либо изменений. Тоже могу
Пример LowPowerLab:
#include "LowPower.h"
// Используем контакт 2 как контакт пробуждения
const int wakeUpPin = 2;
void wakeUp()
{
// Просто обработчик прерывания контакта.
}
void setup()
{
// Настройте вывод пробуждения в качестве входа.
// Это будет потреблять несколько мкА тока.
pinMode(wakeUpPin, INPUT);
}
void loop()
{
// Разрешить выводу пробуждения вызывать прерывание по низкому уровню.
attachInterrupt(0, wakeUp, LOW);
// Войдите в состояние отключения питания с отключенными модулями АЦП и BOD.
// Пробуждение, когда на выводе пробуждения низкий уровень.
LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
// Отключить прерывание внешнего контакта при пробуждении контакта.
detachInterrupt(0);
// Делаем что-нибудь здесь
// Пример: чтение датчика, регистрация данных, передача данных.
}
@Zach Harrison, 👍0
Обсуждение1 ответ
В их примере они переводят Arduino в спящий режим с помощью внешней кнопки. Можно ли как-нибудь инвертировать это поведение?
Конечно. Переведите Arduino в спящий режим в setup
и разбудите его кнопкой.
Некоторые советы здесь.
Кроме того, я бы не использовал LOW, я бы использовал FALLING. LOW продолжает прерывать процессор, поэтому, пока вы удерживаете кнопку нажатой, он продолжает поступать в прерывание, что делает его не отвечающим.
- Как поддерживать состояние переключения в спящем режиме?
- Почему использование ESP8266 в режиме глубокого сна быстро разряжает батарею?
- Переключатель управления энергосбережением esp8266
- Как сгенерировать аппаратное прерывание в mpu6050 для пробуждения Arduino из режима SLEEP_MODE_PWR_DOWN?
- Питание esp32cam от аккумулятора
- Могу ли я иметь резервное питание для устройства Arduino?
- Как перевести ATtiny/ATmega в режим глубокого сна (чтобы годами работать от батарей), но при этом обнаруживать нажатие кнопки?
- Блок питания для Seeeduino Xiao
Похоже, вы что-то упускаете после «Также возможно»., @VE7JRO