基本信息
源码名称:arduino看门狗实例
源码大小:1.19KB
文件格式:.ino
开发语言:C/C++
更新时间:2019-08-27
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
如何让Arduino用2颗5号电池运行1年以上--Arduino低功耗
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
}
如何让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
}