iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
1
IoT

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

[Day 26]-用JS控制Arduino吧!我達達的馬達聲~ - Johnny Five 之 Servo 伺服馬達 - 簡介篇

  • 分享至 

  • xImage
  •  

IoT沒那麼難!新手用 JavaScript 入門做自己的玩具!(iT邦幫忙鐵人賽系列書)

★本系列文章已集結成冊,和系列文不同的是:

  • 本書使用大量的圖解來說明LED系列、多種感測器等原理。
  • 補足系列文程式碼的解說,增加逐行程式碼的詳細解說!
  • 全彩的書籍,用圖解的方式,讓讀者來理解Johnny-Five各種API的功能與效果,讓你不會只讀文字看到想睡覺而學不起來。

歡迎大家做出自己想要的玩具,為了樂趣而學習,讓學習變成你的樂趣!ヽ(・×・´)ゞ
讓Arduino也能用JavaScript創造出屬於自己的作品!

★購書連結-天瓏網路書局:
https://www.tenlong.com.tw/products/9789864345328

《IoT沒那麼難!新手用 JavaScript 入門做自己的玩具!(iT邦幫忙鐵人賽系列書)》
博客來、金石堂、momo、誠品、PChome、讀冊,均有販售喔!─=≡Σ((( つ•̀ω•́)つ
ISBN:9789864345328

本魯宅:鐵人賽快要到尾聲了,本來 Sensor 篇還有可變電組和超音波感測器要寫....
但礙於還沒介紹其他重要的元件,只好先中斷了~Sorry...
謎之音:(ノ▼Д▼)ノ

今天要介紹的是 (∩.o.)⊃━☆゚.*・。 伺服馬達-「 Servo 」

伺服馬達 Servo 簡介

伺服馬達 - Servomotor 是用於伺服機構的馬達總稱。
伺服的意思是依照指令動作,伺服馬達由控制裝置和馬達所組成,其動作特性可以進行定位控制和動作的速度控制

拆解 伺服馬達

為了讓大家更了解伺服馬達的構造,本魯冒險把我的 SG90 9g 伺服馬達給拆解開來,一起來了解有什麼吧~d( ・∀・)b

首先,外觀由塑膠外殼包起來,頂部和底部可以拆開,馬達有三條一體的排線接出。

小螺絲卸下後,打開底蓋底部可以看到有負責控制訊號的迷你電路板小馬達兩個物件。

把頂部的外殼拆開,最先看到的是減速齒輪組,有四個小齒輪~(然後差點組不回去

從側面來看
右邊是迷你馬達,左邊有一個像控制方向的電位器,馬達動力輸出透過齒輪組連動到左邊電位器輸出方位控制,連接外部輸出動力

大致上就由這四個物件所組成,蠻有趣的~(❛◡❛✿)
接下來講解 Johnny-Five 實作囉~

硬體部分

電路方面

剛剛解析伺服馬達硬體內部有電路板接出一條排線,這三條線(紅棕橙)分別定義是:

  • 棕色線 → GND 接地線
  • 紅色線 → Vcc 電壓 4.8V ~ 6V
  • 橙色線 → PWM input 脈衝訊號輸入

必須要注意的是!
由於伺服馬達由 PWM 訊號控制,故橙色線需連接 Arduino 的 PWM 訊號腳位,這邊特別提醒大家~
(´・ω・´)

附上電路圖

介紹完後,我們開始來實作吧~
準備需要的東西有~ヽ(・×・´)ゞ

硬體方面

  • Arduino Uno 一片 + USB TypeB 線材一條 (
  • Servo SG90 (9g)
  • 杜邦線 看你用幾條準備幾條~

軟體方面

Johnny-Five - Servo
http://johnny-five.io/api/servo/

這邊的 Johnny-Five Servo API 提供對象是針對單顆伺服馬達的動作,
Johnny-Five 有獨立一個 Servo API 分類,特別提供複數伺服馬達的操作。

Johnny-Five - Servos
http://johnny-five.io/api/servos/

API

  • to(degrees 0-180 [, ms [, rate]])

    • degrees:伺服馬達轉動舵到特定的角度。
    • ms:單位毫秒;假設有設定毫秒,伺服馬達將花費該時間轉動舵到目標角度。
    • rate:速率;假設有設定速率,角度會依照指定的速率變化。

    *特別注意,呼叫 to() 函式則必須和前次呼叫角度不同,若與前次角度相同則不動作。

  • min()
    轉動舵到伺服馬達的最小角度。

  • max()
    轉動舵到伺服馬達的最大角度。

  • center([ ms [, rate ]])
    轉動舵到伺服馬達的中心角度。

  • home()
    設定伺服馬達的起始角度位置。

  • sweep()
    舵在最大角度到最小角度之間重複轉動。

  • sweep([ low, high ])
    舵在指定的最小角度和最大角度重複轉動。

  • stop()
    停止伺服馬達的動作。

小實作

小小測試 Servo 的動作~
我用產生亂數函式產生1~100的數值,讓 Servo 隨意轉動不同的角度~

程式碼

var five = require('johnny-five');
var board = new five.Board();

board.on('ready', function() {
  var servo = new five.Servo({
    pin: 10,
  });

  this.loop(2000, function() {
    randomNum = Math.floor(Math.random() * 100 + 1);
    servo.to(randomNum);
    console.log(randomNum);
  });
});

今天簡短的介紹伺服馬達...
有一些小了解後,我們明天在繼續囉~(被打

文後

放假在家反而身體不舒服頭痛痛的,所以
今天就非常簡短的介紹而已,抱歉抱歉Orz....


本系列的程式碼皆會上傳到 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 25]-用JS控制Arduino吧!讓你實體轉動網頁上的東西!最狂的加速度應用(?!) - Johnny Five 之 Accelerometer 三軸加速度計 - 狂應用篇
下一篇
[Day 27]-用JS控制Arduino吧!我達達達達的馬達聲~ - Johnny Five 之 Servo"s" 伺服馬達 - 簡介篇
系列文
IoT沒那麼難!新手用JavaScript入門做自己的玩具~33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

1
ayugioh2003
iT邦新手 2 級 ‧ 2019-10-11 23:01:50

我達達的馬達,是美麗的錯誤
我不是歸人,是個鐵人(而且還未完賽)

我笑了~接著哭了QQ.....(抱在一起痛哭/images/emoticon/emoticon02.gif

0
angelliya00
iT邦新手 4 級 ‧ 2019-10-12 01:21:29

30天寫不夠的話,還可以寫番外篇啊 w

/images/emoticon/emoticon37.gif
下一屆繼續寫XDDDD... (被打
不過我真的有這個想法XD
沒寫 ESP8266 好像少了什麼...

我要留言

立即登入留言