2011年5月5日 星期四

Arduino 入門教學

簡介

Arduino 是一張微控制器板子 (microcontroller board),約莫一個手掌大:

image

使用者可以在 Arduino 板子上接上各種電子裝置,例如 LED 燈、喇叭、馬達、開關、溫濕度感測器、紅外線發射與接收器、LCD 顯示裝置,以及 Ethernet, WiFi, XBee, Bluetooth, RFID, GPS 等各種通訊模組。若再配合撰寫一些自動控制的程式,就能利用 Arduino 做出各式各樣的自動控制應用,例如利用溫度感測器控制風扇的運轉、使用可變電阻控制燈光的明暗、控制馬達的轉速、利用紅外線遙控家電/ 利用伺服機 (Servo) 控制機械手臂或機器人,以及製作自走車、飛行器等等。

這系列教學將讓你認識 Arduino,並且向你介紹各種基本電子裝置的使用方法。

教學目標

學習撰寫 Arduino 程式,以及使用各種基本電子裝置,包括: LED, 蜂鳴器、觸動開關、可變電阻、PWM 調光器、光敏電阻、七段顯示器、字元 LCD、74HC595 移位暫存器、Matrix LED、Keypad、伺服馬達、紅外線移動感測器、紅外線測距以及繼電器等。

授課對象

Arduino 進入門檻低,即便你沒有電子電機相關科系的背景,也可以很容易學會使用 Arduino,因此只要具備基本電腦操作能力就可以學習。

教學目錄
影音教學
補充教材

27 意見:

Ed 提到...

我沒學過語言(自己有研讀過一點)只是喜歡DIY
最近上網在國外DIY網站捉來的http://www.tlb.org/eunicycle.html
請問這些是哪種程式語言,要怎麼灌到Arduino board上執行
1.adc.c 2.dc.h 3.debug.h 4.Makefile 5.scooter.c 6.uart.c 7.uart.h
感謝
如果無暇回答可否推介可以回答人員,我可以付費諮詢
我的mail:eddie5492001@yahoo.com

coopermaa 提到...

它的程式是用 C 語言寫的。

你要把它灌到 Arduino board 上跑嗎?
不過,這個踏板車用的是 ATmega128 這顆 MCU
目前我還沒看到有用 ATmega128 的 Arduino board

如果你要把它灌到像 Uno 或 Duemilanove 上,因為所用的 MCU 不一樣
程式可能要做一些修改才行。

沒想到踏板車也可以用電子控制啊!

YUI-NING 提到...

請問市面上板子那麼多
價位也有區分
入門的用哪個好?

coopermaa 提到...

