人機介面 Arduino 簡介 授課教師 開課單位
Arduino 簡介 Arduino 是一塊 Open source 的 Simple i/o 介面板,並 且具有使用類似 java, C 語言的開發環境。 可以快速使用 Arduino 語言 ( 基於 wiring) 與 Flash 或 Processing… 等軟體,作出互動作品。 Arduino 可以很容易搭配電子元件,例如 LED 、步進 馬達 … 等,進行各類功能設計。
Arduino 特色 Open Source 的電路設計圖及程式開發介面 可使用 In Circuit Serial Programming (ICSP) 線上燒入器,自我將新 的 IC 晶片燒入「 bootloader 」 可簡單地與感測器,各式各樣的電子元件連接 (EX :紅外線, 超音波, 熱 敏電阻, 光敏電阻, 伺服馬達,… 等 ) 支援多樣的互動程式 ex: Flash,Max/Msp,VVVV,PD,C,Processing… 等 使用低價格的微處理控制器 (ATMEGA8/168/328) NT$120~NT$150 USB 介面,不需外接電源。另外有提供 9VDC 輸入 利用 Arduino ,突破以往只能使用滑鼠,鍵盤, CCD 等輸入的裝置的 互動內容,可以更簡單地達成單人或多人遊戲互動。
Arduino 硬體介紹
Arduino 規格 Digital I/O 數位式輸入 / 輸出端共 1~13 。 Analog I/O 類比式輸入 / 輸出端共 0~5 。 支援 USB 接頭傳輸資料及供電 ( 不需額外電源 ) 。 支援 ICSP 線上燒錄功能。 支援 TX/RX 端子。 支援 AREF 端子。 支援 3~6 組 PWM 端子。 輸入電壓: – 接上 USB 時無須供電。 –5V~12V DC 輸入。 輸出電壓: 5V DC 輸出 採用 Atmel Atmega8/168/328 單晶片。
ATMEGA168 微處理器規格 ( 一 ) RISC 架構 16KBytes Flash 0.5kBytes EEPROM F.max 20Mhz(20MIPS) Interrupts *26 PWM Channels *6 RTC YES 1KBytes SRAM I/O *23Pins
ATMEGA168 微處理器規格 ( 二 ) VCC 1.8~5.5V 10-bit ADC *6 16-bit Timers *1 Self Program Memory YES SPI + USART Watchdog YES UART *1
Arduino 開發環境 Windows –XP, Vista32/64 MAC –PPC, Intel Linux –32/64
Arduino 安裝 1. 將 Arduino 接上 USB 線,另外一端連接電腦 2. 接上之後會出現驅動程式安裝畫面
Arduino 安裝 指定驅動程式安裝目錄
Arduino 安裝
檢查 Arduino 是在哪 COM port
啟動 Arduino
Arduino Language Reference (1) Arduino 語法 – 變數 (Variables) – 結構 (Structure) – 函數 (Functions) 類別庫 (Libraries) 運用
Arduino Language Reference (2) 變數 (Variables) – 資料型態 Boolean Char Byte Int Long ….etc
Arduino Language Reference (3) Arduino 語法基本結構 (Structure) void setup()// Arduino 啟動時須設定的參數 { // 設定的參數 } void loop()//Arduino 啟動後,會一直執行的工作 { // 執行的工作 }
Arduino Language Reference (4) 函數 (Functions) –Arduino 的 Functions 分成以下七類 Digital Analog Time Math Bits/Bytes Interrupts Serial Communication – 額外的 Libraries
Arduino Language Reference (5) Digital I/O –pinMode(pin, mode) 初始化指定的 pin 的狀態, mode 參數必須是 OUTPUT 或是 INPUT ,使用時須放在 void setup() 當 中。 –digitalWrite(pin, value) –Int digitalRead(pin) 讀取或寫入所指定的 pin 數值 digitalRead 所讀取回來的值是整數型態 int
Arduino Language Reference (6) Analog I/O –Int analogRead(pin) 回傳所指定的 pin 腳位轉換成為 0~1023 的整數數值。 Arduino 的 ADC 轉換解析度為 10-bit ,且 Arduino 會自 動根據電壓的大小自動切割每個數值單位 –analogWrite(pin, value) 此 function 主要運用在脈波調變寬度模式 (Pulse Width Modulation , PWM) 輸出。利用 Arduino 內部 的計數器提供精確的計時能力,提供 8-bit 的 PWM 位 元寬度,最大值達 255(FF) ,頻率約在 510Hz 。
Arduino Language Reference (7) Time –delay(ms) 延遲程式迴圈的運作, ms 的單位為千分之一秒, ( 毫秒 ) ,因此要延遲一秒需填入 1000 。 –dealyMicroseconds(us) 延遲百萬分之一秒 ( 微秒 ) ,微秒是對毫秒需要更細 的時間切割所使用,此 function 的最大值為 。
Arduino Language Reference (8) Math –min(x, y) 取兩數間最小值 –max(x, y) 取兩數間最大值 –abs(x) 取 x 的絕對值 –sqrt(x) 取平方根 –Sin(radians) 正弦 –Cos(radians) 餘弦 –Tan(radians) 正切 –….etc
Arduino Language Reference (9) Serial Communication –Serial.begin(speed) –Int Serial.available() –Int Serial.read() –Serial.print(data) –Serial.println(data)
實驗說明 Arduino DIY 入門感測套件 文件 : Sparkfun inventor’s guide Sparkfun inventor’s guide 實驗手冊內附 14 個單元,有詳細接線圖、 Arduino 程式碼、 影片,內容十分詳盡,可 依需求選擇其中幾個單元實作。
實驗單元 {CIRC01} Getting Started - (Blinking LED) {CIRC02} 8 LED Fun - (Multiple LEDs) {CIRC03} Spin Motor Spin - (Transistor and Motor) {CIRC04} A Single Servo - (Servos) {CIRC05} 8 More LEDs - (74HC595 Shift Register) {CIRC06} Music - (Piezo Elements) {CIRC07} Button Pressing - (Pushbuttons) {CIRC08} Twisting - (Potentiometers) {CIRC09} Light - (Photo Resistors) {CIRC10} Temperature - (TMP36 Temperature Sensor) {CIRC11} Larger Loads - (Relays) {CIRC12} Colorful Light - (RGB LED) {CIRC13} Measuring Bends - (Flex Sensor) {CIRC14} Fancy Sensing - (Soft Potentiometer)
參考資料 Arduino 官方網站 Language Reference Arduino 範例 Arduino 台灣使用者社群 Arduino 新手入門 Arduino 程式語法 教學文件