名称
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 | 書き込みに利用するピン。 |
val | 0(常にオフ)から255(常にオン)の間のデューティー比。 |
戻り値
なし。
使用例
可変抵抗器から読み取った値に応じて、LEDへの出力を設定する。
|
|
注意
5番ピンと6番ピンに出力されるPWM出力は、指定したデューティー比よりも高い。これは、PWM出力を生成するために利用する内部タイマを共有しているmillis()やdelay()関数との相互作用によるものである。デューティー比が低いとき(例えば0から10)に特に注意が必要で、デューティー比を0にしても、5番ピンと6番ピンでは、完全に出力を0にすることはできない。()が返却する値は、種々の要因(他のアナログ入力の値、手とボードとの距離等)によって変動する。
参照
定義 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
実装の解析
最終更新日
August 18, 2022