Arduino像电脑和手机一样,也具备休眠功能。
在休眠状态下,系统几乎完全停止运作,只保留基本的侦测功能,因此只消耗少许电力。

主要功能函数如下:

  //引用库文件#include <avr/sleep.h>// 设置休眠模式set_sleep_mode (SLEEP_MODE_PWR_DOWN);// 进入休眠状态sleep_mode (); 

注意: sleep_mode 为宏指令,它会自动自动开启休眠功能、进入睡眠状态、禁用休眠功能。 按照官方解释,在某些条件下, sleep_mode 宏会导致个别操作步骤开启休眠功能并发出sleep指令进入休眠,所以,另外提供了以下三个指令来分步完成sleep_mode ()工作:

  // 开启休眠功能sleep_enable();// 进入休眠状态sleep_cpu (); //关闭休眠功能 sleep_disable();

也就是说,貌似使用sleep_mode会出现意外情况,所以,根据情况自己选择吧。

测试代码如下:

#include <avr/wdt.h>
#include <avr/sleep.h>
int ledPin = 13;
int shu=0;ISR(WDT_vect){//看门狗唤醒执行函数shu++;
}void setup() {
pinMode(ledPin, OUTPUT);
set_sleep_mode(SLEEP_MODE_PWR_DOWN); //设置休眠模式。
sleep_enable(); //开启休眠功能。
//ACSR |=_BV(ACD);//关掉ACD,据说很省电。不知道唤醒以后要不要重新开,怎么开?
//ADCSRA=0;//关掉ADC,据说很省电。不知道唤醒以后要不要重新开,怎么开?
//按照官方解释,sleep_enable()最好写在中断(attachInterrupt())前,防止中断在开始休眠前就提前释放而造成休眠后无法唤醒。
//开始设置看门狗中断,用来唤醒。
MCUSR &= ~(1<<WDRF);
WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = 1<<WDP1 | 1<<WDP2;
WDTCSR |= _BV(WDIE);
}  void loop()
{  if (shu>=5){digitalWrite(ledPin, HIGH);    delay(500);     digitalWrite(ledPin, LOW);    shu=0;}sleep_cpu();//进入休眠状态,从此处开始进入休眠。//这里不需要喂狗。目的就是等狗超时后执行唤醒函数。
}

或者代码可以如下:

#include <avr/wdt.h>
#include <avr/sleep.h>
int ledPin = 13;
int shu=0;ISR(WDT_vect){//看门狗唤醒执行函数shu++;
}void setup() {
pinMode(ledPin, OUTPUT);
set_sleep_mode(SLEEP_MODE_PWR_DOWN); //设置休眠模式。
//开始设置看门狗中断,用来唤醒。
MCUSR &= ~(1<<WDRF);
WDTCSR |= (1<<WDCE) | (1<<WDE);
WDTCSR = 1<<WDP1 | 1<<WDP2;
WDTCSR |= _BV(WDIE);
}  void loop()
{  if (shu>=5){digitalWrite(ledPin, HIGH);    delay(500);     digitalWrite(ledPin, LOW);    shu=0;}sleep_mode(); //进入休眠状态,从此处开始进入休眠。//这里不需要喂狗。目的就是等狗超时后执行唤醒函数。
}

