iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 24
1
IoT

IoT沒那麼難!新手用JavaScript入門做自己的玩具~系列 第 25

[Day 24]-用JS控制Arduino吧!不動看不懂!最狂的加速度解說! - Johnny Five 之 Accelerometer 三軸加速度計 - 實作篇

昨天 沒講完的實作和有些不完整的地方.....<(_ _)>

補充 - 實作部分

使用 Johnny-Five 的 Accelerometer 物件屬性,controller key值為選填
Johnny-Five 附表列出目前加速度計有支援的型號,controller 填上使用的加速度器字串即可;

如果沒填寫特定的 controller 參數的話,預設值為'ANALOG'
使用特定的 Sensor 若對應到 Johnny-Five 清單中特定的controller字串值,則可以填寫該 Sensor 特定選填的物件屬性。

舉例來說:
如果物件 controller 值為 'ANALOG' ,則可以填寫 Analog 選填屬性。

Accelerometer Parameters -
http://johnny-five.io/api/accelerometer/#parameters



Accelerometer物件 返回值

使用 Jonny-Five 的Accelerometer物件,會返回 XYZ 軸的變化數值。


其他返回的資料還有

  • pins:The pins defined for X, Y, and Z.
    定義 X、Y、Z 的腳位。
  • pitch:The pitch angle in degrees.
    俯仰角的數值。
  • roll:The roll angle in degrees.
    滾轉角的數值。
  • x:Value of x axis in G forces.
    X 軸方向的重力值。
  • y:Value of y axis in G forces.
    Y 軸方向的重力值。
  • z:Value of z axis in G forces.
    Z 軸方向的重力值。
  • acceleration:The magnitude of the acceleration in G forces.
    重力加速度的數值。
  • inclination:The incline of the device in degrees.
    傾斜度、傾角數值。
  • orientation:The orientation of the device (-3, -2, -1, 1, 2, 3).
    設備的方位,表示數值為 -3, -2, -1, 1, 2, 3。

謎之音:有看沒有懂,木sasa的(台語)...
本魯宅:沒關係,我也是搞了很久才懂QQ

圖解說明 - pitch、roll、inclination

如果用文字說明俯仰角、滾轉角、傾斜度(搖動軸),不吐血才怪....
我們用圖片和動圖來解釋這些這些分別代表什麼,繼續看下去~(; ・´д・´)

空間概念

首先我們要先了解空間概念

我畫了一張圖幫助解釋 X、Y、Z 軸的對應位置。
黃色方塊代表加速度計

我們現在的視角就和左邊的立體圖一樣,用生活一點用語表示,假設現在有一個黃色物品在面對你的方向動來動去
那麼

X 軸 就是 左右方向 動
Y 軸 就是 前後方向 動
Z 軸 就是 上下方向 動

右邊的圖則是我們從上往下看黃色物品的運動方向軸,下面解析轉動的名詞各代表什麼意思。

roll 滾轉角

roll 就像小寶寶翻身滾動一樣,roll 為滾動的數值。
當物品平放向右翻轉時,值為遞增,反之當物品向左翻轉時,值為遞減;

PS:圖畫錯了...圖中的X軸為Y軸才對...Sorry

動作示意:


pitch 俯仰角

pitch 就像飛機飛起來拉升機身、降落機鼻往下機尾朝上一樣!
pitch 是指物品在平行於 X 與 Y 軸,開始運動時固定於 Y 軸, X 軸向 Z 軸運動
俯角方向數值為正值,仰角方向轉動為負值。

PS:圖又畫錯了...圖中的X軸和Y軸交換才對...Sorry again..

動作示意:


inclination 傾角

inclination 像轉轉盤,物品垂直於 X 與 Y 軸,開始運動時固定於 Y 軸,由 X 軸向 Z 軸傾斜。
順時針方向傾斜為正值,逆時鐘方向傾斜為負值。

