analogWrite()

名称

analogWrite()

説明

アナログ値(PWM波)をピンに書き込む。LEDの明るさやモーターのスピードを変えることができる。analogWrite()を呼び出した後、指定したデューティー比の安定した方形波(矩形波)がピンに出力される。同じピンに対してanalogWrite()もしくは、digitalRead()digitalWrite()を発行するまで、その方形波は出力され続ける。ほとんどのピンでPWMの周波数は約490Hzである。

ボード PWMピン PWM周波数
Uno, Nano, Mini 3, 5, 6, 9, 10, 11 490 Hz (pins 5 and 6: 980 Hz)
Mega 2 - 13, 44 - 46 490 Hz (pins 4 and 13: 980 Hz)
Leonardo, Micro, Yún 3, 5, 6, 9, 10, 11, 13 490 Hz (pins 3 and 11: 980 Hz)
Uno WiFi Rev2, Nano Every 3, 5, 6, 9, 10 976 Hz
MKR boards * 0 - 8, 10, A3, A4 732 Hz
MKR1000 WiFi * 0 - 8, 10, 11, A3, A4 732 Hz
Zero * 3 - 13, A0, A1 732 Hz
Nano 33 IoT * 2, 3, 5, 6, 9 - 12, A2, A3, A5 732 Hz
Nano 33 BLE/BLE Sense 1 - 13, A0 - A7 500 Hz
Due ** 2-13 1000 Hz
101 3, 5, 6, 9 pins 3 and 9: 90 Hz,
pins 5 and 6: 980 Hz

* 上記で示したピンでPWMを出力するのに加え、MKRとNano33 IoT、Zeroボードでは、DAC0(A0)ピンに対してanalogWrite()を利用することで、本当のアナログ出力を行うことができる。

** 上記で示したピンでPWMを出力するのに加え、Dueボードでは、DAC0とDAC1ピンに対してanalogWrite()を利用することで、本当のアナログ出力を行うことができる。

analogWrite()を呼び出す前にpinMode()を利用してピンの設定を行う必要はない。

analogWrite()関数は、アナログピンやanalogRead()関数とは何の関連もない。

書式

void analogWrite(uint8_t pin, int val);

引数

pin書き込みに利用するピン。
val0(常にオフ)から255(常にオン)の間のデューティー比。

戻り値

なし。

使用例

可変抵抗器から読み取った値に応じて、LEDへの出力を設定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
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
}

注意

5番ピンと6番ピンに出力されるPWM出力は、指定したデューティー比よりも高い。これは、PWM出力を生成するために利用する内部タイマを共有しているmillis()delay()関数との相互作用によるものである。デューティー比が低いとき(例えば0から10)に特に注意が必要で、デューティー比を0にしても、5番ピンと6番ピンでは、完全に出力を0にすることはできない。()が返却する値は、種々の要因(他のアナログ入力の値、手とボードとの距離等)によって変動する。

参照

言語 analogWriteResolution()

定義 PWM

利用例 Blink

訳者註

PWMをサポートしないピンに対して、analogWrite()を実行した場合は、valが128未満のときにはLOW、128以上のときにはHIGHが出力されます。

オリジナルのページ

https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/

Last Revision: 2020/08/30

実装の解析

analogWrite()

最終更新日

January 4, 2024

inserted by FC2 system