Arduino 劉士達 Shih-Ta Liu 2009/03/16 http://arduino.googlecode.com/files/arduino-0014-win.zip
Outline • Arduino 介紹 • Arduino 安裝 • Arduino + Led • Arduino + 可變電阻 • Arduino + 按鈕 • Arduino + PWM • Arduino + 水銀開關 • Arduino + 光敏電阻 + Serial.print
Arduino 介紹 • 什麼是Arduino? – Arduino是一塊基於開放原始碼的Simple i/o介面版,並且具有使用 類似java,C語言的開發環境。可以快速使用Arduino語言與Flash或 Processing…等軟體,作出互動作品。 – Arduino可以使用開發完成的電子元件例如Switch或sensors或其他 控制器、LED、步進馬達或其他輸出裝置。 – Arduino也可以 獨立運作成為一個可以跟軟體溝通的介面,例如說: flash processing Max/MSP VVVV 或其他互動軟體…
Arduino 書籍 • Tom Igoe – NYU, ITP副教授 – 劇院照明技術員 – Physical computing Making Things Talk http://www.oreilly.com/catalog/9780596510510/
Arduino 書籍 • Massimo Banzi – Tinker.it 公司員工 – 數位科技設計 Getting Started With Arduino http://oreilly.com/catalog/9780596155513/
Arduino 特色 • Open Source電路圖設計 + 程式開發介面 • 免費下載,也可依需求自己修改!! • Arduino 可使用ISCP線上燒入器,自我將新的IC晶片燒入「bootloader」。 • 可依據官方電路圖,簡化Arduino模組,完成獨立運作的微處理控制。 • 可簡單地與感測器,各式各樣的電子元件連接(EX:紅外線,超音波,熱敏電阻,光敏電阻,伺服馬 達,…等) • 支援多樣的互動程式 ex: Flash,Max/Msp,VVVV,PD,C,Processing…等 • 使用低價格的微處理控制器(ATMEGA8/168/328) NT$120~NT$150 • USB介面,不需外接電源。另外有提供9VDC輸入 • 應用方面,利用Arduino,突破以往只能使用滑鼠,鍵盤,CCD等輸入的裝置的互動內容,可 以更簡單地達成單人或多人遊戲互動。
Arduino 經典範例 • Techart 1 [DVD] • Techart 2 [DVD] • Japan – http://www.youtube.com/watch?v=cLit6DaB6YU – http://www.youtube.com/watch?v=gCofZdpVr1U – http://www.youtube.com/watch?v=2Ki5lWDFnV8 – http://www.youtube.com/watch?v=W_bIiDwkANA – http://www.youtube.com/watch?v=MOJVYZlzUQ0 – http://www.youtube.com/watch?v=JK504GMj8Rw
Arduino 硬體
Arduino 硬體-新款
Arduino 規格 • l Digital I/O 數位式輸入/輸出端共 1~13。 • l Analog I/O 類比式輸入/輸出端共 0~5。 • l 支援USB接頭傳輸資料及供電(不需額外電源)。 • l 支援ICSP線上燒錄功能。 • l 支援TX/RX端子。 • l 支援AREF端子。 • l 支援3~6組PWM端子。 • l 輸入電壓: • 接上USB時無須供電。 • 5V~12V DC輸入。 • l 輸出電壓:5V DC輸出 • l 採用Atmel Atmega8/168/328 單晶片。 • l Arduino大小尺寸:寬70mm X 高54mm。
Arduino Core(AVR ATMEGAx) • ATMEGA168 – F.max 20Mhz(20MIPS) – RISC 架構 – Interrupts *26 – 16KBytes Flash – PWM Channels *6 – 0.5kBytes EEPROM – RTC YES – 1KBytes SRAM – Self Program Memory YES – I/O *23Pins – SPI + USART – VCC 1.8~5.5V – Watchdog YES – 10-bit ADC *6 – UART *1 – 16-bit Timers *1 http://www.atmel.com/dyn/products/Product_card.asp?part_id=3303&ListAllAttributes=1
Arduino NG
Arduino 硬體類型 • Duemilanove
Arduino 硬體類型 • Stamp
Arduino 硬體類型 • Pro Mini
Arduino 硬體類型 • PRO
Arduino 硬體類型 • Bluetooth
Arduino 硬體類型 • Ethernet Shield
Arduino 硬體類型 • XBee Shield
Arduino 硬體類型 • Funnel IO
Arduino 硬體類型 • Skyinny
Arduino 硬體類型 • LilyPad
Arduino 硬體類型 • Wiring
Arduino 硬體類型 • Bare Bones Board
Arduino 硬體類型 • Seeeduino
Arduino 硬體類型 • Illuminato
Arduino 硬體類型 • Freeduino
Arduino 硬體類型 • Arduclema
Arduino 硬體類型 泰國) 泰國 • POP168(泰國
Arduino 硬體類型 • Prototyping Board
Arduino 硬體類型 • Flexi
Arduino 硬體類型 • Baby Orangutan B-48
Arduino 硬體類型 • LEDuino
Arduino 硬體類型 • MIDUINO
Arduino 硬體類型 • Single-Sided Serial Board
Arduino 硬體類型 • Teensyduino
• Sanguino
Arduino 硬體類型 • Arduino Ethernet board
Arduino 軟體 • Windows – XP, Vista32/64 • MAC – PPC, Intel • Linux – 32/64 http://arduino.cc/en/Main/Software
Arduino 繁體中文 • Windows – XP, – Vista32/64 http://arduino.tw/?p=97
用Eclipse 寫 Arduino http://arduino.tw/?p=95
用Eclipse 燒入 Hex http://arduino.tw/?p=98
Arduino 第一步 • 準備arduino
Arduino 第一步 • 材料
Arduino 安裝 • 1.將Arduino接上方頭的USB線,另外一端連 接電腦 • 2.接上之後會出現FTDI的驅動程式安裝畫面
Arduino 安裝 • 指定驅動程式安裝目錄,一般抓下來的 arduino資料夾裡面就會包含(EX:C:arduino- 0014driversFTDI USB Drivers)。
Arduino 安裝
確認COMPORT • 連接好硬體之後,可以先檢查一下你的Arduino是在哪個 COM port。你可以打開(我的電腦->控制台->系統->切換到" 硬體"標籤->點選"裝置管理員"->展開連接埠(Com和LPT)-> 查看USB Serial Port(COM4),括號裡面的數字就是你連接的 Arduino Port)。
啟動Arduino
開始來寫程式吧!! 開始來寫程式吧 int ledPin = 13; // 這裡設定所要閃爍的LED燈腳位 void setup() { pinMode(ledPin, OUTPUT); // 這裡設定所要輸出的PIN腳模式 } void loop() { digitalWrite(ledPin, HIGH); // 設定PIN13腳位為高電位 = 5V delay(1000); // 設定延遲時間,1000 = 1秒 digitalWrite(ledPin, LOW); // 設定PIN13腳位為低電位 = 0V delay(1000); // 設定延遲時間 }
Verify • 而將寫好的程式碼撰寫在你的Arduino介面裡面之 後,接下來要先按下Verify 這個按鈕,程式會先幫 忙你檢查語法是否錯誤,如果沒有錯誤,會出現 (Done Compiling)。
MCU & Serial Port • 再來選擇你目前的COM設定,如果這一步沒有確 認設定好的話,會是出現錯誤訊息的。在軟體工 具上面找到Tools->Serial Port->COM4(這裡的COM Port依照你所裝上去的USB Serial Port),確認之後 打勾就可以了。
Reset (新版免)
Upload • 再按下軟體上面的Upload to I/O Board ,等 待幾秒鍾,板子上面的RX/TX燈號會連續閃 爍,等閃爍之後,軟體上面的下面會出現: Atmel AVR ATmega168 is found. Uploading: flash Firmware Version: 1.18 Firmware Version: 1.18
Check • 這些訊息表示有找到晶片,並且已經上傳上去 Arduino,你可以看看LED13燈號是否會每隔一秒 鍾閃滅閃滅,如果是的話,就完成你的第一次使 用Arduino了。
流程
是怎麼運作的? void setup() 當Arduino啟動時須設定的參數 { } void loop() 當Arduino啟動後,會一直執行的工 作 { }
是怎麼運作的? int ledPin = 13; 宣告一個ledPin的變數 = 13 void setup() { } void loop() { }
是怎麼運作的? int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); 設定某Pin腳為OUTPUT模式, 輸出模式 } 也有INPUT模式 void loop() { }
是怎麼運作的? int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); 設定PIN13腳位為高電位 = 5V 亮!! delay(1000); 設定延遲時間,1000 = 1秒 延遲 }
是怎麼運作的? int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); 設定PIN13腳位為低電位 = 0V 滅!! delay(1000); 延遲 }
Arduino實作 L4 - 接上可變電阻讀取類比數值 http://arduino.tw/?page_id=24 L5- 讀取按鈕訊號數值 http://arduino.cc/en/Tutorial/Button L6 - 產生PWM訊號輸出讓LED漸亮滅 http://arduino.cc/en/Tutorial/Fading L7 - 水銀開關讀取與LED變化 http://arduino.tw/?p=71 L8 - 光敏電阻與Serial.print http://arduino.tw/?p=68
麵包板怎麼接?
接上可變電阻讀取類比數值
code int potPin = 0; // 宣告類比腳位輸入的PIN腳 int val = 0; // 宣告變數Val = 0 void setup() { Serial.begin(9600); //設定SerialPort的速度9600 = 9600bit/s } void loop() { val = analogRead(potPin); // 用analogRead()這個函式讀取特定腳位的數值到變數 Serial.print(val); //印出數值在Serial.Monitor delay(150); //延遲讀入的時間為150ms }
讀取按鈕訊號數值
code int ledPin = 13; // 要輸出的LED PIN腳 int inPin = 10; // 要輸入的按鈕 PIN腳 int val = 0; // 設定一個狀態變數 void setup() { pinMode(ledPin, OUTPUT); // 設定LEDPIN腳為輸出模式 pinMode(inPin, INPUT); // 設定輸入PIN腳為輸入模式 Serial.begin(9600); // 設定序列埠的速度為9600bps } void loop(){ val = digitalRead(inPin); // 取得PIN 10 的值 Serial.println(val); // 印出所抓到的數值 delay(100); // 延遲顯示時間 = 0.1秒 if (val == HIGH) { // 如果按鈕被按下 digitalWrite(ledPin, LOW); // 就把LEDPIN輸出訊號為LOW電壓,就是不亮 } else { digitalWrite(ledPin, HIGH); // 反之讓LED亮著 } }
產生PWM訊號輸出讓LED漸亮滅
code int value = 0; int ledpin = 9 void setup() { } void loop() { for(value = 0 ; value <= 255; value+=5) { analogWrite(ledpin, value); delay(30); } for(value = 255; value >=0; value-=5) { analogWrite(ledpin, value); delay(30); } }
水銀開關讀取與LED變化
接好以後
int ledPin = 13; int analogPin = 2; code int val = 0; int threshold = 1; void setup() { pinMode(ledPin, OUTPUT); } void loop() { val = analogRead(analogPin); if (val >= threshold) { digitalWrite(ledPin, HIGH); // 當水銀開關HIGH時,led持續發亮 } else { digitalWrite(ledPin, HIGH); // 當水銀開關LOW時,led閃爍 delay(300); digitalWrite(ledPin, LOW); delay(300); } }
光敏電阻與Serial.print
code int potPin = 2; //設定讀入的腳位 int val = 0; void setup() { Serial.begin(9600); } void loop() { val = analogRead(potPin); Serial.print(val); //將讀取的數值顯示在serialmonitor delay(150); }
如何自製Arduino? • 已有FTDI晶片(USB to RS232) • 使用MAX232 • 完全用電子元件製作
Arduino basic http://arduino.cc/en/uploads/Main/Arduino-Diecimila-schematic.pdf
MAX232
Arduino Serial http://webzone.k3.mah.se/k3dacu/arduino/releases/serial_v2/arduino_rs232_v2.png
Bootloader • http://arduino.tw/?p=86
Security bits
Interfacing with software Arduino + Java Arduino + Flash Arduino + Processing Arduino + PD (Pure Data) Arduino + MaxMSP Arduino + VVVV Arduino + Director Arduino + Python Arduino + Ruby Arduino + C Arduino + C++ (using libSerial) Arduino + C++ (for windows) Arduino + C# Arduino + Linux TTY Arduino + Virtools Arduino + SuperCollider Arduino + Instant Reality (X3D) Arduino + Second Life Arduino + Liberlab (measurement and experimentation software) Arduino + BlitzMax (access restricted to BlitzMax users) Arduino + Squeak Arduino + Mathematica Arduino + Matlab Arduino + Mono Arduino + Isadora Arduino + PERL Arduino + other Arduino + Any SW http://www.arduino.cc/playground/Main/InterfacingWithSoftware
Arduino + Virtools http://arduino.tw/?p=178
Arduino 網站 • 原廠 Arduino.cc • 臺灣 Arduino.tw • 美國AVR原廠 www.atmel.com • AVR討論區 AVR Freaks www.avrfreaks.net/ AVR • Arduino討論區 http://www.arduino.cc/playground/ • 購買Arduino : www.sparkfun.com
END Arduino.tw

Arduino Basic