Режим сна для arduino

Artyom_roboti

✩✩✩✩✩✩✩
22 Мар 2020
28
0
#include <Ultrasonic.h>
#include <avr/sleep.h>
Ultrasonic ult(4, 5); //ультразвуковой дальномер
int dist;
void setup() {
pinMode(10, OUTPUT); //подключён светодиод
pinMode(3, OUTPUT); //подключено прерывание
set_sleep_mode(SLEEP_MODE_IDLE);
attachInterrupt(1, interrupt, RISING);
}

void loop() {
dist = ult.read();
if (dist < 10) {
digitalWrite(3, HIGH);
digitalWrite(10, HIGH);
} else
{
digitalWrite(3, LOW);
digitalWrite(10 , LOW);
}
sleep_mode();
detachInterrupt(1);
}
void interrupt() {

}




Друзья, у меня во такой вопрос, в этом коде, arduino будет хоть в минимальном режиме энергосбережения или же нет?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
ну особо не смотрел, но если по событиям что будет:
1) Установлен режим сна
2) подключено прерывание
далее цикл
1)чтение данных и изменение пинов
2) засыпание
цикл не крутится!
если прерываение подключено верно и режим сна верный. то :
3) проснуться, отключить прерывание
на начало цикла, т.е. что будет
1) чтение данных
2) засыпание
3) т.к. прерываени не подключено, то и не будет просыпания как я понимаю. Перед засыпанием надо каждый раз включать прерывание
 

Artyom_roboti

✩✩✩✩✩✩✩
22 Мар 2020
28
0
@Старик Похабыч, я знаю правильно ли думаю или нет, но в моём понимание, то режим сна IDLE вводит в сон только процессор, а все пины так же продолжают считывать показания с датчиков, и вот когда у меня срабатывает условие , то я с помощью команды digitalWrite(3, HIGH); заставляю сработать прерывание и выполнить , то что мне нужно, а потом обратно отправляю в сон. Я вот такой логике следовал. Она не верна?
 

AndrySmart

✩✩✩✩✩✩✩
12 Дек 2018
38
2
Киев
у меня вопрос к знающим.

если в процессе работы какие то переменные получили какие то значения то после сна эти переменные остаются или сбрасываются?

короче нужно ли их перед сном в ЕЕПРОМ сохранять а как проснулись то восстанавливать?