Tag Archives: arduino

Arduino結合NXShield控制伺服馬達

 

明天就是除夕夜了!在這邊阿邦老師先來跟各位拜個早年,祝大家龍年”龍總發”啦!

最近Arduino控制板及相關產品在機器人界越來越盛行,逐漸形成一股風氣,有種跟NXT角逐的意味,Arduino之所以會在短時間內竄紅起來,主要是歸咎於他的開放性,只要你有時間,都可以在網路上找到Arduino各種板子的電路圖及規格,進而自己做出一塊都不是問題,也因為如此,現在各廠商也都如火如荼的開發相容套件,希望自己也可以在機器人領域佔有一席之地。今天阿邦老師將為各位介紹如何應用Arduino結合NXShield來控制伺服馬達。

首先在硬體部分,阿邦老師選擇Arduino UNO組裝在NXShield-D上。

接著我們看右下角紅色框的部分,上面寫著3、5、6、9、10、11六個數字,這幾個針腳是接下來要接上伺服馬達的位置,而標示的數字則代表待會我們在程式中要設定的腳位。

硬體部分完成後,接著在軟體編寫上一開始我們必須先呼叫伺服馬達的函式庫:#include <Servo.h>

接著定義伺服馬達的變數並定義pos為一整數型別的變數,此變數在此程式是用來設定馬達要轉動到的位置:

Servo myservo;

int pos = 0;

接著在void setup()中設定伺服馬達接上的腳位及定位的動作(以下的設定是將伺服馬達接在3號的位置,並在程式開始時先將伺服馬達定在90的位置):

myservo.attach(3);

myservo.write(90);

最後我們可以在void loop()迴圈裡面使用for迴圈讓馬達從0~180的位置以一度的規律依序轉動:

for(pos = 0; pos < 180; pos += 1)

做到這邊相信大家都可以成功的控制”單顆”伺服馬達,但是若要同時控制多顆伺服馬達這可是有難度的,大家也可以趁年假來試試看是否可以讓多顆馬達同時間運動,我們年後見囉!

2012/01/15 Arduino / Android ADK / NXT機器人學習營 圓滿閉幕

感謝各界朋友的支持 0115的 [Arduino / Android ADK / NXT機器人學習營]上下午都滿班, 活動也圓滿閉幕了。

完整的活動內容我們將於 1/30 於台中女中, 2/15於台南崑山科大與中南部的師長朋友們見面。

1/30 報名: 王裕德教務主任 (te@ms.tcgs.tc.edu.tw)

2/15 報名: 崑山科大資工系 劉助理 (yihsuan@mail.ksu.edu.tw)

CAVE即將在 3月推出為期一天的 Android ADK 結合Arduino 研習營, 期待各位再度蒞臨。






Arduino-觸碰車

大家好!今天是台灣的大日子而且也快過年了,但是在此同時,CAVE的老師們也都沒有鬆懈下來,因為明天將會有一整天的Arduino的研習要跟大家分享成果唷!今天阿邦老師要來跟各位介紹應用Arduino+樂高的觸碰感應器及馬達來完成我們初學者常做的題目:碰碰車

編寫的方式跟之前的單光源軌跡車很類似,必須先設定我們的觸碰感應器必須接在哪個連接埠,語法如下:

touch1.init( &nxshield, SH_BBS1 );

接著必須先重置一下馬達:nxshield.bank_a.motorReset();

再來也必須設定馬達安裝在哪個位置:ba_v1 = nxshield.bank_a.sensorReadRaw(SH_S1);

接著我們必須設定當按下觸碰感應器及放開時馬達分別會做哪些動作:

if (  touch1.isPressed())
{
   Serial.println( "run unlimited" );
   nxshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Reverse, 50);
   nxshield.bank_a.motorRunUnlimited(SH_Motor_2, SH_Direction_Reverse, 50);
   delay(1000);
   nxshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Forward, 0);
   nxshield.bank_a.motorRunUnlimited(SH_Motor_2, SH_Direction_Forward, 100);
}

else {
   Serial.println( "stop (float)");
   nxshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Forward, 100);
   nxshield.bank_a.motorRunUnlimited(SH_Motor_2, SH_Direction_Forward, 100);
}

如此一來,我們的觸碰車便已完成囉!期待明天研習會可以與各位分享更多有去的程式唷!

[Arduino相關] S4A 破冰之旅

http://registrano.com/events/3c58cc

於 2/1 (三) 辦理一個『S4A 破冰之旅』的聚會,邀請所有對 Scratch 在 Arduino、WeDo、Kinect 或是Picoboard 的應用有興趣的夥伴一起來參加。

