资料介绍
描述
什么是心跳?
心跳是程序以某个给定频率生成的“脉冲”,可用于表明实现它的总体代码/应用程序一切正常。心跳通常(但不总是)通过指示灯(例如 LED)的闪烁开/关来指示。当指示灯闪烁('beating')时,我们知道代码正在运行,否则我们可能有问题需要调查。
在您的草图中添加心跳指示器是一种简单且低开销的方式,可以提供一种可见的方式来证明您的代码正在运行,特别是如果它是一个通常提供很少操作可见性的应用程序。例如,监控传感器并仅在可能达到阈值时发出警报的草图等。在这些情况下,代码正在运行是令人放心的。
心跳代码和组件由什么组成?
实现可见心跳有两个部分:
1. 提供心跳可见指示的硬件组件,以及
2.软件驱动硬件。
为了让生活变得如此简单,本文提供的心跳实现 不需要任何硬件组件,除了兼容 Arduino 的微控制器,因为我们将使用许多此类板通用的内置 LED。这些板在数字引脚 13 上有一个内置 LED(“LED_BUILTIN”),可以直接访问。因此,通过使用此功能,我们根本不需要任何其他硬件组件。这只会让我们专注于心跳软件。
心跳软件/代码
心跳软件可以分为四个部分来考虑:
1.它需要操作的变量的声明/定义语句,
2. heart_beat()函数的声明,
3.心跳的设置,以及
4. 在需要的最终用户代码中的任何地方调用心跳。
心跳代码被设计为非阻塞函数('heart_beat()'),它可以包含在最终用户代码中的任何位置的任意位置。至少,假设主程序循环被设计为重复,heart_beat() 调用应该出现在该代码部分的某个位置,例如在主循环的开始处。
让我们看看心跳代码的每一位
1.声明和定义语句
#define heart_beat_pin LED_BUILTIN // digital pin for heart beat LED
long unsigned heart_beat_freq = 1000; // time(milliseconds) of heart beat frequency
long unsigned heart_beat_on_off_time; // the time the LED is on and off - 1/2 frequency
long unsigned last_heart_beat_time; // time in milliseconds of last heart beat status change
bool heart_beat_status = HIGH; // current status of heart beat, start high
心跳代码可以通过修改上述声明和定义之一来适应最终用户的需求,如下所示:
内部或外部 LED 指示器- 如果不使用内置微控制器 LED,heart_beat_pin
则应将定义“”设置为用于外部 LED 的数字引脚号。实际上,开箱即用,代码将使用引脚 13 上的内置 LED(常量 LED_BUILTIN),从而避免任何其他硬件组件或布线。
改变心跳频率- 可以通过将变量“ heart_beat_freq
”预设为所需的毫秒数来设置心跳运行的频率。请注意,LED 点亮和熄灭的时间将是预设频率的二分之一。例如,如果预设频率为 1 赫兹或 1000 毫秒,则心跳 LED 将保持亮起 500 毫秒并熄灭 500 毫秒,即各半秒。
所有其他变量都由心跳代码在内部使用,用户不可定义。
2. heart_beat() 函数
为了简单起见,心跳代码被实现为一个非阻塞、简单的函数,名为“heart_beat”。它没有参数,类型为 void。
函数如下:
//
// Function handles the heart beat cycle.
// May be called from anywhere, but at least every main loop cycle.
//
void heart_beat() {
if (millis() - last_heart_beat_time >= heart_beat_on_off_time) {
// time to swap status of the heart beat LED and update it
last_heart_beat_time = millis();
heart_beat_status = !heart_beat_status; // invert current heart beat status value
digitalWrite(heart_beat_pin, heart_beat_status); // update LED with new status
}
}
只需在某个合适的位置将它添加到您的代码中,并确保它至少在主循环部分中被调用。
3.心跳的设置
心跳代码在 setup() 函数中初始化,如下所示:
// setup heart beat
pinMode(heart_beat_pin, OUTPUT);
heart_beat_on_off_time = heart_beat_freq / 2; // LED is on and off at 1/2 frequency time
// end of heart beat setup
最终用户无需在此处执行或修改任何内容,只需将代码包含在 setup() 函数中即可。
4.调用心跳
为了运行心跳,定期调用函数“heart_beat()”是必要且必不可少的。它可以插入总体最终用户应用程序代码中的任何位置,但通常最好在代码的主循环部分插入一个调用,以便它定期循环。如果是主循环代码没有自动循环,那么 heart_beat() 函数调用可能需要包含在代码中的其他常规访问点。该功能可以根据需要重复多次,而不会对心跳的正常运行产生任何影响。
一个主循环示例是:
void loop() {
heart_beat();
// add your other code here...
}
就是这样!保持手头的技术并将草图作为标准特征包含在草图中。
进一步阅读
您可能还会发现同一作者的这些贡献有趣且有用:
- Music & Lights Workbench旨在向计算机编程新手介绍该主题,使用简单的命令和炫酷的效果。该方法是导师和学生之一
- 一个灵活、可扩展的库 (ez_SIPO8_lib),支持多个串行输入/串行输出 IC、74HC595 的实现,无论是单独还是级联组,最多 255 个 IC(2040 个输出引脚)
- 通用开关库 (ez_switch_lib),适用于大多数开关类型和布线方案,并包含新颖的功能
- 理解和使用按钮开关,基础知识 - button开关,一个简单但通常很棘手的套件。本教程提供了实现简单按钮开关的详细信息,可以灵活地探索电路设计、不同读取方法和去抖动方面的差异。
- 中断驱动按钮开关 -将按钮开关绑定到外部中断的方法和示例。
- 拨动开关 -如何可靠地读取拨动式开关。
- 按钮和灯游戏 -使用按钮开关和 LED 的乐趣。
- External Interrupts,一个支持并发异步多中断的通用框架。配置多个具有不同特性的外部中断并添加代码以提供中断后异步处理。
- Programmatic Timed Reminder Alerting,一种用于过去和实时异步警报的编程框架。定义任意数量的提醒警报(亚秒级到数小时)并异步处理。
- 在VS上配置MPI教程(含代码) 1次下载
- 在STVDCOSMIC在RAM中运行代码stm8 ram中运行程序
- MATLAB在电路中的应用PPT课件下载 31次下载
- MATLAB实现卷积神经网络CNN的源代码 16次下载
- 如何利用NFC保护您的系统?资料下载
- T9输入法在嵌入式设备中的实现方案资料下载
- 使用C语言实现51单片机中的PID算法代码免费下载
- STM32开发板资料之例程的实现和源代码 210次下载
- 用于MPLAB X IDE代码性能分析插件的工作原理和代码性能分析参考
- 4个重要算法C语言实现源代码 12次下载
- 基于公平心跳超时容错机制 0次下载
- Matlab代码在PLC控制系统中的实现方法研究_孙立平 1次下载
- 基于WindowsSocket的网络通信中的心跳机制原理及其实现 6次下载
- 基于心跳消息的VANET安全应用性能分析 26次下载
- 数控专用加工代码O代码的功能实现
- OpenCV图像识别C++代码 1046次阅读
- JK触发器与T触发器的Verilog代码实现和RTL电路实现 3736次阅读
- 代码生成器配置和软件UART的实现 1325次阅读
- MCU之SWM在KEIL环境中实现代码在RAM中运行 2921次阅读
- 在Rhino引擎中实现暂停效果 719次阅读
- 在单片机中使用的RTOS代码框架 992次阅读
- 在MATLAB/simulink中建模时的两种不同实现方式 1719次阅读
- 抽样在Python中是如何实现的 1085次阅读
- leader选举在kubernetes controller中是如何实现的 1547次阅读
- RJGT101在实际应用中硬件参考电路、软件参考代码的简述 2460次阅读
- 如何实现计算机视觉的目标检测10行Python代码帮你实现 2972次阅读
- 如何判断大小端?大小端如何使用代码实现? 5787次阅读
- 伺服定位控制在PLC中实现和在伺服控制器中实现解答 1w次阅读
- 基于AD620芯片的心跳速率检测 1w次阅读
- 快速傅里叶变换FFT的C程序代码实现 6w次阅读
下载排行
本周
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2联想E46L DAOLL6笔记本电脑图纸
- 1.10 MB | 2次下载 | 5 积分
- 3MATLAB绘图合集
- 27.12 MB | 2次下载 | 5 积分
- 4PR735,使用UCC28060的600W交错式PFC转换器
- 540.03KB | 1次下载 | 免费
- 5UCC38C42 30W同步降压转换器参考设计
- 428.07KB | 1次下载 | 免费
- 6DV2004S1/ES1/HS1快速充电开发系统
- 2.08MB | 1次下载 | 免费
- 7模态分解合集matlab代码
- 3.03 MB | 1次下载 | 2 积分
- 8美的电磁炉维修手册大全
- 1.56 MB | 1次下载 | 5 积分
本月
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 15次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 5STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 6HY12P65/HY12P66数字万用表芯片规格书
- 0.69 MB | 6次下载 | 免费
- 7华瑞昇CR216芯片数字万用表规格书附原理图及校正流程方法
- 0.74 MB | 6次下载 | 3 积分
- 8华瑞昇CR215芯片数字万用表原理图
- 0.21 MB | 5次下载 | 3 积分
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多