AnalogWrite()
描述
將一個模擬值(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 }
擴展閱讀
更多建議和問題歡迎反饋至 YFRobot論壇