PS:圖又又畫錯了...圖中的X軸和Y軸交換才對...Orz..

動作示意:


恩~看動圖解析這樣應該有了解一點吧!
不難只是要想一下要怎麼解釋....

本魯心之音:我只感受到痛苦...校稿時發現圖全畫錯...( ✘Д✘ )

實作 - 驗證上面說的

我們就用昨天的程式碼來驗證剛剛解釋的,順便了解一下各個物件屬性。

返回值 - y & roll

當我滾動加速度感應器 - ADXL345,可以看到 yroll 會隨著左右滾動數值而不同。

返回值 - x & pitch

當我改變俯仰角度的時候,可以看到 xpitch 會隨著俯仰角上下數值而不同。

返回值 - inclination

當我轉動加速度感應器的時候,可以看到 inclination 會隨著轉動的大小數值而不同。


這篇是以 Johnny-Five 提供的Accelerometer物件加上硬體ADXL345 (I2C)來說明,
希望用動圖來讓大家比較能理解三軸的定位與動作,利用這些原理來做出好玩的東西!

這樣加速度計的返回值講解的差不多了~
明天會結合前端網頁來實現看起來很狂的東西,今天講解到這了~
謝謝大家收看囉(๑´ㅂ`๑)

PS:如果有寫錯,請回文告知感謝大大們....

文後

本篇本系列動圖最多的一篇吧....
一直看到麵包板在轉看到有點想吐....


本系列的程式碼皆會上傳到 GitHub 上開源

2019ironman-JS-IoT :
https://github.com/tinatyc/2019ironman-JS-IoT

喜歡按個星星吧~乾蝦乾蝦<(_ _)>


團隊系列文:

CSScoke - 金魚都能懂的這個網頁畫面怎麼切 - 金魚都能懂了你還怕學不會嗎
Hina Hina - 陣列大亂鬥
阿斬 - Python 程式交易 30 天新手入門
Clarence - LINE bot 好好玩 30 天玩轉 LINE API
塔塔默 - 用Python開發的網頁不能放到Github上?Lektor說可以!!
Vita Ora - 好 Js 不學嗎 !? JavaScript 入門中的入門。


同步連載於blogger-King 學習前端之人生


上一篇
[Day 23]-用JS控制Arduino吧!三軸一起來,速度與激情!- Johnny Five 之 Accelerometer 三軸加速度計
下一篇
[Day 25]-用JS控制Arduino吧!讓你實體轉動網頁上的東西!最狂的加速度應用(?!) - Johnny Five 之 Accelerometer 三軸加速度計 - 狂應用篇
系列文
IoT沒那麼難!新手用JavaScript入門做自己的玩具~33
1
Clarence
iT邦新手 5 級 ‧ 2019-10-09 17:26:30

感覺都是麵包版的鏡頭 d(`・∀・)b

對壓....其實Sensor模組蠻小的.../images/emoticon/emoticon13.gif

2
ShawnL
iT邦新手 5 級 ‧ 2019-10-09 17:40:58

感覺可以 Arduino 做 Joycon,然後 Client 端用 Canvas 寫遊戲,後端靠 Socket.io 來實現 WindowXswitch or MacXswitch

施主...
饒了我QQ 怕.../images/emoticon/emoticon21.gif
下一屆鐵人賽換你寫!(恩!就這樣決定了X

ShawnL iT邦新手 5 級‧ 2019-10-09 17:54:32 檢舉

先讓我研究 Canvas 先 XDDD,順利的話明年再寫

你是真.勇者工程師!/images/emoticon/emoticon32.gif
(已截圖存證XDD

0
阿展展展
iT邦好手 1 級 ‧ 2019-10-21 04:52:32

這種東西感覺就該拿來做賽車遊戲!!/images/emoticon/emoticon07.gif

可以喔!!很多Sensor可以做成遊戲組蠻有潛力的/images/emoticon/emoticon12.gif

我要留言

立即登入留言