基本信息
源码名称:arduino看门狗实例
源码大小:1.19KB
文件格式:.ino
开发语言:C/C++
更新时间:2019-08-27
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 1 元 
   源码介绍
如何让Arduino用2颗5号电池运行1年以上--Arduino低功耗

#include <avr/sleep.h>

#include <avr/wdt.h>
 
volatile byte data=0;
 
void setup() {
  pinMode(13,OUTPUT);
  setup_watchdog(9);
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
  ACSR |=_BV(ACD);//OFF ACD
  ADCSRA=0;//OFF ADC
  Sleep_avr();//Sleep_Mode
}
 
void loop() {
 
if(data>=7){
  data=0;
//-------------------------------
   digitalWrite(13,HIGH);
  delay(100);                      //此处是到达设置唤醒时间允许的程序
  digitalWrite(13,LOW);
//--------------------------------    
Sleep_avr();
}
else {
  Sleep_avr();  //Continue Sleep
}
 
}
 
//Sleep mode is activated
void setup_watchdog(int ii) {
 
  byte bb;
 
  if (ii > 9 ) ii=9;
  bb=ii & 7;
  if (ii > 7) bb|= (1<<5);
  bb|= (1<<WDCE);
 
  MCUSR &= ~(1<<WDRF);
  // start timed sequence
  WDTCSR |= (1<<WDCE) | (1<<WDE);
  // set new watchdog timeout value
  WDTCSR = bb;
  WDTCSR |= _BV(WDIE);
 
 
}
//WDT interrupt
ISR(WDT_vect) {
 
  data;
// wdt_reset();
 
}
 
void Sleep_avr(){
  set_sleep_mode(SLEEP_MODE_PWR_DOWN  ); // sleep mode is set here
  sleep_enable();
  sleep_mode();                        // System sleeps here
}