第三章 板載感測器實驗(4、指南針)

鄧小榮啟雅發表於2018-02-28

第三章 板載感測器實驗(4、指南針)

enter image description here

4,指南針

任務1:電子羅盤。

任務描述:顯示指南針朝向,正北為0°,正東為90°,正南為180°,正西為270°:
enter image description here

上節課我們用磁力計製作了一個簡易指南針,很粗糙。其實,micro:bit(以後簡稱bit)自帶有精確的電子羅盤。在”輸入“,”指南針朝向“中:
enter image description here
記得校準指南針。

任務2:模擬指南針。

任務描述:這個羅盤很精確,但不直觀。我們希望板子標誌指向北,顯示”N“,指向東,顯示”E“,指向南,顯示”S“,指向西,顯示”W“。
enter image description here
設定一個變數degrees,用於存放羅盤角度:
enter image description here
邏輯判斷:
如果degrees>315 degrees<45 則顯示”N
如果degrees>45 degrees<135 則顯示”E
如果degrees>135 degrees<225 則顯示”S
剩下的就是西, 則顯示”W
enter image description here

小強:慢點慢點!怎麼拖出”與“和”或“的?
小明:在”邏輯“塊中:
enter image description here

小明:這個程式有點羅嗦,
第二句 如果degrees>45 degrees<135 則顯示”E
degrees>45 是多餘的!因為小於45的話,就落在第一句裡,所以,可以這樣簡化:
enter image description here

表揚小明!這就是程式的優化。有多種方式達到我們的目的,但有的繁雜,有的簡明。簡明的程式是我們的追求。

小強:這個字母表示方向,不直觀,能不能象真的指南針一樣,指標一直朝北?
好想法!試試!

任務3:模擬指南針。

要實現這個目標,我們先來熱熱身,
先把指示北東南西四個方向,增加東北,東南,西南,西北四個方向,分別用1、2、3、4表示,共八個方向。
enter image description here

算出每兩個方位之間的角度:
enter image description here
程式改為:
enter image description here

小強:燒不進!出現這個:
enter image description here

小明:判斷模組上有個感嘆號。
enter image description here

它感嘆什麼?點開:
enter image description here

Decimal number are not supported(不支援的十進位制數)
百度,請教 。
原來,我們現在用的程式設計環境是makecode,java,不支援小數。取整吧。(Python環境支援)
enter image description here

好了,現在板子能指示八個方位。
我們用箭頭代替文字。正好有一個對應八個方位的塊:
enter image description here
用它代替字母:
enter image description here

小強:不對!箭頭不是一直指向北!

什麼情況?
原來,這些箭頭的含義是:以板子標誌為北。
假如標誌指向東北,轉了45度,它就顯示右上方的箭頭,相對標誌也轉了45度,實際指向的是東!

enter image description here enter image description here

如果希望箭頭仍然指向北的話,就應該顯示西北箭頭(相對於標誌)!
也就是說,我們要顯示的是相對於標誌,北在哪!

指向東北,顯示西北
指向東,顯示西
指向東南,顯示西南
指向南,顯示南
指向西南,顯示東南
指向西,顯示東
指向西北,顯示東北

東西顛倒,南北不變。

enter image description here

小芳:頭暈!

有空做個教具。

相關文章