Arduino - 休眠模式
2016-01-11 16:09
477 查看
Arduino像电脑和手机一样,也具备休眠功能。
在休眠状态下,系统几乎完全停止运作,只保留基本的侦测功能,因此只消耗少许电力。
主要功能函数如下:
注意: sleep_mode 为宏指令,它会自动自动开启休眠功能、进入睡眠状态、禁用休眠功能。 按照官方解释,在某些条件下, sleep_mode 宏会导致个别操作步骤开启休眠功能并发出sleep指令进入休眠,所以,另外提供了以下三个指令来分步完成sleep_mode ()工作:
也就是说,貌似使用sleep_mode会出现意外情况,所以,根据情况自己选择吧。
测试代码如下:
或者代码可以如下:
在休眠状态下,系统几乎完全停止运作,只保留基本的侦测功能,因此只消耗少许电力。
主要功能函数如下:
//引用库文件 #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+LabVIEW的多路数据采集系统
- 基于Arduino+LabVIEW的串口控制LED亮灭
- 基于Protues的Arduino学习笔记01-Arduino UNO实验板设计
- 《Arduino与LabVIEW开发实战》-前言
- Arduino(一)
- [极客]硬件极客最爱:支持WiFi的Arduino板到来
- (一) 驱动模块搭建与测试
- (二) 2WD智能小车搭建完成
- 现货首发 爱上Raspberry Pi 爱上树莓派 首本中文教材 正版图书
- 现货首发 爱上Raspberry Pi 爱上树莓派 首本中文教材 正版全新
- 玩于鼓掌之中的小老虎机——Tiny Tiger Machine
- 基于Arduino的RGB色灯上位机控制Demo
- arduino的String类
- 静态字符串模式匹配模板库
- Arduino串口的正确打开方式
- bluetooth控制Arduino单片机的红外发射装置(一)——Arduino部分
- bluetooth控制Arduino单片机的红外发射装置(二)——Android部分
- 关于Arduino MEGA2560 看门狗对bootloader的依赖
- 【工欲善其事】用 Visual Studio 编译 Arduino
- 安卓通过USB控制Arduino