零知标准板/迷你板教程-看门狗使用示例watchdog

本次讲解零知标准板或迷你板使用独立看门狗示例,程序作用:开启看门狗,超时时间设置为10s,在10s内如果没有喂狗操作就复位程序重新运行,如果10s内有喂狗就可以一直运行程序,然后循环以上过程,这里使用按键来进行喂狗,即检测到按键按下就进行喂狗。

一、硬件

1、需要的模块

零知标准板或迷你板

按钮(点击购买)

电阻和线(点击购买)

2、硬件连接

这里主要使用按键来进行喂狗,因此硬件连接直接参考这个文章:零知开源快速入门6(点击跳转)

二、软件


												
	/**************************************************************************************
	* 文件: IWDG_Button.ino
	* 作者: 零知实验室
	* -^^- 零知开源,让电子制作变得更简单! -^^-
	* 时间: 2019-10-31 18:35:54
	* 说明: 看门狗使用示例
	****************************************************************************************/
	 
	#include <IWatchdog.h>
	 
	const int buttonPin = 2;
	 
	const int ledPin = LED_BUILTIN;
	 
	static int default_buttonState = LOW;
	 
	void setup() {
	    pinMode(ledPin, OUTPUT);
	    pinMode(buttonPin, INPUT_PULLDOWN);
	     
	    Serial.begin(9600);
	     
	    Serial.println(">程序开始运行。");
	     
	    default_buttonState = digitalRead(buttonPin); //读取按钮的默认状态
	     
	    IWatchdog.begin(10000000); // 将看门狗定时器初始化为10秒
	     
	             
	    // 若没有初始化,LED灯一直闪烁
	    if (!IWatchdog.isEnabled()) {
	         
	        Serial.println("看门狗启动失败.");
	         
	        while (1) {
	            digitalWrite(ledPin, HIGH);
	            delay(500);
	            digitalWrite(ledPin, LOW);
	            delay(500);
	        }
	    }
	     
	    Serial.println(">看门狗已启用:10s内无喂狗则重启。");
	}
	 
	void loop() {
	    // 检查当前按钮的状态
	    if(digitalRead(buttonPin) == default_buttonState){
	        delay(20);
	        if (digitalRead(buttonPin) == default_buttonState)
	        {
	            digitalWrite(ledPin, LOW);
	        } else {
	            digitalWrite(ledPin, HIGH);
	            Serial.println(" > 喂狗...");
	            //IWatchdog.set(6000000); //将超时改成6秒
	             
	            IWatchdog.reload(); //按下按钮是重新加载看门狗
	        }
	    }
	     
	}
						

附件:安装该软件库即可:IWatchdog.rar(点击下载)

验证结果

程序运行后开启看门狗,然后就开始检测按键动作,如果在10s周期内没有按键动作即没有喂狗就复位重新运行程序,因为要保证程序一直运行就需要在10s内进行按键按下动作保持喂狗,在实际应用中我们会在一定周期内使用软件代码进行喂狗操作防止程序跑飞。