衡阳派盒市场营销有限公司

電子發燒友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次下載  |  免費
世界德州扑克大赛| 百家乐英皇赌场娱乐网规则| 诚信百家乐官网平台| 大发888bet亚洲lm0| 百家乐开发公司| 丹东市| 大发888创建账号翻译| 百家乐连赢的策略| 百家乐官网必胜法hk| 顶级赌场官网| 温州市百家乐ktv招聘| 百家乐官网旺门打法| 金都娱乐场| 天堂鸟百家乐的玩法技巧和规则 | 百家乐官网送1000| 新利国际网站| KK百家乐的玩法技巧和规则| 澳门百家乐官网游戏| 博九娱乐网| 百家乐翻天超清| 百家乐庄闲最佳打法| 百家乐官网黄金城游戏大厅| 大连市| 大发888城官方下载| 百家乐发脾机| 做生意开店风水| 百家乐官网园sun811| 天天乐娱乐城官网| 大发888线上娱乐城百家乐| 百家乐小钱赢钱| 杨筠松 24山 土| 百家乐官网赢谷输缩| 浦东新区| 体球网足球即时比分| 皇冠网百家乐阿| 赌博百家乐秘籍| 新世纪百家乐官网的玩法技巧和规则 | 黄金城百家乐官网手机版| 百家乐官网游戏开发软件| 全球最大赌博网站| 百家乐赢足球博彩皇冠|