2012-01-20 02:28:37 小鯨魚

Arduino的數位訊號控制

Arduino 的 digital 腳位專用來控制數位的動作

EX: 燈光或任何電器的開和關

但因為他只有5V, 約是40mA的輸出,

若是有大電流的需求就得另外有控制板或自己用電晶體去放大電流

 

一般來說, 使用步驟如下

1: 先在void setup() 裡面使用  pinMode(看要設定哪一個腳位, 使用狀態);

腳位看該版子到底有幾個, 通常328為0~13, MEGA為0~53  

使用狀態為INPUT / OUTPUT ,定義腳位到底是用來輸出還是輸入

2. 使用時可直接利用digitalWrite(腳位, value) 對設定好的腳位作寫入動作

其中value 只能為HIGH/LOW ,意思就是開或關,看控制對象的功能定義

3. 使用digitalRead(腳位) 來讀取某個腳位的目前開關狀態

官網的標準範例, 照例使用pin 13

int ledPin = 13;  // 使用13腳是懶惰用法, 因為13腳已經內建燈號和電阻, 方便測試使用
void setup()
{
  pinMode(ledPin, OUTPUT);   

}

void loop()
{
  digitalWrite(ledPin, HIGH);   // HIGH讓燈亮

  delay(1000);  //等一秒

  digitalWrite(ledPin, LOW);    // LOW讓燈暗

  delay(1000); 

}

 

對於一般日常的應用來說,多數是開關的動作,以上功能已經差不多了

但有些時候需要有"程度"的控制

EX: 燈光的亮暗,可能需要稍微暗一點或是稍微亮一點

EX: 馬達的控制,快一點或是慢一點

這時候需要使用

analogWrite(腳位, value)   對某腳位去寫入一個value 界於0~255

這個value 是用PWM的數位脈波去模擬類比的動作

預設3.5.6.9.10.11 為可直接使用PWM規格的數位腳位

其他腳位要用模擬的方式去做

 

Arduino'的PWM 脈波的頻率是約500Hz

所以直接用這個要模擬精確的變化會比較有問題

EX: 聲音的變化,頻率不夠高,出來的聲音不好聽不夠細膩

通常需要別的東西的輔助或是使用別的指令來配合,這後續再來談^^