mBlok+ Arduino,讓 meArm機械手臂動起來

MeArm是一個扁平設計的機器手臂套件,只需要一支起子和對事物熱情的心即可以完成MeArm的組裝,MeArm能夠帶你進入程式設計、電子、機器人和工程的世界,Lifehacker網站描述MeArm是對初學者一個完美的Arduino專案。

MyArm是我們根據MeArm的開源圖,加上為本地學童精心建造的教學套件,初階版本包括機械手臂、電路板、雙搖桿,進階版本則加上紅外線遙控控制、藍芽與手機控制、無線WiFi物聯網的功能,初階版本在於帶領初學者進入MyArm的世界,透過雙搖桿來控制機械手臂的四顆伺服馬達,可完成手臂的三個維度的運動,以及機械手臂爪子的動作。

紅外線遙控版本,可讓我們用紅外線遙控器控制機械手臂,藉此我們可以學習紅外線遙控的原理與操作,我們也可以用家電的遙控器來做為控制器,甚至透過手機利用一個紅外線發射器,就可以做成一個強大的紅外線遙控器,控制所有家中的電器設備,像是電視、冷氣機等。

藍芽與手機控制版本則是利用智慧型手機內建的藍芽,來連結機械手臂,透過此版本,我們可以學習如何在手機或平板上設計程式。

無線WiFi版本則是因應現今最夯的物聯網科技,此版本可以透過Web對機械手臂進行控制,可實現遠端遙控機械,任何想要學習物聯網科技的不能錯過此一版本。

本教學是我們為了本地學童所建立的完整中文學習資源,希望讓大家夠透過MyArm進入創客的世界。

單一馬達測試

mBlock:(程式下載)

Arduino IDE (程式下載)

/*
馬達的接法Vcc接Arduino板子的Vin,GND接板子GND,訊號線接5、9、10、11,其中之1。
degree: 馬達的旋轉角度(45~135)
PM:1或-1,以用控制degree的值是加上15(角度的變化)還是15。
程式判斷若degree值等於45時,讓PM為1,使得degree累加15
若等於135時,讓PM=-1,使得degree值遞減15
 */

#include <Servo.h>
Servo motor; //定義馬達變數(物件)
void setup() {
  // put your setup code here, to run once:
  motor.attach(9); //設定馬達訊號腳連接至Arduino板子的數位接腳9
}

int pm = 1;
int degree = 45;
void loop() {
  // put your main code here, to run repeatedly:
  motor.write(degree); //讓馬達轉至degree角度
  delay(300); //馬達若以高速方式旋轉會燒毀,必須加上延遲,這邊單位是毫秒,也就是1/1000秒。
  if (degree == 45) {
    pm = 1; 
  } 
  if (degree == 135) {
    pm = -1;
  }  
  degree = degree + (pm * 15); //變化degree,
}

四顆馬達的控制-mBlock參考:

參考資料:

1.Arduino: MeArm 與雙搖桿,http://gsyan888.blogspot.tw/2014/11/arduino-mearm-dual-joystick.html

2.mblock第十一課(伺服馬達)