健康計步器
1.1專題介紹:健康計步器
對於健康觀念逐漸盛行的世代,運動變成大家常常掛在嘴邊的活動,而步行是最多人選擇及推薦的方式,因為不需要另外花時間,也不太會受到場地限制,任何時候都可以實施。為了讓自己能夠記錄每天所走的步數,而製作出屬於自己的健康計步器,不僅可以節省費用,還可隨時隨地使用,一舉兩得。
1.2 專題重點
※加速度感測器的應用
※透過延遲的判斷調整加速度感測器靈敏度
2. 專題實作:健康計步器
2.1 專題總覽
「開始」鈕:開始啟動計步器。
「暫停」鈕:暫停計算步數及時間,同時「暫停」鈕變為「繼續」鈕。
「繼續」鈕:繼續將計步器啟動。
「停止」鈕:停止計步器使用。
停止計步器後,系統會將今日行走步數統計在下方。
「結束程式」鈕及行動裝置上的「返回」鍵:彈出確認結束應用程式對話方塊。
「確定結束」鈕:關閉程式。
「取消」鈕:回到主頁面。
2.2 專題建置
1.新增「專題名稱:pedometer」的專案
進入App Inventor的Designer視窗。
(註:專案名稱開頭不能是數字;專案名稱中可用底線,但是不能使用空格或其他特殊字元)
在視窗右側的屬性(Properties)中,將對齊方式(AlignHorizontal)選取置中(Center),這是為了讓所有的物件會以中心線排列。
Screen1屬性修改:AlignHorizontal:center
2.3介面配置
本專題只有一個主頁面,頁面的元件都放在一個VerticalArrangement元件內。
主頁面
主頁面的所有元件都位於VerArrPageHome元件裡面。
1.
增加元件主頁面,並修改其屬性
點選視窗左側的元件面板(Palette)裡面的頁面布局(Layout),選擇垂直排列(VerticalArrangement)元件,按住滑鼠不放將其拖曳至中間的頁面預覽(Viewer)視窗中。接著點選元件庫(Components)下方的重新命名(Rename),將其名字改為VerArrPageHome。在視窗右側的屬性(Properties)中,將水平對齊方式(AlignHorizontal)及垂直對齊方式(AlignVertical)屬性設定為center,寬度(Width)屬性設定為 Fill parent。
新增頁面:Palette/ Layout/ VerticalArrangement
重新命名:更改成VerArrPageHome
修改屬性:Properties/ AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
2.
增加元件Label1(標題字串),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗VerArrPageHome裡。在視窗右側的屬性(Properties)中,將文字顏色(BackgroundColor)改成粉紅色(Pink),字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成40,文字(Text)屬性輸入「我的計步器」,寬度(Width)屬性設定為 Fill parent。
新增文字:Palette/ User Interface/ Label
修改屬性:Properties/ FontBold:勾選
FontSize:40
Text:我的計步器
TextColor:Pink
Width:Fill parent
3. 增加元件Label2(步行時間字串),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement1裡。在視窗右側的屬性(Properties)中,將字體大小(FontSize)屬性改成24,文字(Text)屬性輸入「步行時間」,對齊方式(TextAlignment)屬性設定為Center,寬度(Width)屬性設定為 Fill parent。
新增文字:Palette/ User Interface/ Label
更改屬性:Properties/ FonSize:24
Text:步行時間
TextAlignment:Center
Width:Fill parent
4. 增加元件HorizontalArrangement1(水平排列1),並修改其屬性
在視窗左側的元件面板(Palette)中,點選頁面布局(Layout)中的水平排列(HorizontalArrangement)元件,將其拖曳至中間的頁面預覽(Viewer)視窗VerArrPageHome裡LabelStep的下方。在視窗右側的屬性(Properties)中,將水平對齊方式(AlignHorizontal)及垂直對齊方式(AlignVertical)屬性設定為center,寬度(Width)屬性設定為 Fill parent。
新增框架:Palette/ Layout/ HorizontalArrangement
更改屬性:Properties/ AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
5. 增加元件Hour(步行時間-小時),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement1裡Label2的右方。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成18,文字(Text)屬性輸入「0」,對齊方式(TextAlignment)屬性設定為left,字體顏色(TextColor)屬性設定為Orange,寬度(Width)屬性設定為 Fill parent。
新增文字:Palette/ User Interface/ Label
更改屬性:Properties/ FontBold:勾選
FontSize:18
Text:0
TextAlignment:left
TextColor:Orange
Width:Fill parent
6. 增加元件LabelHour(「時」字串),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement1裡Label2的右方。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成18,文字(Text)屬性輸入「時」,對齊方式(TextAlignment)屬性設定為left,字體顏色(TextColor)屬性設定為Orange,寬度(Width)屬性設定為 Fill parent。
新增文字:Palette/ User Interface/ Label
更改屬性:Properties/ FontBold:勾選
FontSize:18
Text:時
TextAlignment:left
TextColor:Orange
Width:Fill parent
7. 增加元件Min(步行時間-分鐘),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement1裡Label2的右方。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成18,文字(Text)屬性輸入「0」,對齊方式(TextAlignment)屬性設定為left,字體顏色(TextColor)屬性設定為Orange,寬度(Width)屬性設定為 Fill parent。
新增文字:Palette/ User Interface/ Label
更改屬性:Properties/ FontBold:勾選
FontSize:18
Text:0
TextAlignment:left
TextColor:Orange
Width:Fill parent
8. 增加元件LabelMinute(「分」字串),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement1裡Label2的右方。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成18,文字(Text)屬性輸入「分」,對齊方式(TextAlignment)屬性設定為left,字體顏色(TextColor)屬性設定為Orange,寬度(Width)屬性設定為 Fill parent。
新增文字:Palette/ User Interface/ Label
更改屬性:Properties/ FontBold:勾選
FontSize:18
Text:分
TextAlignment:left
TextColor:Orange
Width:Fill parent
9. 增加元件Sec(步行時間-秒),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement1裡Label2的右方。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成18,文字(Text)屬性輸入「0」,對齊方式(TextAlignment)屬性設定為left,字體顏色(TextColor)屬性設定為Orange,寬度(Width)屬性設定為 Fill parent。
新增文字:Palette/ User Interface/ Label
更改屬性:Properties/ FontBold:勾選
FontSize:18
Text:0
TextAlignment:left
TextColor:Orange
Width:Fill parent
10. 增加元件LabelSec(「秒」字串),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement1裡Label2的右方。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成18,文字(Text)屬性輸入「秒」,對齊方式(TextAlignment)屬性設定為left,字體顏色(TextColor)屬性設定為Orange,寬度(Width)屬性設定為 Fill parent。
新增文字:Palette/ User Interface/ Label
更改屬性:Properties/ FontBold:勾選
FontSize:18
Text:秒
TextAlignment:left
TextColor:Orange
Width:Fill parent
11.
增加元件LabelStep(行走步數),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement1的下方。接著點選元件庫(Components)下方的重新命名(Rename),將其名字改為LabelStep。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成70,文字(Text)屬性輸入「0」,對齊方式(TextAlignment)屬性設定為center,寬度(Width)屬性設定為 Fill parent。
新增文字:Palette/ User Interface/ Label
重新命名:更改成LabelStep
更改屬性:Properties/ FontBold:勾選
FontSize:70
Text:0
TextAlignment:Center
TextColor:Blue
Width:Fill parent
12.增加元件HorizontalArrangement2(水平排列2),並修改其屬性
在視窗左側的元件面板(Palette)中,點選頁面布局(Layout)中的水平排列(HorizontalArrangement)元件,將其拖曳至中間的頁面預覽(Viewer)視窗VerArrPageHome裡HorizontalArrangement1的下方。在視窗右側的屬性(Properties)中,將水平對齊方式(AlignHorizontal)及垂直對齊方式(AlignVertical)屬性設定為center,寬度(Width)屬性設定為 Fill parent。
新增框架:Palette/ Layout/ HorizontalArrangement
更改屬性:Properties/ AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
13. 增加元件ButtonStart(開始按鈕)
,並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的按鈕(Button)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement2裡。接著點選元件庫(Components)下方的重新命名(Rename),將其名字改為ButtonStart。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成20,文字(Text)屬性輸入「開始」,對齊方式(TextAlignment)屬性設定為center,寬度(Width)屬性設定為 Fill parent。
新增按鈕:Palette/ User Interface/ Button
重新命名:更改成ButtonStart
更改屬性:Properties/ FontBold:勾選
FontSize:20
Text:開始
TextAlignment:Center
Width:Fill parent
14. 增加元件ButtonPause(暫停按鈕)
,並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的按鈕(Button)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement2裡ButtonStart的右方。接著點選元件庫(Components)下方的重新命名(Rename),將其名字改為ButtonPause。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成20,文字(Text)屬性輸入「開始」,對齊方式(TextAlignment)屬性設定為center,寬度(Width)屬性設定為 Fill parent。
新增按鈕:Palette/ User Interface/ Button
重新命名:更改成ButtonPause
更改屬性:Properties/ FontBold:勾選
FontSize:20
Text:開始
TextAlignment:Center
Width:Fill parent
15. 增加元件ButtonEnd(停止按鈕) ,並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的按鈕(Button)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement2裡ButtonPause的右方。接著點選元件庫(Components)下方的重新命名(Rename),將其名字改為ButtonEnd。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成20,文字(Text)屬性輸入「停止」,對齊方式(TextAlignment)屬性設定為center,寬度(Width)屬性設定為 Fill parent。
新增按鈕:Palette/ User Interface/ Button
重新命名:更改成ButtonEnd
更改屬性:Properties/ FontBold:勾選
FontSize:20
Text:停止
TextAlignment:Center
Width:Fill parent
16. 增加元件HorizontalArrangement3(水平排列3),並修改其屬性
在視窗左側的元件面板(Palette)中,點選頁面布局(Layout)中的水平排列(HorizontalArrangement)元件,將其拖曳至中間頁面預覽(Viewer)視窗VerArrPageHome裡HorizontalArrangement2的下方。在視窗右側的屬性(Properties)中,將水平對齊(AlignHorizontal)及垂直對齊(AlignVertical)設定為center,寬度(Width)設定為 Fill parent。
新增框架:Palette/ Layout/ HorizontalArrangement
更改屬性:Properties/ AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
17. 增加元件Label3(累積步數字串),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement2下面。在視窗右側的屬性(Properties)中,將字體大小(FontSize)屬性改成24,文字(Text)屬性輸入「累積步數」,對齊方式(TextAlignment)屬性設定為Center,寬度(Width)屬性設定為Fill parent。
新增文字:Palette/ User Interface/ Label
更改屬性:Properties/ FontBold:勾選
FontSize:24
Text:累積步數
TextAlignment:Center
Width:Fill parent
18. 增加元件LabelToday(步數),並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的文字(Label)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement3裡。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成20,文字(Text)屬性輸入「0」,對齊方式(TextAlignment)屬性設定為Center,字體顏色(TextColor)屬性設定為Blue,寬度(Width)屬性設定為Fill parent。
新增文字:Palette/ User Interface/ Label
更改屬性:Properties/ FontBold:勾選
FontSize:20
Text:0
TextAlignment:Center
TextColor:Blue
Width:Fill parent
19. 增加元件HorizontalArrangement4(主頁面之水平排列4),並修改其屬性
在視窗左側的元件面板(Palette)中,點選頁面布局(Layout)中的水平排列(HorizontalArrangement)元件,將其拖曳至中間的頁面預覽(Viewer)視窗VerArrPageHome裡HorizontalArrangemen3的下方。在視窗右側的屬性(Properties)中,將水平對齊方式(AlignHorizontal)及垂直對齊方式(AlignVertical)屬性設定為center,寬度(Width)屬性設定為Fill parent。
新增框架:Palette/ Layout/ HorizontalArrangement
更改屬性:Properties/ AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
20. 增加元件ButtonProgEnd (主頁面之結束程式按鈕) ,並修改其屬性
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的按鈕(Button)元件,將其拖曳至中間的頁面預覽(Viewer)視窗HorizontalArrangement4裡。接著點選元件庫(Components)下方的重新命名(Rename),將其名字改為ButtonProgEnd。在視窗右側的屬性(Properties)中,將字體加粗(FontBold)屬性打勾,字體大小(FontSize)屬性改成18,文字(Text)屬性輸入「離開計步器」,對齊方式(TextAlignment)屬性設定為center,寬度(Width)屬性設定為 Fill parent。
新增按鈕:Palette/ User Interface/ Button
重新命名:更改成ButtonProgEnd
更改屬性:Properties/ FontBold:勾選
FontSize:18
Text:離開計步器
TextAlignment:Center
Width:Fill parent
Non-visible components元件
21. 增加元件Clock1(取得系統日期及計時),並修改其屬性
在視窗左側的元件面板(Palette)中,點選Sensors中的時鐘(Clock)元件,將其拖曳至中間的畫面預覽(Viewer)視窗中。在視窗右側的屬性(Properties)中,將TimerEnabled屬性取消勾選。
新增Clock1: Palette/ Sensor/ Clock
更改屬性:Properties/
TimerEnabled:取消勾選
22. 增加元件AccelerometerSensor1(取得震動情況),並修改其屬性
在視窗左側的元件面板(Palette)中,點選Sensors中的加速度感測器(AccelerometerSensor)元件,將其拖曳至中間的畫面預覽(Viewer)視窗中。在視窗右側的屬性(Properties)中,將Enabled屬性取消勾選。
取得震動:Palette/ Sensors/ AccelerometerSensor
更改屬性:Properties/ Enabled:取消勾選
23. 增加元件Notifier1(彈出對話方塊)
在視窗左側的元件面板(Palette)中,點選使用者介面(User Interface)中的對話方塊(Notifier)元件,將其拖曳至中間的畫面預覽(Viewer)視窗中。
新增提示:Palette/ User Interface/ Notifier
使用元件及其重要屬性
名稱
|
屬性(可自行調整)
|
說明
|
VerArrPageHome
|
AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
|
|
Label1
|
FontBold:勾選
FontSize:40
Text:我的計步器
TextColor:Pink
Width:Fill parent
|
文字:我的計步器
|
LabelStep
|
FontBold:勾選
FontSize:70
Text:0
TextColor:Red
Width:Fill parent
|
文字:顯示步行數
|
HorizontalArrangement1
|
AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
|
|
Label2
|
FontSize:24
Text:步行時間
TextAlignment:Center
Width:Fill parent
|
文字:步行時間字串
|
Hour
|
FontBold:勾選
FontSize:18
Text:0
TextColor:Orange
Width:Fill parent
|
文字:步行時間-小時
|
LabelHour
|
FontBold:勾選
FontSize:18
Text:時
TextAlignment:left
TextColor:Orange
Width:Fill parent
|
文字:時
|
Min
|
FontBold:勾選
FontSize:18
Text:0
TextAlignment:left
TextColor:Orange
Width:Fill parent
|
文字:步行時間-分鐘
|
LabelMinute
|
FontBold:勾選
FontSize:18
Text:分
TextAlignment:left
TextColor:Orange
Width:Fill parent
|
文字:分
|
Sec
|
FontBold:勾選
FontSize:18
Text:0 TextAlignment:left
TextColor:Orange Width:Fill parent
|
文字:步行時間-秒
|
LabelSecond
|
FontBold:勾選
FontSize:18
Text:秒
TextAlignment:left
TextColor:Orange
Width:Fill parent
|
文字:秒
|
HorizontalArrangement2
|
AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
|
|
ButtonStart
|
FontBold:勾選
FontSize:20
Text:開始
Width:Fill parent
|
按鈕:開始計步
|
ButtonPause
|
FontBold:勾選
FontSize:20
Text:暫停
Width:Fill parent
|
按鈕:暫停計步
|
ButtonEnd
|
FontBold:勾選
FontSize:20
Text:停止
Width:Fill parent
|
按鈕:結束計步
|
HorizontalArrangement3
|
AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
|
|
Label3
|
FontBold:勾選
FontSize:24
Text:累積步數
TextAlignment: Center
Width:Fill parent
|
文字:累積步數字串
|
LabelToday
|
FontBold:勾選
FontSize:18
Text:0
TextAlignment:Left
TextColor:Blue
Width:Fill parent
|
文字:顯示步數
|
HorizontalArrangement5
|
AlignHorizontal:Center
AlignVertical:Center
Width:Fill parent
|
|
ButtonProgEnd
|
FontBold:勾選
FontSize:18
Text:離開計步器
Width:Fill parent
|
按鈕:結束應用程式
|
Clock1
|
TimerEnabled:取消勾選
|
取得系統時間及計時
|
Accelerometer-Sensor1
|
Enabled:取消勾選
|
取得震動情況
|
Notifier1
|
無
|
彈出對話方塊
|
2.3拼塊說明
24.定義全域變數
在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取initialize global name to置於預覽視窗中,拉好後按Ctrl+C進行複製,再按Ctrl+V複製成13個拼塊。
建立全域變數:Blocks/ Built-in/ Variables / initialize global name to
前面三個分別將name的部分更改為X、Y、Z,在左側的Blocks中點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取0,並且放在initialize global X to、initialize global Y
to、initialize global Z to的右邊。分別記錄加速度感測器X、Y、Z的參數值。
參數值:將name更改為X和Y和Z
Blocks/ Built-in/ 0
再來兩個分別將name的部分更改為timeStart、timeEnd,在左側的Blocks中點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取0,並且放在initialize global timeStart to、initialize global timeEnd to的右邊。分別紀錄加速度感測器開始及結束計時數值。
計時數值:將name更改為timeStart和timeEnd
Blocks/ Built-in/ 0
選取一個name的部分更改為timeInteval,在左側的Blocks中點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取0,並且放在initialize global timeIntevalto的右邊,接著將0更改為300,用來設定延遲加速度感測器判斷的時間間隔。意思是每300毫秒(0.3秒)時才讓加速度感測器做一次是否有走動的判斷。
延遲時間間隔:將name更改為timeInteval
Blocks/ Built-in/ 0
將0改為300
之後四個分別將name的部分更改為sensor、sensorvar、sensorstep及sensorLevel,在左側的Blocks中點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取0,並且放在initialize global sensor to、initialize global sensorvar to、initialize
global sensorstep to及initialize global sensorLevelto的右邊,接著分別將0改為1、1.5、0.1及5。分別為儲存靈敏度比對值(0.5~1.4)、計算靈敏度的常數、兩相鄰靈敏度的數值差、儲存靈敏度等級。
(註:sensor = sensorvar - sensorstep ×sensorLevel)
設定零敏度:將name更改為sensor和sensorvar和sensorstep和sensorLevel
Blocks/ Built-in/ 0
將0改為1和1.5和0.1和5
選取一個name的部分更改為start,在左側的Blocks中點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取flase,並且放在initialize global startto的右邊。用來設定表示計步器一開始是關閉的。
關閉計步器:將name更改為start
Blocks/ Built-in/ Logic/ false
接著兩個分別將 name 的部分更改為step及Nowstep,在左側的Blocks中點選 Built-in裡的Math,在彈出的拼圖式程式區塊中選取0,並且放在initialize global step to及initialize global maxRecord to的右邊。分別為儲存行走步數及設定最大紀錄數量。
儲存步行數:將name更改為step
Blocks/ Built-in/ 0
設定最大紀錄數量:將name更改為Nowstep
Blocks/ Built-in/ 0
25.自訂程序buttonEnable,設定三個按鈕的作用情況
在左側的Blocks中,點選Built-in裡的Procedures,在彈出的拼圖式程式區塊中選取toprocedure do置於預覽視窗中,接著將procedure更改為buttonset。點選左上角的藍色方框,將左邊的input:x,拖曳至右邊的inputs裡面,總共要拖曳三個input:x過去。接著將三個x依序更改為btStart、btPause、btEnd。建立副程式,將多個指令集合在一起,之後可透過呼叫該程序來使用這些指令,並且新增3個按鈕參數。
自訂程序:Blocks/ Built-in/ Procedures/ to procedure do
將procedure改成buttonset
藍色方框/ input:x /btStart
藍色方框/ input:x /btPause
藍色方框/ input:x /btEnd
在左側的Blocks中,點選Screen1裡的ButtonStart,在彈出的拼圖式程式區塊中選取set ButtonStart.Enabled to,放在tobuttonset do裡面;在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取get,放在set ButtonStart.Enabled to右邊,接著選取為btStart。將set ButtonStart.Enabled to按Ctrl+C複製,再來按Ctrl+V貼上二次,依序放在set ButtonStart.Enabled to的下面,分別將ButtonStart依序選取為ButtonPause、ButtonEnd,再依序將右邊的btStart選取為btPause、btEnd。這主要是將參數名稱設為與按鈕名稱相關,例如將ButtonStart按鈕的參數名稱設為TFbuttonStart。
建立按鈕參數:Blocks/ Screen1/ ButtonStart/ set ButtonStart.Enabled to
Blocks/ Built-in/ Variables/ get
將 選取btStart
將 選取btPause
將 選取btEnd
26.程式開始執行時要執行的步驟
在左側的Blocks中,點選Screen1,在彈出的拼圖式程式區塊中選取when Screen1.Initialize do置於預覽視窗中。這是指當Screen1從初始值開始執行。
執行程式:Blocks/ Screen1/ when Screen1.Initialize do
在左側的Blocks中,點選Screen1裡的AccelerometerSensor1,在彈出的拼圖式程式區塊中選取set AccelerometerSensor1.Enabled to,放在when
Screen1.Initialize do裡面。在左側的Blocks中,點選Screen1裡的Clock1,在彈出的拼圖式程式區塊中選取set Clock1.TimerEnabled to,放在set AccelerometerSensor1.Enabled
to下面。在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取false,放在set AccelerometerSensor1.Enabled to右邊,接著再選取一個false,放在set Clock1.TimerEnabled to右邊。分別為設定關閉加速度感測器與和設定關閉計時器,將一開始的加速度感測器和計時器都設為false。
關閉加速度感測器:Blocks/ Screen1/ AccelerometerSensor1/
set AccelerometerSensor1.Enabled to
Blocks/ Built-in/ Logic/ false
關閉計時器:Blocks/ Screen1/ Clock1/set Clock1.TimerEnabled to/ false
Blocks/ Built-in/ Logic/ false
在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取set to,放在set Clock1.TimerEnabled to下面,並選取為set globalsensor to;在左側的Blocks中,點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取-,放在set globalsensor to右邊,再來選取×,放在-的右邊;在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取get,放在-左邊,並選取為getglobalsensorvar ,接著將get globalsensorvar按Ctrl+C複製,再按Crtl+V貼上兩遍,分別放在×的左邊及右邊,依序將globalsensorvar選取為globalsensorstep及globalsensorLevel。這是在計算靈敏度的數值,由sensorLevel變數計算靈敏度數值(sensor),計算公式為:sensor= 1.5 - 0.1 ×sensorLevel。
計算靈敏度數值:Blocks/ Built-in/ Variables/ set to
將 選取global sensor
Blocks/ Built-in/ Math/ -
Blocks/ Built-in/ Math/ ×
Blocks/ Built-in/ Variables/ get
將 選取global sensorvar
將 選取global sensorstop
將 選取global sensorLevel
在左側的Blocks中,點選Built-in裡的Procedures,在彈出的拼圖式程式區塊中選取call buttonsetbtStart btPause btEnd,放在set global
sensor to下面;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取true,放在btStart右邊,接著btPause、btEnd右邊依序選取為false、false。最後這是在設定各按鈕是否有作用,呼叫副程式buttonset設定三個按鈕是否有作用,此處設定「開始」有作用,按鈕為ture;「暫停」及「停止」設定無作用,按鈕為false。
設定按鈕作用:Blocks/ Built-in/ Procedures/ call buttonsetbtStart btPause btEnd
Blocks/ Built-in/ Logic/ true
Blocks/ Built-in/ Logic/ false
Blocks/ Built-in/ Logic/ false
43.按下「開始」鈕,開始計算步行數。
在左側的Blocks中,點選Screen1裡的ButtonStart,在彈出的拼圖式程式區塊中選取when ButtonStart.Click do置於預覽視窗中。當使用者按下「開始」鈕就執行以下事情。
按下開始鈕執行:Blocks/ Screen1/ ButtonStart/ when ButtonStart. Click do
在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取set to,放在when ButtonStart.Click do裡面,選取為setglobalstep to;在左側的Blocks中,點選Build-in裡的Math,在彈出的拼圖式程式區塊中選取0,放在setglobalstep to右邊。這邊是在設定步行數,設定步行數(step)為0。
設定步行數:Blocks/ Built-in/ Variables/ set to
將 選取global step
Blocks/ Built-in/ Math/ 0
在左側的Blocks中,點選Screen1裡的Hour,在彈出的拼圖式程式區塊中選取set Hour.Text to,放在setglobalstepto下面;在左側的Blocks中,點選Build-in裡的Math,在彈出的拼圖式程式區塊中選取0,放在set Hour.Text to右邊。將set Hour.Text to按Crtl+C複製,再按Crtl+V貼上兩次,放在set Hour.Text to下面,並將Hour依序選取為Min和Sec。這邊是為了將時間顯示在主頁面,預設值都為0。
顯示時間:Blocks/ Screen1/ Hour/ set Hour.Text to
將Hour.選取為Min
將Hour選取為Sec
Blocks/ Built-in/ Math/ 0
在左側的Blocks中,點選Screen1裡的LabelStep,在彈出的拼圖式程式區塊中選取set LabelStep.Text to,放在setSecto下面;在左側的Blocks中,點選Built-in裡的Text,在彈出的拼圖式程式區塊中選取" ",放在set LabelStep.Text to右邊,並輸入為"0"。這邊是為了將步行數顯示在主頁面,預設值都為0。
顯示步行數:Blocks/ Screen1/ LabelStep / setLabelStep.Text to
Blocks/ Built-in/ Text / ““
將”“改成”0”
在左側的Blocks中,點選Screen1裡的Clock1,在彈出的拼圖式程式區塊中選取set Clock1.TimerEnabled to,放在set
LabelStep.Text to下面;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取true,放在set Clock1.TimerEnabled to右邊。在左側的Blocks中,點選Screen1裡的AccelerometerSensor1,在彈出的拼圖式程式區塊中選取set AccelerometerSensor1.Enabled to,放在set
Clock1.TimerEnabled to下面;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取true,放在set AccelerometerSensor1.Enabled to右邊。這兩個是在啟動計時器及加速度感測器,設定計時器(Clock1)及加速度感測器(AccelerometerSensor1)為true來啟動計時器及加速度感測器。
啟動計時器:Blocks/ Screen1/ Clock1/ set Clock1.TimerEnabled to
Blocks/ Built-in/ Logic/ true
啟動加速度感測器:Blocks/ Screen1/ AccelerometerSensor1/ set
AccelerometerSensor1.Enabled to
Blocks/ Built-in/ Logic/ true
在左側的Blocks中,點選Built-in裡的Procedures,在彈出的拼圖式程式區塊中選取call buttonsetbtStart btPause btEnd,放在set AccelerometerSensor1.Enabled
to下面;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取false,放在btStart右邊,接著btPause、btEnd右邊依序選取為true、true。這邊一樣是在設定各按鈕是否有作用,呼叫副程式buttonset設定三個按鈕是否有作用,此處為設定計步期間只有「暫停」及「停止」鈕有作用,按鈕為ture;其餘按鈕皆無作用,按鈕為false。
設定按鈕作用:Blocks/ Built-in/ Procedures/ call buttonsetbtStart btPause btEnd
Blocks/ Built-in/ Logic/ false
Blocks/ Built-in/ Logic/ true
44.按下「暫停」鈕,停止計步並同時將按鈕文字變為「繼續」
在左側的Blocks中,點選Screen1裡的ButtonPause,在彈出的拼圖式程式區塊中選取when ButtonPause.Click do置於預覽視窗中。當使用者按下「暫停」鈕就執行以下事情。
按下暫停鈕執行:Blocks/ Screen1/ ButtonPause/ when ButtonPause.Clock do
在左側的Blocks中,點選Built-in裡的Control,在彈出的拼圖式程式區塊中選取if then,放在when ButtonPause.Click do裡面,點選左上角的藍色方框,將左邊的else拖曳至右邊的if裡面;在左側的Blocks中,點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取=,放在if右邊;在左側的Blocks中,點選Screen1裡的ButtonPause,在彈出的拼圖式程式區塊中選取ButtonPause.Text,放在=左邊;在左側的Blocks中,點選Built-in裡的Text,在彈出的拼圖式程式區塊中選取" ",放在=右邊,並輸入為"暫停"。如果按鈕文字為「暫停」就執行then裡面的事情。
判斷按鈕文字:Blocks/ Built-in/ Control/ if then
藍色方框/ else
Blocks/ Built-in/ Math/ =
Blocks/ Screen1/ ButtonPause/ ButtonPause.Text
Blocks/ Built-in/ Text/ ““
將““輸入為“暫停“
在左側的Blocks中,點選Screen1裡的AccelerometerSensor1,在彈出的拼圖式程式區塊中選取set AccelerometerSensor1.Enabled to,放在then右邊;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取false,放在set AccelerometerSensor1.Enabled to右邊;在左側的Blocks中,點選Screen1裡的Clock1,在彈出的拼圖式程式區塊中選取set Clock1.TimerEnabled to,放在set AccelerometerSensor1.Enabled
to下面;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取false,放在set Clock1.TimerEnabled to右邊;在左側的Blocks中,點選Screen1裡的ButtonPause,在彈出的拼圖式程式區塊中選取set ButtonPause.Text to,放在set
Clock1.TimerEnabled to下面;在左側的Blocks中,點選Built-in裡的Text,在彈出的拼圖式程式區塊中選取" ",放在set ButtonPause.Text to右邊,並輸入為"繼續";在左側的Blocks中,點選Built-in裡的Procedures,在彈出的拼圖式程式區塊中選取call buttonset btStart btPause btEnd,放在set
ButtonPause.Text to下面;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取false,放在btStart右邊,接著btPause、btEnd右邊皆選取為true。如果按鈕文字為「暫停」,設定計時器及加速度感測器為false來停止計時器及加速度感測器,同時將按鈕文字改為「繼續」,暫停期間只有「繼續」鈕有作用,按鈕為ture;其餘按鈕皆無作用,按鈕為false。
按鈕文字為暫停:Blocks/ Screen1/ AccelerometerSensor1/ set
AccelerometerSensor1.Enabled to
Blocks/ Built-in/ Logic/ false
Blocks/ Screen1/ Clock1/ set Clock1.TimerEnabled to
Blocks/ Built-in/ Logic/ false
Blocks/ Screen1/ ButtonPause/ set ButtonPause.Text to
Blocks/ Built-in/ Text/ ““
將”“改成”繼續”
Blocks/ Built-in/ Procedures/ call buttonset btStart btPause btEnd
Blocks/ Built-in/ Logic/ false
Blocks/ Built-in/ Logic/ true
將set AccelerometerSensor1.Enabled to以下整個按Crtl+C複製,再按Crtl+V貼上,放在else右邊,接著將set AccelerometerSensor1.Enabled to及set
AccelerometerSensor1.Enabled to右邊的false都選取為true;將set ButtonPause.Text to右邊的"繼續",輸入為"暫停";將btEnd右邊的false選取為true。這邊是在說,如果按鈕文字為「繼續」,就設定計時器及加速度感測器為true繼續啟動計時器及加速度感測器,同時將按鈕文字改為「暫停」,設定「暫停」及「停止」鈕有作用,按鈕為ture;其餘按鈕皆無作用,按鈕為false。
按鈕文字為繼續:Blocks/ Screen1/ AccelerometerSensor1/ set
AccelerometerSensor1.Enabled to
Blocks/ Built-in/ Logic/ true
Blocks/ Screen1/ Clock1/ set Clock1.TimerEnabled to
Blocks/ Built-in/ Logic/ true
Blocks/ Screen1/ ButtonPause/ set ButtonPause.Text to
Blocks/ Built-in/ Text/ ““
將”“改成”暫停”
Blocks/ Built-in/ Procedures/ call buttonset btStart btPause btEnd
Blocks/ Built-in/ Logic/ false
Blocks/ Built-in/ Logic/ true
45.按下「停止」鈕,將步行數紀錄於資料庫
在左側的Blocks中,點選Screen1裡的ButtonEnd,在彈出的拼圖式程式區塊中選取when ButtonEnd.Click do置於預覽視窗中。當使用者按下「停止」鈕就執行以下事情。
按下停止鈕執行:Blocks/ Screen1/ ButtonEnd/ when ButtonEnd.Click do
在左側的Blocks中,點選Screen1裡的AccelerometerSensor1,在彈出的拼圖式程式區塊中選取set AccelerometerSensor1.Enabled to,放在then右邊;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取false,放在set AccelerometerSensor1.Enabled to右邊;在左側的Blocks中,點選Screen1裡的Clock1,在彈出的拼圖式程式區塊中選取set Clock1.TimerEnabled to,放在set
AccelerometerSensor1.Enabled to下面;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取false,放在set Clock1.TimerEnabled to右邊;在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取set to,放在set Clock1.TimerEnabled to下面,選取set global startto;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取false,放在set global startto右邊;在左側的Blocks中,點選Screen1裡的ButtonPause,在彈出的拼圖式程式區塊中選取set ButtonPause.Text to,放在set global startto下面;在左側的Blocks中,點選Built-in裡的Text,在彈出的拼圖式程式區塊中選取" ",放在set ButtonPause.Text to右邊,並輸入為"暫停"。這些是為了改變設定,設定計時器及加速度感測器為false來停止計時器及加速度感測器,將啟動旗標(start)設為false,並設定暫停鈕文字為「暫停」。
按下停止鈕改變設定:Blocks/ Screen1/ AccelerometerSensor1/ set
AccelerometerSensor1.Enabled to
Blocks/ Built-in/ Logic/ false
Blocks/ Screen1/ Clock1/ set Clock1.TimerEnabled to
Blocks/ Built-in/ Logic/ false
Blocks/ Built-in/ Variables/ set to
將”“選取”global start”
Blocks/ Screen1/ ButtonPause/ set ButtonPause.Text to
Blocks/ Built-in/ Text/ ““
將”“改成”暫停”
在左側的Blocks中,點選Built-in裡的Procedures,在彈出的拼圖式程式區塊中選取call buttonsetbtStart btPause btEnd,放在set
ButtonPause.Text to下面;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取true,放在btStart右邊,接著btPause、btEnd右邊依序選取為false、false。設定「開始」、「查看歷史資料」及「靈敏度設定」按鈕有作用,按鈕為ture;「暫停」及「停止」按鈕無作用;按鈕為false。
設定按鈕作用:Blocks/ Built-in/ Procedures/ call buttonsetbtStart btPause btEnd
Blocks/ Built-in/ Logic/ true
Blocks/ Built-in/ Logic/ false
在左側的Blocks中,點選Screen1裡的LabelToday,在彈出的拼圖式程式區塊中選取set LabelToday.Text to,放在call buttonset btStart
btPause btEnd的下面;在左側的Blocks中,點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取+,放在set LabelToday.Text to的右邊;在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取get,放在+的左邊,並選取為get
global Nowstep;在左側的Blocks中,點選Screen1裡的LabelStep,在彈出的拼圖式程式區塊中選取LabelStep.Text,放在+的右邊。在左側的Blocks中,點選Built-in裡的Control,在彈出的拼圖式程式區塊中選取if then,放在set LabelToday.Text to的下面;在左側的Blocks中,點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取>,放在if的右邊;在左側的Blocks中,點選Screen1裡的LabelStep,在彈出的拼圖式程式區塊中選取LabelStep.Text,放在>的左邊;在左側的Blocks中,點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取0,放在>的右邊;在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取set to,放在then的右邊,並選取為set global Nowstep to;在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取get,放在+的左邊,並選取為get
global Nowstep;在左側的Blocks中,點選Screen1裡的LabelStep,在彈出的拼圖式程式區塊中選取LabelStep.Text,放在+的右邊。在左側的Blocks中,點選Screen1裡的LabelStep,在彈出的拼圖式程式區塊中選取set LabelStep.Text
to,放在set global Nowstep to的下面;在左側的Blocks中,點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取0,放在set LabelStep.Text to的右邊。這是在累計步行數,今日沒有行走步數就直接紀錄,今日有行走步數則加上之前的累積成今日步數。
累積步行數:Blocks/ Screen1/ LabelToday/ set LabelToday.Text to
Blocks/Built-in/ Math/ +
Blocks/Built-in/ Variables/ get
將 選取為global Nowstep
Blocks/ Screen1/ LabelStep/ LabelStep.Text
Blocks/Built-in/ Control/ if then
Blocks/Built-in/ Math/ >
Blocks/Screen1/ LabelStep/ LabelStep.Text
Blocks/Built-in/ Math/ 0
Blocks/Built-in/ Variables/ set to
將 選取為global Nowstep
46.計算步行時間,每一秒會觸發一次Clock1.Timer事件。
在左側的Blocks中,點選Screen1裡的Clock1,在彈出的拼圖式程式區塊中選取when Clock1.Timer do;在左側的Blocks中,點選Screen1裡的Sec,在彈出的拼圖式程式區塊中選取set Sec.Text to,放在when Clock1.Timer do的裡面;在左側的Blocks中,點選Built-in中的Math,在彈出的拼圖式程式區塊中選取+,放在set Sec.Text to的右邊;在左側的Blocks中,點選Screen1裡的Sec,在彈出的拼圖式程式區塊中選取Sec.Text,放在+的左邊;在左側的Blocks中,點選Built-in中的Math,在彈出的拼圖式程式區塊中選取0,放在+的右邊,並將0改成1;在左側的Blocks中,點選Built-in中的Control,在彈出的拼圖式程式區塊中選取if then,放在set Sec.Text to的下面。在左側的Blocks中,點選Built-in中的Logic,在彈出的拼圖式程式區塊中選取=,放在if的右邊;在左側的Blocks中,點選Screen1裡的Sec,在彈出的拼圖式程式區塊中選取Sec.Text,放在=的左邊。在左側的Blocks中,點選Built-in中的Math,在彈出的拼圖式程式區塊中選取0,放在=的右邊,並將0改成60;在左側的Blocks中,點選Screen1裡的Sec,在彈出的拼圖式程式區塊中選取set Sec.Text to,放在then的右邊;在左側的Blocks中,點選Built-in中的Math,在彈出的拼圖式程式區塊中選取0,放在set Sec.Text to的後面;在左側的Blocks中,點選Screen1裡的Min,在彈出的拼圖式程式區塊中選取set Min.Text to,放在set Sec.Text to的下面;在左側的Blocks中,點選Built-in中的Math,在彈出的拼圖式程式區塊中選取+,放在set Min.Text to的右邊;在左側的Blocks中,點選Screen1裡的Min,在彈出的拼圖式程式區塊中選取Min.Text,放在+的左邊;在左側的Blocks中,點選Built-in中的Math,在彈出的拼圖式程式區塊中選取0,放在+的右邊,並將0改成1;接著將if then按Ctrl+C進行複製,按Ctrl+V進行貼上,放置在set Min.Text to的下面,將Sec.Text選取為Min.Text。這邊是在計時,秒數超過60秒則進位變成分鐘,分鐘超過60分則進位變成小時。
計時:Blocks/ Screen1/ Clock1/ when Clock1.Timer do
Blocks/ Screen1/ Sec/ set Sec.Text to
Blocks/ Built-in/ Math/ +
Blocks/ Screen1/ Sec/ Sec.Text
Blocks/ Built-in/ Math/ 0
將0更改為1
Blocks/ Built-in/ Control/ if then
Blocks/ Built-in/ Logic/ =
Blocks/ Screen1/ Sec/ Sec.Text
50.按下「結束程式」鈕及行動裝置上的「返回」鍵,顯示對話方塊詢問是否確定結束本程式。
在左側的Blocks中,點選Screen1裡的ButtonProgEnd,在彈出的拼圖式程式區塊中選取when ButtonProgEnd.Click do;在左側的Blocks中,點選Screen1裡的Notifier1,在彈出的拼圖式程式區塊中選取callNotifier1.ShowChooseDialog message title button1Text buttonText2
cancelable,放在when ButtonProgEnd.Click do裡面;在左側的Blocks中,點選Built-in裡的Text,在彈出的拼圖式程式區塊中選取””,放在message、title、button1Text和buttonText2的後面,並依序輸入文字”確定要結束我的計步器嗎?”、”結束”、”確定”、”取消”;在左側的Blocks中,點選Built-in裡的Logic,在彈出的拼圖式程式區塊中選取false,放在cancelable的後面。跳出對話方塊,顯示對話方塊詢問使用者是否確定要結束程式。
跳出對話方塊:Blocks/ Screen1/ ButtonProgEnd/ when ButtonProgEnd.Click do
Blocks/ Screen1/ Notifier1/ call Notifier1.ShowChooseDialog message
title button1Text buttonText2 cancelable
Blocks/ Screen1/Text/ “ ”
將”“輸入為” 確定要結束我的計步器嗎?”和” 結束”和”確定”和”取消”
Blocks/ Screen1/Logic/ false
53.按下對話方塊的「確定結束」鈕
在左側的Blocks中,點選Screen1裡的Notifier1,在彈出的拼圖式程式區塊中選取when Notifier1.AfterChoosing choicedo;在左側的Blocks中,點選Built-in裡的Control,在彈出的拼圖式程式區塊中選取if then,放置在when Notifier1.AfterChoosing
choicedo裡面;在左側的Blocks中,點選Built-in裡的Math,在彈出的拼圖式程式區塊中選取=,放置在if的右邊;在左側的Blocks中,點選Built-in裡的Variables,在彈出的拼圖式程式區塊中選取get,放置在=的左邊,並選取為get choice;在左側的Blocks中,點選Built-in裡的Text,在彈出的拼圖式程式區塊中選取””,放置在=的右邊,並選取為”確定”;在左側的Blocks中,點選Built-in裡的Control,在彈出的拼圖式程式區塊中選取close application,放置在then裡面。確認是否結束,如果按鈕與”確定”字串相同,則關閉應用程式。
確認結束:Blocks/ Screen1/ Notifier1/ when Notifier1.AfterChoosing choicedo
Blocks/ Built-in/ Control/ if then
Blocks/ Built-in/ Math/ =
Blocks/ Built-in/ Variables/ get
將 選取為choice
Blocks/ Built-in/ Text/ “ ”
將” “選取為“ 確定 ”
Blocks/ Built-in/ Control/ close application
54.使用加速度感測計來偵測使用者的震動,降低感測器的靈敏度,使用三軸數值的差,三個方向的數值改變都要偵測
當加速度感測器的加速度改變,當加速度感測器偵測到x、y、z軸的加速度改變就執行。
紀錄目前系統時間,將目前系統時間設定為timeEnd變數值。
確定時間間隔,如果時間間隔大於timeInterval變數值(預設為300,即0.3秒),就執行4.~6.,也就是每隔0.3秒才檢查是否震動一次。
檢查啟動狀態,如果不是啟動狀態就設定為啟動狀態(start=true)。否則,如果X、Y、Z任一軸的變化量大於靈敏度(sensor)就將步行數增加1,並顯示更新的步行數。
重新開始計時,將目前系統時間設定為timestart變數值,表示重新開始計時。
下一次震動比較的初始值,將目前感測器三個軸的數值設定於sx、sy、sz,做為下一次震動比較的初始值。
完整程式圖:
3.未來展望
大家開始步行的目的之一就是為了身體好,當然現在有些計步器也有消耗熱量的功能,因此如果能在計步器中加入計算消耗熱量的功能,對使用者會有幫助。而消耗熱量與使用者的走一步的距離及體重有關,必須先記錄使用者的步幅及體重。





























請問為何會冒出 global sx、global sy、global sz?
回覆刪除好詳盡的教學,同時也兼顧了邏輯的思考。真棒
回覆刪除What is global sx sy sz
回覆刪除