Чтобы 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); 
    
    // Делаем что-нибудь здесь
    // Пример: чтение датчика, регистрация данных, передача данных.
}

, 👍0

Обсуждение

Похоже, вы что-то упускаете после «Также возможно»., @VE7JRO


1 ответ


2

В их примере они переводят Arduino в спящий режим с помощью внешней кнопки. Можно ли как-нибудь инвертировать это поведение?

Конечно. Переведите Arduino в спящий режим в setup и разбудите его кнопкой.

Некоторые советы здесь.

Кроме того, я бы не использовал LOW, я бы использовал FALLING. LOW продолжает прерывать процессор, поэтому, пока вы удерживаете кнопку нажатой, он продолжает поступать в прерывание, что делает его не отвечающим.

,