电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>在您的代码中实现心跳

在您的代码中实现心跳

2023-02-08 | zip | 0.02 MB | 次下载 | 免费

资料介绍

描述

什么是心跳?

心跳是程序以某个给定频率生成的“脉冲”,可用于表明实现它的总体代码/应用程序一切正常。心跳通常(但不总是)通过指示灯(例如 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...
}

就是这样!保持手头的技术并将草图作为标准特征包含在草图中。

进一步阅读

您可能还会发现同一作者的这些贡献有趣且有用:

  • External Interrupts,一个支持并发异步多中断的通用框架。配置多个具有不同特性的外部中断并添加代码以提供中断后异步处理。
  • Programmatic Timed Reminder Alerting,一种用于过去和实时异步警报的编程框架。定义任意数量的提醒警报(亚秒级到数小时)并异步处理。

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费