analogWrite()

描述

對 pin 腳寫入一個類比訊號數值 (pin 腳將輸出 PWM 波型),可以用在改變 LED 的亮度以及控制馬達的轉速,在呼叫 analogWrite() 之後,pin 腳將會產生一個指定 duty 的 PWM 方波,直到下一次再呼叫 analogWrite() (或者在同一個 pin 腳上呼叫 digitalRead()/digitalWrite());在 86Duino 上 PWM 訊號的頻率是 1000Hz。

在 86Duino ZERO 上,這個函式會作用在 pin 3、5、6、9、10、11、13;在 86Duino EduCake 上,這個函式會作用在 pin 3、5、6、9、10、11、13、21;在 86Duino ONE 上,這個函式會作用在 pin 3、5、6、9、10、11、13、29、30、31、32;在 86Duino PLC 上,這個函式會作用在 pin 1、3、4、7。

呼叫 analogWrite() 之前不需要去呼叫 pinMode() 來設定 pin 腳為輸出。

analogWriteanalogRead 函式都不會對類比訊號輸入做額外的動作。

語法


analogWrite(pin, value)

參數

pin: 輸出 PWM 的 pin 腳
value: PWM 的 duty 值 – 預設值介於 0 (常閉狀態) 到 255 (常開狀態)

可以呼叫 analogWriteResolution() 去設定更高的 PWM 數值

回傳

無回傳值

範例

根據可變電阻讀取到的數值,設定 LED 的亮度比例

int ledPin = 9;      // LED 燈連接到數位 pin 9
int analogPin = 3;   // 可變電阻連接到類比 pin 3
int val = 0;         // 儲存讀取到的電壓數值

void setup()
{
  pinMode(ledPin, OUTPUT);   // 設定 pin 9 腳為輸出
}

void loop()
{
  val = analogRead(analogPin);   // 讀取類比輸入 pin 腳
  analogWrite(ledPin, val / 4);  // analogRead 數值從 0 到 1023 
                                 // analogWrite 數值從 0 到 255
}

See also

analogRead()
analogWriteResolution()
Tutorial: PWM


語法參考主頁面

本頁由熱血青年 LBU 譯自英文版。

The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.