內容主要是認識各縣市的同好,並分享相關教學應用。
另外,我們也邀請到
佛光大學的許惠美老師、南港高中的高慧君老師
蟠桃國小的范運平老師、文德國小的陳國全老師
和大家分享相關的應用,現場也會有教具製作教學。歡迎參加唷.

==================================================================

S4A 破冰之旅

S4A 是一個由愛好 Scratch 應用或教學的夥伴所成立的社群,在這個園地中,無論是 Arduino、WeDo、Kinect 或是 Picoboard 的應用,都很歡迎一塊交流和分享。

S4A 破冰之旅是 S4A 社群的第一次聚會,我們希望透過本次的聚會,能集結並認識更多的同好,也因此我們希望大家可以將平時教學的用具帶來,讓我們一起集思廣益、動手做出更實用、更棒、更酷、更炫的教學用具,讓 Scratch 的教學和應用更多元、更豐富、更精彩。

詳細的內容如下:

日期:101 年 2 月 1 日(星期三)
時間:上午 10:00 – 下午 3:30
地點:台北市南港高中 實驗教室 (該場地分 4 組討論及實作)
備註:請儘可能攜帶筆電及教具(若無,可不帶)

議程:

時間

內容

備註

10:00 – 11:00

相見歡

讓來自不同縣市的老師介紹自己及有興趣的部份

11:00 – 12:00

展示交流

分成 Arduino、WeDo、Kinect 及 Picoboard 等組別,透過 15 分鐘交流快速了解相關應用

12:00 – 13:00

午餐時間

 

13:00 – 14:00

教學分享

夥伴分享

14:00 – 14:20

休息片刻

 

14:20 – 15:30

實作練習

實際『動手玩玩看』或『動手做做看』各種教學工具

15:30

快樂賦歸

 

[Arduino] button control RC servo

這裡分享一個可以透過開關來啟動Servo的程式:
當我們將開關打開時,servo開始旋轉,若轉到底時,則會回到原位,在繼續轉;
若將開關關起時,servo會歸回原位

#include
Servo myservo;
 int buttonpin = 2; //設定pin角
 int servopin = 8;
 int ledpin=13;
 int pos = 0; //設定servo位置(0~180)
int buttonstate= 0; //設定開關狀態

void setup() //設定初始狀態
{
myservo.attach(servopin);
pinMode(buttonpin, INPUT);
}

void loop() //程式執行過程
  {
    buttonstate = digitalRead(buttonpin); //讀取開關狀態
    if(buttonstate == HIGH) //假如開關開啟
   {
      pos++; //馬達位置+1
      myservo.write(pos);
      delay(15);
      digitalWrite(ledpin, HIGH); //LED燈開啟
      if(pos ==180) //假設servo位置已到底(180)
       {
         pos=0; //設定歸位 myservo.write(pos);
      }
    }
else //開關關閉
{
    if(pos!=0) //servo位置不在原始位置
    {
        pos–; //servo位置-1
        myservo.write(pos);
     }
     digitalWrite(ledpin, LOW); //LED燈關閉
     delay(7);
   }
}

[Android ADK] 環境建置說明 #2 Android裝置 ADK環境設定

[Android ADK] 環境建置說明 #2

Android裝置 ADK環境設定並執行DemoKit 範例程式

請先閱讀 [Android ADK] 環境建置說明 #1 Arduino 與相關函式庫

請注意執行時,ADK開發板需使用DC電源,不可使用AC電源,否則可能會抓不到裝置甚至損壞。

方才下載的ADK套件中的app資料夾是一個名為DemoKit的 Android程式,它可以讓您的Android裝置與ADK開發板互相溝通。ADK開發板可接收來自Android裝置的指令,例如點亮ADK開發板上 的LED燈;或是回送指令給Android裝置,例如ADK開發板上的搖桿狀態與溫度計讀數。

在Eclipse環境中安裝並執行DemoKit範例程式:

1.      您必須先依序安裝下列項目才能建置Android開發環境,詳細安裝步驟請參考:http://code.google.com/p/androidbmi/wiki/InstallAndroid . 大部分的時間都花在這…

A.    JDK

B.     Eclipse

C.     在Eclipse中下載Android開發套件

