——瘋殼·智能穿戴開發(fā)系列 整機(jī)功能代碼講解
整機(jī)代碼
1 軟件設(shè)計(jì)
本節(jié),我們將融合前面的藍(lán)牙收發(fā)、三軸記步、電量檢測(cè)、外部 Flash 讀寫、 心率檢測(cè)和 Led 屏幕顯示,完成手環(huán)的制作。
以上各個(gè)部分可以參考前面的章節(jié)。
首先,看一下我們手環(huán)的整個(gè)軟件主函數(shù)流程。
圖1
代碼運(yùn)行后,首先進(jìn)入初始化,初始化系統(tǒng)時(shí)鐘、外設(shè)和藍(lán)牙。除此之外, 還開啟了定時(shí)中斷和 GPIO 中斷。
我們的定時(shí)中斷每 10ms 觸發(fā)一次,用于 ADC 定時(shí)采集心率數(shù)據(jù),以及定時(shí)和時(shí)間更新。另外,由于一些原因,主函數(shù)中的步數(shù)讀取、電量檢測(cè)、心率檢測(cè)、屏幕顯示并不是每一次循環(huán)都執(zhí)行一次。這里的定時(shí)中斷也作為一個(gè)計(jì)時(shí)功能, 步數(shù) 20 秒更新一次,心率模塊 1 分鐘打開一次,亮屏無(wú)操作,5 秒熄滅屏幕。
這里的 GPIO 中斷主要是用來(lái)切換屏幕顯示頁(yè)面。
代碼1
從 GPIO 的中斷回調(diào)函數(shù)中可以看出,每次中斷只是把變量 Touch_release 置1,并沒(méi)有直接對(duì)顯示做任何處理,而在定時(shí)中斷的回調(diào)函數(shù)中,判斷變量Touch_release 的值,從而確定我們是長(zhǎng)時(shí)間按鍵,還是短時(shí)間按鍵,來(lái)完成相應(yīng)的處理。
在定時(shí)器中斷函數(shù)中,檢測(cè)到短時(shí)間觸摸,就打開顯示標(biāo)志位,同時(shí)設(shè)置顯示的頁(yè)面。
關(guān)于藍(lán)牙收發(fā)部分,我們?cè)谒{(lán)牙收發(fā)章節(jié)的基礎(chǔ)上進(jìn)行了修改,通過(guò)手機(jī)軟件 Wolverine BLE 發(fā)送 step 獲取步數(shù)、發(fā)送 cal 獲取卡路里、發(fā)送 heart 獲取心率值、發(fā)送 rtc 加時(shí)間完成手環(huán)的時(shí)間設(shè)置。下面是函數(shù)
代碼2.1
代碼2.2
每當(dāng)手環(huán)收到來(lái)自手機(jī)軟件 Wolverine BLE 的數(shù)據(jù)時(shí),首先從 Flash 中讀取步數(shù)和心率數(shù)據(jù)。然后對(duì)比接收到字符串。最后發(fā)送或設(shè)置相應(yīng)的數(shù)據(jù)。這里有一點(diǎn)要注意,我們從 Flash 中讀取到的是數(shù)據(jù),而通過(guò)藍(lán)牙發(fā)送的是字符串,就需要將數(shù)字轉(zhuǎn)換成字符就如同代碼中將一個(gè)位的數(shù)字加上 0x30,換算成該數(shù)字對(duì)應(yīng)的 ASCII 碼值。
對(duì)于發(fā)送給手機(jī)的卡路里數(shù)據(jù),其實(shí)是通過(guò)三軸步數(shù)計(jì)算過(guò)來(lái)的。消耗的卡
路里跟步數(shù)以及個(gè)人的體重等因素呈比例關(guān)系,大家可以根據(jù)自己的情況修改卡路里與步數(shù)之間的系數(shù)。
代碼3
關(guān)于其他部分代碼,請(qǐng)參考我們的我整機(jī)代碼例程。
2 實(shí)驗(yàn)現(xiàn)象
首先打開 SmartSnippets。
圖2
設(shè)置好 SmartSnippets 之后,點(diǎn)擊上圖中的 Open。
(1)點(diǎn)擊 Connect,連接我們的單片機(jī)。
圖3
(2)點(diǎn)擊 Erase,擦除 Flash。
圖4
(3)點(diǎn)擊 Browse,找到我們工程的.hex 文件。
圖5
(4)點(diǎn)擊 Burn,完成代碼下載。
圖 6
代碼下載完成之后,運(yùn)行代碼,能看到屏幕顯示時(shí)間。
圖 7
在時(shí)間顯示界面下,觸摸一下按鍵,會(huì)顯示心率。
圖8
在心率顯示界面下,觸摸一下按鍵,會(huì)顯示步數(shù)界面。
圖 9
再觸摸一下按鍵,就會(huì)進(jìn)入卡路里顯示界面。
圖10
打開手機(jī)軟件 Wolverine BLE。
(1)點(diǎn)擊 Connect。
圖11
(2)選擇我們的藍(lán)牙設(shè)備 DIALOG-PRFL。
圖12
我們發(fā)送 step,會(huì)獲取步數(shù)。
圖 13
發(fā)送 cal,會(huì)獲取卡路里。
圖14
發(fā)送 heart,會(huì)獲取心率。
圖15
文件下載請(qǐng)點(diǎn)擊:
9_(100%開源)藍(lán)牙心率防水運(yùn)動(dòng)手環(huán)_整機(jī)功能代碼講解.pdf
(1.86 MB)
2022-9-1 15:40 上傳
點(diǎn)擊文件名下載附件
下載積分: 積分 -1
|