如何使用Shellminator和Commander-API通過交互式實(shí)時(shí)控制增強(qiáng)您的Arduino項(xiàng)目
掃描二維碼
隨時(shí)隨地手機(jī)看文章
我們中的許多人都面臨著調(diào)試Arduino板的挑戰(zhàn),這通常很麻煩。此外,對(duì)變量或設(shè)置進(jìn)行小的調(diào)整通常需要多次刷新固件,從而減慢開發(fā)和測(cè)試速度。幸運(yùn)的是,存在一種更敏捷、更有效的解決方案,我將在本指南中介紹它。
在這個(gè)簡(jiǎn)短的教程中,我們將使用幾行代碼創(chuàng)建一個(gè)交互式終端,與任何Arduino板兼容。這種方法的主要優(yōu)點(diǎn)是它的交互性——允許實(shí)時(shí)訪問系統(tǒng)資源,如繼電器、傳感器或內(nèi)部變量,而無需重新啟動(dòng)或重新編程電路板。
稍后,我們還將介紹如何通過添加自定義命令來擴(kuò)展此終端接口,從而對(duì)Arduino系統(tǒng)進(jìn)行更高級(jí)和靈活的控制。
第一步是使用Arduino IDE Library Manager安裝兩個(gè)必要的庫。雖然手動(dòng)安裝是可能的,特別是在公司環(huán)境中,但Library Manager提供了一種更方便和簡(jiǎn)化的方法。
始終建議使用這些庫的最新可用版本,以確保兼容性并利用最新的特性和錯(cuò)誤修復(fù)。
在Shellminator庫提供的示例中,示例200是一個(gè)很好的起點(diǎn)。打開這個(gè)示例并創(chuàng)建一個(gè)副本,因?yàn)槲覀儗⑹褂盟鳛槲覀冺?xiàng)目的基礎(chǔ)。在進(jìn)行任何修改之前,編譯并上傳代碼到您的板以確保一切正常運(yùn)行是一個(gè)很好的做法。
上傳后,您可以使用終端仿真器連接到串口:
?Windows: PuTTY
?Mac/Linux: screen
將波特率設(shè)置為115200并打開連接。如果一切設(shè)置正常,重置板或按Ctrl + L應(yīng)該顯示橫幅。此外,請(qǐng)嘗試輸入幫助命令。
該命令將列出系統(tǒng)當(dāng)前支持的所有可用快捷方式和內(nèi)置命令。
目前,示例提供的默認(rèn)命令對(duì)我們的需求并不是特別有用。為了使系統(tǒng)更實(shí)用,讓我們修改cat命令,使其執(zhí)行一個(gè)有意義的功能。例如,我們可以將其轉(zhuǎn)換為一個(gè)命令,該命令打印自系統(tǒng)啟動(dòng)以來經(jīng)過的毫秒數(shù)。
為了反映這一變化,將命令重命名為millis是有意義的。這需要在代碼中做一些修改:
在代碼的頂部,更新回調(diào)函數(shù)原型并重命名API_tree中相應(yīng)的字段。
在代碼的底部,重命名回調(diào)函數(shù)并修改其實(shí)現(xiàn),這樣它就不會(huì)打印文本字符串,而是輸出Arduino millis()函數(shù)的結(jié)果。
通過這些更改,該命令將提供以毫秒為單位的實(shí)時(shí)系統(tǒng)正常運(yùn)行時(shí)間,使其成為一個(gè)有用的調(diào)試工具。
如果我們現(xiàn)在測(cè)試我們的修改,我們應(yīng)該看到輸入millis命令返回當(dāng)前以毫秒為單位的系統(tǒng)正常運(yùn)行時(shí)間。這演示了交互式終端如何提供對(duì)系統(tǒng)數(shù)據(jù)的實(shí)時(shí)訪問。
考慮一下,與通過串行監(jiān)視器不斷打印調(diào)試消息相比,這種方法要方便得多。您可以簡(jiǎn)單地為所需的特定信息創(chuàng)建查詢命令,而不是使用連續(xù)的日志將輸出弄得亂七八糟。然后,您可以根據(jù)需要請(qǐng)求數(shù)據(jù),無需修改或重新啟動(dòng)系統(tǒng)。
到目前為止,我們所介紹的只是對(duì)Shellminator和Commander-API庫所能提供的功能的一小部分了解。這是值得花時(shí)間去通過Shellminator文檔,因?yàn)樗橇钊穗y以置信的詳細(xì),易于遵循,并充滿了交互式的例子,以幫助您快速入門。
本文編譯自hackster.io