2.      確認已安裝了 Google APIs API Level 10 add-on 函式庫,裡頭包含了支援周邊模式(accessory mode)的Open Accessory函式庫,可支援Android手機2.3.4或Android平板3.1以上的裝置。如果您的設備都在3.1以上,您只需要使用API Level 12即可。更多有關API Level的使用資訊請參考the USB Accessory 說明頁面。(http://developer.android.com/guide/topics/usb /accessory.html#choosing)

3.      點選 File > New > Project…,然後點選Android > Android Project。

4.      在Project name: 欄位中輸入專案名稱:DemoKit。

5.      接著選擇Create project from existing source,點選 Browse,選擇剛剛的app 資料夾之後點選 Open,最後點選 Finish來關閉對話視窗。

6.      在Build Target中選擇「 Google APIs (Platform 2.3.3, API Level 10) 」。

注意:即便這裡只顯示 2.3.3,最新的Google API add-on 函式庫API level 10 已支援了USB Open Accessory API。

7.      正確載入如下圖,點選頁面下方的 Finish。

8.      將Demokit安裝在您的Android裝置上。手機設定請參考此頁:

http://www.appinventor.tw/phone

9.      將ADK開發板 (USB-A) 與您的Android裝置連接(micro-USB)。請確認ADK開發板的DC 電源已接上,或使用micro-USB 連接ADK開發板與電腦,這樣可以讓您監測(this also allows you to monitor the ADK開發板). 連接之後會跳出一個視窗,詢問您是否讓DemoKit程式與ADK開發版進行溝通。如果沒有出現prompt,請確認DC電源是否接上並重新連接ADK開 發板。

終於完成了!您可以在Android裝置上移動彩色LED或servo控制條來和ADK互動了(當然您得找個小伺服機),也可以按下螢幕上的relay按鈕。另一方面,您可以按下ADK開發板上的按鈕或轉動搖桿,看看Android裝置螢幕上所產生的效果。

        注意:Teemino與Arduino MEGA ADK這兩片板子並無LED與搖桿。

監測ADK開發板

The ADK 韌體檔案中包含了一些重要的資料,日後您如果需要開發專屬的周邊設備,您就需要好好了解它們。在firmware/arduino_libs /AndroidAccessory 資料夾下的檔案相當重要,因為它們負責偵測並連接那些已支援周邊模式的Android裝置。您可以自行對 arduino_libraries_directory /AndroidAccessory 資料夾下的相關程式碼,以及 firmware/demokit/demokit.pde 這個韌體檔中加上必要的 除錯指令(例如Arduino的 Serial.print() 指令),接著重新上傳到ADK開發板來看看韌體的實際運作方式。

您也可 以從Arduino Serial Monitor 來檢查相關訊息,請點選 Tools > Serial Monitor 並設定baud rate為 115200。如果您要進一步理解USB周邊是如何與Android裝置進行溝通的話,請參閱以下頁 面:http://developer.android.com/guide/topics/usb/adk.html#accessory- protocol。

[Android ADK] 環境建置說明 #1 Arduino 與相關函式庫

Android ADK安裝手冊  #1 Arduino 與相關函式庫

本文件說明如何安裝Arduino軟體,並接續安裝ADK開發板上的Android應用程式。開始安裝之前,請先下載以下檔案來設定開發環境:

注意:本文件是以Windows作業系統來說明,如果您使用MAC或是Linux,請自行參閱http://developer.android.com/guide/topics/usb/adk.html

注意:Android ADK要求Android版本為2.3.4(手機)或3.1(平板電腦)以上,所以請先確認您的Android裝置的版本符合此項需求。

懶人包:500MB製作中

您需要下載以下的東西:

1. Arduino軟體:包含了相關的函式庫以及開發環境,我們就是由此安裝ADK開發板的韌體。

2. CapSense 函式庫:包含了可感測體電容(human capacitance)的相關函式. ADK開發板上裝有這種電容按鈕。

3. ADK套件: 包含ADK開發板的韌體檔案,以及ADK開發板與Shield轉接板相關的硬體設計檔案。

安裝 Arduino軟體與相關函式庫

1.      由Arduino官方網站下載並安裝Arduino軟體。

2.      下載並解壓縮ADK套件,您會看到app、firmware以及hardware 這三個資料夾。

3.      下載並解壓縮CapSense

4.      安裝函式庫:

a.       將 firmware/arduino_libs/AndroidAccessory and firmware/arduino_libs /USB_Host_Shield 這兩個資料夾複製到 /libraries/ 資 料夾下,請注意要複製完整的資料夾,不能只複製底下的檔案。

b.      在  /libraries/ 資料夾下建立一個名為「CapSense」的資料夾。

c.       從剛剛解壓縮的CapSense 檔案中找到 CapSense.cpp and CapSense.h,將這兩個檔案複製到上一步所建立的CapSense 資料夾。

這時候您應該會在Arduino的libraries資料夾下看到以下三個資料夾: AndroidAccessory, USB_Host_Shield, and CapSense。

安裝ADK開發板的韌體:

1.      使用micro-USB埠將ADK開發板連接到您的電腦,這可讓電腦與開發板進行雙向通訊同時讓電腦對ADK開發板供電。

2.      啟動Arduino軟體。

3.      點選 Tools > Board > Arduino Mega 2560 來指定ADK開發板的種類。

注意:

4.      選擇正確的USB 埠:

點 選 Tools > Serial Port > COM# 來指定正確的通訊埠。COM埠會根據不同的電腦而有所不同,不一定都是同一組號碼。COM1 通常會被保留, ADK板一般來說會被指定為COM2或COM3, 依序延伸. 您可由下圖中看到ADK開發板被指定為COM14。


5.      點選 File > Open and 選擇 firmware/demokit/demokit.pde 來開啟檔案, 這是ADK開發板的韌體檔. 也可以直接將這個檔案拖拉至Arduino環境。

6.      點選 Sketch > Verify/Compile 來確保sketch可以順利編譯沒有錯誤。編譯成功會顯示Done Compiling, 如下圖。

7.      點選File > Upload to I/O Board。當Arduino畫面顯示「Done uploading.」,這時ADK開發板已經可以與您的Android裝置進行雙向溝通了。

請接續下篇 -> #2 Android裝置 ADK環境設定

[Arduino] RC Servo Rotate

Arduino的使用其實非常簡單,當我們下載Arduino IDE後就已經有一些基本的範例可以使用,並且已經將libraries寫好了,只需要打幾個簡單的函式,就可以達到我們要的效果,就拿Servo當範例。請您在Arduino環境中找到 Files –> Examples –> Servos, 底下有 Knob與 Sweep兩個範例, 現在我們來看看Sweep:

#include <Servo.h>
 
Servo myservo;  // 建立一個servo物件, 最多可以到8個
 
int pos = 0;    // 用來儲存servo位置的變數
 
void setup()
{
  myservo.attach(9);  // 指定servo接在pin 9
}
 
 
void loop()
{
  for(pos = 0; pos < 180; pos += 1)  // 要servo從0度轉動到180度的位置, 每次正向轉動1度
  {                               
    myservo.write(pos);              // 以變數pos的值來指定servo 的位置
    delay(15);                       // 等候15毫秒讓動作做完
  }
  for(pos = 180; pos>=1; pos-=1)     要servo從180度轉動到0度的位置, 每次逆向轉動1度
  {                               
    myservo.write(pos);             
    delay(15);                      
  }
}

我們就可以發現,我們如果要指定Servo轉到某個位置,不需要自己寫PWM,只需要打myservo.write(pos);    pos指定0~180就可以滿足我們的要求, 不需要處理一些低階的I/O指令。

大家一起試看看吧~

安裝LabVIEW for ardinuo

Arduino 也有為LabVIEW 撰寫toolkit,如果習慣使用圖形化介面來撰寫程式的朋友可以試看看~

首先我們先到下面網址點選下載:
http://sine.ni.com/nips/cds/view/p/lang/zht/nid/209835

我們需要先安裝JKI ,他是專門在撰寫LabVIEW第三方外掛的公司,必須要透過這個平台才能安裝 ardinuo toolkit

安裝完JKI後就可以點選下載toolkit啦~

在左上角點選你LabVIEW的版本及安裝

下載後我們就可以在function裡面看到Ardinuo toolkit了~

Modkit初體驗

大家現在對於Arduino應該不太陌生。除了原本Arduino所提供類似C語言的文字是開發環境之外,今天要為各位介紹一個另一個類似App Inventor的雲端圖控Arduino環境: Modkit。大家可以先進入到以下的網站

http://www.modk.it/

此程式的開發者因為受到Scratch的啟發,所以創建了這套程式,此程式的用法跟NXT-G及LabVIEW及APP Inventor相當類似,都是用圖控的方式來達成我們的目的,好處是不用記一堆程式碼,而且編寫起來也相當有效率,對於有新鮮構想但是程式基礎較為薄弱 的同學們,這套軟體想必可以帶給你們幫助,以下阿邦老師介紹一段教學影片,此影片教你怎麼撰寫 Hello World 等級的入門程式及閃爍燈號的成是,以下程式有 for 迴圈、delay() 函式。在編寫上真的比文字式的程式還要方便許多!

 by CAVE阿邦老師


除了Arduino之外,Modkit也支援其它的開發板,例如Lilypad, Knobcard, Servocard等

以Arduino來說,支援了Uno, Duemilanove(很難念…)與Diecimila。可以與Android手機連接的MEGA ADK目前沒有。

Modkit 把程式碼處理得很可愛呢,下圖是設定pin2的高電位0.3秒後,設定低電位0.5秒,並重覆執行。

 

[Arduino] Arduino 控制LEGO NXT機器人

自從拿到 NXShield-M之後, 就迫不急待要把它和NXT結合。 正確來說應該是把NXT主機取代掉, 讓Arduino控制器可以透過 NXShield來控制NXT馬達與感應器。 樂高零件的方便性與Arduino的開放, 將帶給您無限的可能! 先來看基礎示範影片, 控制馬達運轉:

請鎖定CAVE教育團隊部落格來挖出更多好玩的東西唷. NXShield中文化文件請看此

請注意: NXShield需另外供電9V。

要完成這一台小機器人您需要:

硬體:

1. Arduino控制板 x1

2. NXshield轉接板 x1

3. LEGO NXT機器人 1套

4. 9V電池與電池盒 x1

軟體:

Arduino 開發環境: http://www.arduino.cc/

NXshield 函式庫: http://openelectrons.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=8


9V電池盒. (紅線剛好掉了)

Adruino / NXT機器人套件上市囉!!

Arduino機器人周邊產品上市囉, 也請注意我們即將於1月舉辦的 Adruino 機器人研習課程, 歡迎報名參加。

以下皆為定價, 歡迎電洽 02 2306 2900 或 service@cavedu.com 詢問優惠價格。

NXshield-D : 定價3300

——————————————————————————————————————————–

 

NXshield-M : 定價3700
——————————————————————————————————————————–
Teemino  : 定價4000
檔案中文化業面請按我

LabVIEW的Arduino開發套件

http://sine.ni.com/nips/cds/view/p/lang/zht/nid/209835


NI針對Arduino套件的LabVIEW介面可讓您以簡單的LabVIEW操作介面來與Arduino微控制器進行互動。

 

藉由這個toolkitLabVIEW您可以控制或從Arduino微控制器取得資料,進而透過LabVIEW內建數以百計的函式庫進行資料分析或是開發控制Arduino硬體的演算法並將您的成果以優雅的介面呈現

 

Arduino的開發環境在此變成了一個以序列通訊埠與LabVIEW程式互動的I/O引擎。這可讓您快速地將Arduino上的資訊移到LabVIEW中,而不需要繁瑣的通訊調整,同步甚至要透過C語言來處理。您只要使用LabIVIEW中的開檔,讀寫檔案與關檔功能就可以存取Arduino上的數位/類比, PWM, I2CSPI等訊號。如果要進一步了解底層是如何運作好進一步修改並擴充功能,您只要將LabVIEWsubVI展開或是進到Arduino開發環境就可以了。

 

Arduino微控制器必須以USB序列通訊埠藍牙或XBee連接到已安裝LabVIEW的電腦Toolkit不提供離線操作

 

支援資訊

更多支援資訊與常見問題請參考 ni.com/arduino.

NXShield 文件中文化完成

http://www.openelectrons.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=8

這個可愛的小東西,可以讓Arduino的控制板來控制NXT的馬達與感應器,簡單來說就是把NXT主機放一邊吧!使用Arduino 來擁抱開放式硬體資源,您會找到更多 DIY 的經驗與樂趣。

工欲善其事,必先利其器。先把文件中文化是我們應該做的,接下來就是研習與課程囉!

檔案中文化感謝ch_lego 與 Bridan 兩位資深前輩的熱心協助。

檔案請按我下載

CAVE已經正式開賣本項產品,與 Arduino控制板 / NXT機器人合購另有優惠,請寄信(service@cavedu.com)或電洽 02 2306 2900。

延伸閱讀:ch_lego前輩的精彩使用心得

 

NXShield-M for Arduino Mega or ADK 上市了!!

http://www.openelectrons.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=8

OpenElectronics 發表的 [NXShield-M for Arduino Mega or ADK] 可以使用Android手機 <-> ADK板 <-> NXShield-M <-> 原本NXT sensor and motor。 可以玩的東西又更多了。

CAVE有代理這一系列的產品, 相關的sample code 與教學課程也已經準備好了,  歡迎大家寫信至 service@cavedu.com 詢價, 也請密切注意我們的課程發表!

自走車範例

接上Mindsensor的 Lineleader光感陣列