Hi, 這要看情況,因為學 Arduino 還要搭配週邊的電子零件,比如 LED, Button, 可變電阻, 蜂鳴器, 光敏電阻、馬達等,如果你是初學者,不知道上哪買這些零件,我會建議買個入門套件包,例如 Seeeduino Grove 積木入門套件 (http://www.aroboto.com/shop/goods.php?id=488)

如果你有電子背景,電子零件的取得對你不是問題的話,建議就買塊 Arduino UNO 或是 Duemilanove 就可以了。以價格而言,Duemilanove 現在價格已經比前兩年便宜很多了,我前年買還要 1000 元左右,現在網路上 7~800 就有了,甚至最便宜的已經殺到 500 多元。

Kobe Nein 提到...

從筆電拆下來的藍芽模組可以拿來用嗎?

還有數位相機的panel可以用嗎?
我有幾片,有興趣可以送你一片玩玩

coopermaa 提到...

那個藍牙模組有什麼介面? 可以查得到規格嗎?
數位相機的 lcd panel? 哈,我也不曉得能不能接到 arduino,可以試試

蘇冠宇 提到...

您好:
拜讀您的文章,覺得ARDUINO很有趣
也跟著實作了。
現在想要更進階讀取SPI傳輸介面的加速規訊號(型號ADIS16223)
但是我發現SPI函式裡面好像沒有接收的函式
都是傳送的函式
我想請問您有使用過SPI的相關經驗可以分享給我嗎?
感謝...
附上我的E-mail
e9827@mail.pmc.org.tw

coopermaa 提到...

您好,Arduino 的 SPI library 傳送跟接收都是用 SPI.transfer() 這個函式喔,函式說明:

http://arduino.cc/en/Reference/SPITransfer

這裏有個 DS3234 RTC 讀寫日期的範例:
http://tronixstuff.wordpress.com/2011/06/15/tutorial-arduino-and-the-spi-bus-part-ii/

Arduino IDE 裏也有一個接收的範例可參考,在 arduino-1.0.x/libraries/SPI/examples 底下,裏面有一個 BarometricPressureSensor 讀取壓力感測器的例子

FYI.

賴東谷 提到...

請問一下,看到官網有很多libraries但是都載不下來!是要去那個平台可以載這些libraries~~感謝!!
http://arduino.cc/en/Reference/Libraries

Cooper Maa 提到...

Standard Libraries 不用下載,因為已經包在 Arduino IDE 裏了

至於全世界網友貢獻的 Contributed Libraries 可以下載啊
你說載不下來是指?

賴東谷 提到...

你的意思是指在IDE本身就有內建這些libraries。只是不同版本libraries數量種類有些差異吧!因為我只有看到各個libraries的介紹沒有看到*cpp及*h的載點

Cooper Maa 提到...

對,標準 libraries 網路上沒有下載點,Contributed libraries 才有
你裝好 Arduino IDE 後,打開 Arduino-1.x.x\libraries 資料,就會看到標準的 libraries

賴東谷 提到...

謝謝您的回答,Contributed libraries的載點是在?

Cooper Maa 提到...

Contributed libraries 每個 library 都有其各自的介紹網頁,以底下的 Messenger 為例,點進去之後就可以找到下載點:

Messenger - for processing text-based messages from the computer
NewSoftSerial - an improved version of the SoftwareSerial library
OneWire - control devices (from Dallas Semiconductor) that use the One Wire protocol.
PS2Keyboard - read characters from a PS2 keyboard.
Simple Message System - send messages between Arduino and the computer
SSerial2Mobile - send text messages or emails using a cell phone (via AT commands over software serial)
Webduino - extensible web server library (for use with the Arduino Ethernet Shield)
X10 - Sending X10 signals over AC power lines
XBee - for communicating with XBees in API mode
SerialControl - Remote control other Arduinos over a serial connection

高俊傑 提到...

Cooper Maa您好,我以往是作機械硬體方面的工作,因為想開發一些樣品機械而在網上接觸到Arduino,可是跟以往所學不同,加上工作關係,所以學習進度很慢,現我有一個問題想請教Cooper Maa先生,就是我在網上看到Arduino mega 2560和Arduino UNO都在控制步進馬達,想請問上述兩種Arduino在控制步進馬達哪一種比較容易上手及好操作,謝謝。

Cooper Maa 提到...

@高俊傑
你好,Mega 2560 跟 UNO 用的 library 是一樣的,所以基本上是沒有什麼差別的,用哪一塊板子都行。

Stepper library 包在 Arduino IDE 裏,位置在 arduino-xxxx/libraries/stepper,裏面有一些範例可以參考。

jensenwong 提到...

Cooper Maa 您好,我是就讀電子方面的學生,在學習使用Arduino。我在設計一個project,有關arduino gps,我知道arduino gps有多樣東西組成,有antenna,gps module,duemilanove,不過好像很複雜,請問你有這方面的教學嗎?

islet.Chen 提到...

hi,Cooper
不知您是否知道,blogspot在中國大陸是被party管制的對象,一般無法訪問。我覺得您的Arduino教學很好,想將他們轉帖到大陸的Arduino論壇上,讓大陸的愛好者也可以看到,希望得到您的授權。
當然,轉帖時會保留您的網址,但遺憾的時,網址還是無法訪問...
希望您能email聯繫我,告知您的意向,謝謝
我的郵箱:
islet.chen@gmail.com

islet.Chen 提到...

hi,Cooper
不知您是否知道,blogspot在中國大陸是被party管制的對象,一般無法訪問。我覺得您的Arduino教學很好,想將他們轉帖到大陸的Arduino論壇上,讓大陸的愛好者也可以看到,希望得到您的授權。
當然,轉帖時會保留您的網址,但遺憾的時,網址還是無法訪問...

Cooper Maa 提到...

hi islet,

沒問題,只需保留作者名字和網址鏈結即可

Cooper Maa 提到...

@jesenwong

你想知道怎麼使用 gps shield,還是設計硬體線路和天線的設計? 如果是使用的話,可以參考一下 ladyada 的教學:

http://www.ladyada.net/make/gpsshield/

CHENG YU To 提到...

cooper 老師,小弟是新手上路,學習是因為想把led加裝到一組調節按鍵上(有8個鍵),效果想做到某情況下led全亮,當按到按鍵1的時候,led1亮,其他全關。
請問一下用哪個語法會比較簡單?

Cooper Maa 提到...

Hi, 不是很清楚耶,調節按鍵上面有 8 個鍵? 那你有幾顆 Led? 有線路圖嗎?

你參考一下「Lab2 使用按鍵控制 LED 燈號」,這篇示範一個按鍵控制一顆 LED,照著程式稍微改一下應該就可以達到你目的,比如:

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED 1 on:
digitalWrite(ledPin, HIGH);
// turn all other LEDs off
// todo: your code here
}
else {
// turn LED 1 off:
digitalWrite(ledPin, LOW);
// Do other stuff here"
}


CHENG YU To 提到...

老師,可以用電郵聯絡嗎?我怕在這寫會太長。
hktoxx@gmail.com

CHENG YU To 提到...

cooper老師如果不方便留電郵的話我繼續在這裡問。
我的情況是想把一組電動座椅的按鈕改裝成有led背光燈,這組按鈕總共有八個鍵(所以led都會是八顆),另有一個開關鍵負責開/關背光燈(背光燈是由該八顆led組成),每一顆led對應每個鍵,我想要的效果是
1.背光燈關的時候,按下按鍵1的時候只有led1亮,其他七顆全關。
2.背光燈開的時候 ,也是一樣,按下按鍵1只有led1亮,其他全關。

Jolly Roger_K 提到...

Cooper 大大你好:

最近想做個居家網路防盜監控來玩玩(MCU:At89s51組合語言+ASP+資料庫+VB+RS485串列通訊),目前At89S51+VB已經很熟練,但看到Cooper Maa 大大介紹的Arduino 感覺會節省很多開發的時間,大大你對於若要做此居家網路或日後產品開發時,你會用哪一種Mcu呢?

(ps.發現到雖然Arduino的Open Soure硬體/軟體很多,很多較複雜的程式直接呼叫Library函式即可,但是好像在Sheld部分有點價位)

Cooper Maa 提到...

Hi Jolly,

我不是大大啊

基本上,我個人的想法是 Arduino 是 Prototyping Platform,很適合拿來做產品原型 Proof of Concept,等到驗證可行後,最後還是得控制成本,選比較適合的 MCU, 所以 8051 也是一個選項