AnalogWrite()

從 YFRobotwiki
在2017年9月13日 (三) 10:19由Allblue對話 | 貢獻所做的修訂版本

跳到: 導覽搜尋

描述

將一個模擬值(PWM波形)寫入引腳。可用於以不同亮度點亮LED或以各種速度驅動電機。在調用analogWrite()之後,該引腳將產生指定占空比的穩定方波,直到下一次調用analogWrite()(或在同一引腳上調用digitalRead()或digitalWrite())。大多數引腳上PWM信號的頻率約為490 Hz。在Uno和類似的板上,引腳5和6的頻率約為980 Hz。萊昂納多的引腳3和11也以980赫茲運行。

在大多數Arduino板卡(ATmega168或ATmega328)上,這個功能適用於針腳3,5,6,9,10和11.在Arduino Mega上,它可以在2 - 13和44 - 46的引腳上工作。帶有ATmega8的電路板只支持9,10和11引腳上的analogWrite()。

Arduino Due支持在引腳2至13,加上引腳DAC0和DAC1上的analogWrite()。與PWM引腳不同,DAC0和DAC1是數模轉換器,可作為真正的模擬輸出。

在調用analogWrite()之前,您不需要調用pinMode()將引腳設置為輸出。

analogWrite函數與模擬引腳或模擬指令功能無關。


語法

analogWrite(pin, value)


參數

pin: 要寫的引腳。

value: 占空比:介於0(始終關閉)和255(始終為開)之間。


返回

None


注意: 引腳5和6上產生的PWM輸出將具有高於預期的占空比。 這是因為與millis()和delay()函數的交互,它們共享用於生成這些PWM輸出的相同內部定時器。 這將主要在低占空比設置(例如0 - 10)上注意到,並且可能導致值0不能完全關閉引腳5和6上的輸出。


示例

將輸出設置為與從電位器讀取的值成比例的LED。

int ledPin = 9;      // LED connected to digital pin 9
int analogPin = 3;   // potentiometer connected to analog pin 3
int val = 0;         // variable to store the read value

void setup()
{
  pinMode(ledPin, OUTPUT);   // sets the pin as output
}

void loop()
{
  val = analogRead(analogPin);   // read the input pin
  analogWrite(ledPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}


擴展閱讀

- analogRead()
- analogWriteResolution()




返回Arduino語法參考列表

更多建議和問題歡迎反饋至 YFRobot論壇