Arduino - 休眠模式相关推荐

  1. Arduino休眠模式和看门狗以及中断详解

    休眠模式.看门狗.中断 一.休眠模式 睡眠中断的触发 二.看门狗 实例一 实例二 三.外部中断 1.为什么需要中断? 2.不关心功耗还需要中断吗? 3.各种板子的中断 4.中断函数.中断触发模式与设置 ...

  2. arduino 休眠 节能_Arduino低功耗掉电模式看门狗唤醒

     最近在做一个低功耗的设备,发射红外来检测前面1米以内左右的地方是否有人,纽扣电池供电,需要持续工作至少两年,因此,要求设备工作电流在ua级别. (1)红外发射接收 由于一般的红外发射接收(下图所示 ...

  3. Arduino 超级省电之休眠模式用1节18650电池工作17年

    Arduino的外围元件模块非常丰富,自己想做个温度报警器,却发现电池供电撑不了几天,于是乎就折腾了一段时间,终于将待机时间延长到了俺退休后^-^,现将过程共享给大家.        首先我们要知道电 ...

  4. 25元、264KB内存的微处理器,树莓派官方出品,自带快速休眠模式

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现在,25元就能买到一个微处理器. 这是树莓派官方推出的.名为Pico的微处理器,大小仅51mm×21mm,约为两根手指的面积. 然而网友定 ...

  5. Wake-On-LAN待机或休眠模式中唤醒

    Wake-On-LAN简称WOL,是一种电源管理功能:如果存在网络活动,则允许设备将操作系统从待机或休眠模式中唤醒.许多主板厂商支持IBM提出的网络唤醒标准.该标准允许网络管理员远程打开PC机电源,以 ...

  6. 休眠后gpio状态_浅谈Digi XBee模块的休眠模式

    浅谈Digi XBee模块的休眠模式 2020-3-25 Digi XBee S2C模块,如果仅连接电源线可以测得,在待机情况下,大约是10.5mA左右的电流,在休眠时的功耗可以低到0.5uA.可以知 ...

  7. 电脑休眠和睡眠的区别_Windows操作系统中的休眠模式和睡眠模式有什么区别?...

    在工作中,我们会遇到这样一种情况.在电脑上做事情做到一半,突然有紧急的事情要处理,需要离开电脑.打开了好多网页,文档写了一半,软件开了五六个,要是关机了下次再打开,那要一个个找回来,太麻烦了.想保存当 ...

  8. Linux合上笔记本不进入休眠模式

    最近一个问题困扰了我很久,入职之前和人事说过工作中会用自己的电脑,但是人事还是坚持要给我发一个电脑,没办法,公司没有补贴,那就领了吧,索性将这个笔记本配置成了Fedora系统,用来当测试机,但是一直有 ...

  9. Android开发笔记(一百六十)休眠模式下的定时器控制

    定时器AlarmManager常常用于需要周期性处理的场合,比如闹钟提醒.任务轮询等等.并且定时器来源于系统服务,即使App已经不在运行了,也能收到定时器发出的广播而被唤醒.似此回光返照的神技,便遭到 ...

最新文章

  1. tensorflow.unstack() and tensorflow.stack()
  2. 【Java源码分析】集合框架-Collections工具类-Arrays工具类
  3. 研发手Q推广遇到的一系列问题
  4. Python基础(三)深浅拷贝、函数、文件处理、三元运算、递归、冒泡排序
  5. MySQL高可用架构InnoDB Cluster (和NDB Cluster是两码事)
  6. 公式编辑器MathType中矩阵模板的使用技巧
  7. 超好用json转excel工具
  8. Linux C 基于epoll的多人聊天室
  9. 赋能智慧交通的5G关键技术
  10. linux命令清理磁盘空间,Linux如何使用命令行清理磁盘来增加空间
  11. mongodb 副本集Replica Set的keyfile验证
  12. Linux 安装NDK
  13. TiddlyWiki笔记入门之多维度标签--发散思维与收敛思维的乐园。
  14. put url带参数_Superlurl 一款开源关键词URL采集工具
  15. 【SpringBoot-3】Lombok使用详解
  16. 给小白分享几个学习Android的网站
  17. 十一、SpringCloud实用篇_Gateway服务网关
  18. java实现手写签名_手写签字,保存笔迹到图片
  19. 图像处理 有损压缩变换-离散余弦变换
  20. C#开发笔记之02-什么时候使用OnXXX方法,这种命名是什么意思?

热门文章

  1. 图像分析,使用Halcon进行缺陷检测
  2. OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
  3. Golang 获取当前外网IP/地址/运营商
  4. PERT图(工程网络图)
  5. 自制简易C++日志库——优雅地调试VINS-mono
  6. 如何永久关闭windows安全中心?
  7. 服务器microsoft基本显示适配器,win10显卡被识别Microsoft基本显示适配器安装不了驱动怎么办?...
  8. matlab中产生随机点,如何在matlab中制作圆形并在里面生成随机点
  9. 阿里百川4.0授权后,渠道页面授权免帐密实现方法
  10. sybase常见语句