資料介紹
描述
什么是心跳?
心跳是程序以某個給定頻率生成的“脈沖”,可用于表明實(shí)現(xiàn)它的總體代碼/應(yīng)用程序一切正常。心跳通常(但不總是)通過指示燈(例如 LED)的閃爍開/關(guān)來指示。當(dāng)指示燈閃爍('beating')時,我們知道代碼正在運(yùn)行,否則我們可能有問題需要調(diào)查。
在您的草圖中添加心跳指示器是一種簡單且低開銷的方式,可以提供一種可見的方式來證明您的代碼正在運(yùn)行,特別是如果它是一個通常提供很少操作可見性的應(yīng)用程序。例如,監(jiān)控傳感器并僅在可能達(dá)到閾值時發(fā)出警報的草圖等。在這些情況下,代碼正在運(yùn)行是令人放心的。
心跳代碼和組件由什么組成?
實(shí)現(xiàn)可見心跳有兩個部分:
1. 提供心跳可見指示的硬件組件,以及
2.軟件驅(qū)動硬件。
為了讓生活變得如此簡單,本文提供的心跳實(shí)現(xiàn) 不需要任何硬件組件,除了兼容 Arduino 的微控制器,因?yàn)槲覀儗⑹褂迷S多此類板通用的內(nèi)置 LED。這些板在數(shù)字引腳 13 上有一個內(nèi)置 LED(“LED_BUILTIN”),可以直接訪問。因此,通過使用此功能,我們根本不需要任何其他硬件組件。這只會讓我們專注于心跳軟件。
心跳軟件/代碼
心跳軟件可以分為四個部分來考慮:
1.它需要操作的變量的聲明/定義語句,
2. heart_beat()函數(shù)的聲明,
3.心跳的設(shè)置,以及
4. 在需要的最終用戶代碼中的任何地方調(diào)用心跳。
心跳代碼被設(shè)計為非阻塞函數(shù)('heart_beat()'),它可以包含在最終用戶代碼中的任何位置的任意位置。至少,假設(shè)主程序循環(huán)被設(shè)計為重復(fù),heart_beat() 調(diào)用應(yīng)該出現(xiàn)在該代碼部分的某個位置,例如在主循環(huán)的開始處。
讓我們看看心跳代碼的每一位
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
心跳代碼可以通過修改上述聲明和定義之一來適應(yīng)最終用戶的需求,如下所示:
內(nèi)部或外部 LED 指示器- 如果不使用內(nèi)置微控制器 LED,heart_beat_pin
則應(yīng)將定義“”設(shè)置為用于外部 LED 的數(shù)字引腳號。實(shí)際上,開箱即用,代碼將使用引腳 13 上的內(nèi)置 LED(常量 LED_BUILTIN),從而避免任何其他硬件組件或布線。
改變心跳頻率- 可以通過將變量“ heart_beat_freq
”預(yù)設(shè)為所需的毫秒數(shù)來設(shè)置心跳運(yùn)行的頻率。請注意,LED 點(diǎn)亮和熄滅的時間將是預(yù)設(shè)頻率的二分之一。例如,如果預(yù)設(shè)頻率為 1 赫茲或 1000 毫秒,則心跳 LED 將保持亮起 500 毫秒并熄滅 500 毫秒,即各半秒。
所有其他變量都由心跳代碼在內(nèi)部使用,用戶不可定義。
2. heart_beat() 函數(shù)
為了簡單起見,心跳代碼被實(shí)現(xiàn)為一個非阻塞、簡單的函數(shù),名為“heart_beat”。它沒有參數(shù),類型為 void。
函數(shù)如下:
//
// 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
}
}
只需在某個合適的位置將它添加到您的代碼中,并確保它至少在主循環(huán)部分中被調(diào)用。
3.心跳的設(shè)置
心跳代碼在 setup() 函數(shù)中初始化,如下所示:
// 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
最終用戶無需在此處執(zhí)行或修改任何內(nèi)容,只需將代碼包含在 setup() 函數(shù)中即可。
4.調(diào)用心跳
為了運(yùn)行心跳,定期調(diào)用函數(shù)“heart_beat()”是必要且必不可少的。它可以插入總體最終用戶應(yīng)用程序代碼中的任何位置,但通常最好在代碼的主循環(huán)部分插入一個調(diào)用,以便它定期循環(huán)。如果是主循環(huán)代碼沒有自動循環(huán),那么 heart_beat() 函數(shù)調(diào)用可能需要包含在代碼中的其他常規(guī)訪問點(diǎn)。該功能可以根據(jù)需要重復(fù)多次,而不會對心跳的正常運(yùn)行產(chǎn)生任何影響。
一個主循環(huán)示例是:
void loop() {
heart_beat();
// add your other code here...
}
就是這樣!保持手頭的技術(shù)并將草圖作為標(biāo)準(zhǔn)特征包含在草圖中。
進(jìn)一步閱讀
您可能還會發(fā)現(xiàn)同一作者的這些貢獻(xiàn)有趣且有用:
- Music & Lights Workbench旨在向計算機(jī)編程新手介紹該主題,使用簡單的命令和炫酷的效果。該方法是導(dǎo)師和學(xué)生之一
- 一個靈活、可擴(kuò)展的庫 (ez_SIPO8_lib),支持多個串行輸入/串行輸出 IC、74HC595 的實(shí)現(xiàn),無論是單獨(dú)還是級聯(lián)組,最多 255 個 IC(2040 個輸出引腳)
- 通用開關(guān)庫 (ez_switch_lib),適用于大多數(shù)開關(guān)類型和布線方案,并包含新穎的功能
- 理解和使用按鈕開關(guān),基礎(chǔ)知識 - button開關(guān),一個簡單但通常很棘手的套件。本教程提供了實(shí)現(xiàn)簡單按鈕開關(guān)的詳細(xì)信息,可以靈活地探索電路設(shè)計、不同讀取方法和去抖動方面的差異。
- 中斷驅(qū)動按鈕開關(guān) -將按鈕開關(guān)綁定到外部中斷的方法和示例。
- 撥動開關(guān) -如何可靠地讀取撥動式開關(guān)。
- 按鈕和燈游戲 -使用按鈕開關(guān)和 LED 的樂趣。
- External Interrupts,一個支持并發(fā)異步多中斷的通用框架。配置多個具有不同特性的外部中斷并添加代碼以提供中斷后異步處理。
- Programmatic Timed Reminder Alerting,一種用于過去和實(shí)時異步警報的編程框架。定義任意數(shù)量的提醒警報(亞秒級到數(shù)小時)并異步處理。
?
- 在VS上配置MPI教程(含代碼) 1次下載
- 在STVDCOSMIC在RAM中運(yùn)行代碼stm8 ram中運(yùn)行程序
- MATLAB在電路中的應(yīng)用PPT課件下載 31次下載
- MATLAB實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN的源代碼 16次下載
- 如何利用NFC保護(hù)您的系統(tǒng)?資料下載
- T9輸入法在嵌入式設(shè)備中的實(shí)現(xiàn)方案資料下載
- 使用C語言實(shí)現(xiàn)51單片機(jī)中的PID算法代碼免費(fèi)下載
- STM32開發(fā)板資料之例程的實(shí)現(xiàn)和源代碼 210次下載
- 用于MPLAB X IDE代碼性能分析插件的工作原理和代碼性能分析參考
- 4個重要算法C語言實(shí)現(xiàn)源代碼 12次下載
- 基于公平心跳超時容錯機(jī)制 0次下載
- Matlab代碼在PLC控制系統(tǒng)中的實(shí)現(xiàn)方法研究_孫立平 1次下載
- 基于WindowsSocket的網(wǎng)絡(luò)通信中的心跳機(jī)制原理及其實(shí)現(xiàn) 6次下載
- 基于心跳消息的VANET安全應(yīng)用性能分析 26次下載
- 數(shù)控專用加工代碼O代碼的功能實(shí)現(xiàn)
- OpenCV圖像識別C++代碼 1046次閱讀
- JK觸發(fā)器與T觸發(fā)器的Verilog代碼實(shí)現(xiàn)和RTL電路實(shí)現(xiàn) 3736次閱讀
- 代碼生成器配置和軟件UART的實(shí)現(xiàn) 1325次閱讀
- MCU之SWM在KEIL環(huán)境中實(shí)現(xiàn)代碼在RAM中運(yùn)行 2921次閱讀
- 在Rhino引擎中實(shí)現(xiàn)暫停效果 719次閱讀
- 在單片機(jī)中使用的RTOS代碼框架 992次閱讀
- 在MATLAB/simulink中建模時的兩種不同實(shí)現(xiàn)方式 1719次閱讀
- 抽樣在Python中是如何實(shí)現(xiàn)的 1085次閱讀
- leader選舉在kubernetes controller中是如何實(shí)現(xiàn)的 1547次閱讀
- RJGT101在實(shí)際應(yīng)用中硬件參考電路、軟件參考代碼的簡述 2460次閱讀
- 如何實(shí)現(xiàn)計算機(jī)視覺的目標(biāo)檢測10行Python代碼幫你實(shí)現(xiàn) 2972次閱讀
- 如何判斷大小端?大小端如何使用代碼實(shí)現(xiàn)? 5787次閱讀
- 伺服定位控制在PLC中實(shí)現(xiàn)和在伺服控制器中實(shí)現(xiàn)解答 1w次閱讀
- 基于AD620芯片的心跳速率檢測 1w次閱讀
- 快速傅里葉變換FFT的C程序代碼實(shí)現(xiàn) 6w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多