Как выполнить код только 1 раз в цикле loop?

sadman41
Offline
Зарегистрирован: 19.10.2016

NeXan пишет:

Ну почему же, если в какой то момент никаких функций от него не требуется, почему бы не усыпить ради экономии заряда. Я читал, что некоторые режимы могут в несколько раз понизить потребление)

Чьё потребление? 

Это всё равно, что сторожу на химзаводе пукать запретить ради сохранения экологии в норме.

NeXan
Offline
Зарегистрирован: 03.06.2019

sadman41 пишет:

Чьё потребление? 

Это всё равно, что сторожу на химзаводе пукать запретить ради сохранения экологии в норме.

Аккумуляторы заряжать придется либо раз в 20 дней, либо в 2 раза реже, так есть ли смысл? При питании от сети, конечно на это нас рать.

Morroc пишет:

Так выключайте все, а по кнопке включайте :) "Загнать" можно, но придется копнуть поглубже https://tsibrov.blogspot.com/2018/02/arduino-power-down.html

Я эту статью как раз и читал. Там написано, что лучше всего даже отключать АЦП. А у меня на него подключен фоторезистор, придется параллелить с цифровым пином. Единственное пока не разобрался, какой режим лучше применить, чтобы МК будился после подачи высокого сигнала на пин.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

NeXan пишет:

Ну почему же, если в какой то момент никаких функций от него не требуется, почему бы не усыпить ради экономии заряда. Я читал, что некоторые режимы могут в несколько раз понизить потребление)

Усыпить можно только микроконтроллер. А на плате ардуино, кроме микроконтроллера, есть и другие потребляющие детали, которые усыпить нельзя. Большой выгоды это не даст.

Morroc
Offline
Зарегистрирован: 24.10.2016

Их выдрать конечно :)

NeXan пишет:

Единственное пока не разобрался, какой режим лучше применить, чтобы МК будился после подачи высокого сигнала на пин.

Да хоть этот. Будить по внешним прерываниям на ногах INT http://arduino.ru/Reference/AttachInterrupt

NeXan пишет:

  • Power-Down mode (режим микропотребления) - самый экономный режим, присутствует во всех AVR. В этом режиме отключаются все внутренние тактовые сигналы, соответственно, прекращается функционирование всех узлов МК, работающих в синхронном режиме. Единственными узлами, продолжающими работать в этом режиме, являются асинхронные модули МК: сторожевой таймер (если он включен), подсистема обработки внешних прерываний и блок сравнения адреса модуля TWI. Пробуждение из режима Power-Down возможно при возникновении сброса (аппаратного, от сторожевого таймера, от схемы BOD) или в результате генерации следующих прерываний:
    • прерывание от сторожевого таймера;
    • прерывание по совпадению адреса от интерфейса TWI;
    • прерывание изменения уровня (pin change interrupt)
    • внешние прерывания INT0 и INT1.

qbit
Offline
Зарегистрирован: 18.03.2019

NeXan пишет:

...Единственное пока не разобрался, какой режим лучше применить, чтобы МК будился после подачи высокого сигнала на пин.

Попробуйте сперва другое - максимально понизить тактовую частоту. Вы увидите существенное уменьшение потребления.

 

У Вас нет события, по которому Вы сможете (и будете) просыпаться, т.е. некий сигнал, по которому будет происходить внешнее прерывание. Поэтому, режим сна в Вашем текущем решении не подойдет.

 

Можете сделать, если очень хочется, собрать на компараторе (транзисторе) схему от датчика освещенности и сигнал (цифровой) использовать для внешних прерываний. Но Вам придется аппаратно играться - подбирать пороги...

Гриша
Offline
Зарегистрирован: 27.04.2014

пост 48

Гриша пишет:

а если рассмотреть хардовый вариант решения вопроса?

использовать несколько фотоэлементов + полевик  и все это  на ногу дога. 

взять транзистор "попроще" Р-канальный с небольшим начальным напряжением открытия, открывать его примерно так, а после работы отправлять всю богодельню спать для экономии заряда батареи. еще, продают в китае очень интересные игрухи на солнечных батарейках, можно ее на ногу дога без транзистора...

тода весь код можно в луп закинуть, а просыпаться когда дог тяфкнет. 

:))) ну мы же не ищем простых решений, а этот вариант жизнеспособный и интересный. ИМХО