名称
analogWrite()
説明
アナログ値(PWM波)をピンに書き込む。LEDの明るさやモーターのスピードを変えることができる。analogWrite()を呼び出した後、指定したデューティー比の安定した方形波(矩形波)がピンに出力される。同じピンに対してanalogWrite()もしくは、digitalRead()、digitalWrite()を発行するまで、その方形波は出力され続ける。
どのピンが公式にサポートされているPWMピンなのかを知るには、ボードのピンアウトを確認すること。いくつかのボードでは、PWMを利用可能な追加のピンがある。これらのピンの使用は、タイマーの利用や他のピンとの潜在的な競合を考慮できる上級者にだけ推奨される。
PWM機能に加え、いくつかのボードでは、DACと記されているピンでanalogWrite()使用すると、本物のアナログ出力を行うことができる。DACが利用可能かは、ボードのピンアウトを確認すること。
analogWrite()を呼び出す前にpinMode()を利用してピンの設定を行う必要はない。
analogWrite()関数は、アナログピンやanalogRead()関数とは何の関連もない。
書式
指定したピンにPWM信号を生成するには、以下の関数を使う。
analogWrite(pin, value)
C言語シグネチャ(avr)
void analogWrite(uint8_t pin, int val);
引数
この関数は以下の引数を受け付ける。
| pin | 書き込みに利用するピン。データ型: int。 |
| value | 0(常にオフ)から255(常にオン)の間のデューティー比。データ型: int。 |
戻り値
なし。
コード例
ポテンショメーター(A3に接続)から読み取った値に応じて、LEDへの出力を設定する。
|
|
注意
5番ピンと6番ピンに出力されるPWM出力は、指定したデューティー比よりも高い。これは、PWM出力を生成するために利用する内部タイマを共有しているmillis()やdelay()関数との相互作用によるものである。デューティー比が低いとき(例えば0から10)に特に注意が必要で、デューティー比を0にしても、5番ピンと6番ピンでは、完全に出力を0にすることはできない。
参照
訳者註
PWMをサポートしないピンに対して、analogWrite()を実行した場合は、valが128未満のときにはLOW、128以上のときにはHIGHが出力されます。
オリジナルのページ
https://docs.arduino.cc/language-reference/en/functions/analog-io/analogWrite/
実装の解析
最終更新日
July 12, 2026