Arduinoリファレンス

Arduinoリファレンスの日本語訳のページです
garretlab
analogWrite()

名称

analogWrite()

説明

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

ATmega168やATmega328といったほとんどのArduinoボードでは、この関数は、3、5、6、9、10、11番ピンで利用できる。Arduino Megaでは、2から13番ピンと44から46番、ATmega8を搭載した古いArduinoボードでは、9、10、11番ピンで利用できる。

Arduino Dueでは2番ピンから13番ピンまでとDAC0とDAC1がanalogWrite()をサポートしている。PWMピンとは異なりDAC0とDAC1はデジタル・アナログ変換器なので、本当のアナログ出力を行う。

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

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

書式

void analogWrite(uint8_t pin, int val);

引数

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

戻り値

なし

注意

5番ピンと6番ピンに出力されるPWM出力は、指定したデューティー比よりも高い。これは、PWM出力を生成するために利用する内部タイマを共有しているmillis()やdelay()関数との相互作用によるものである。デューティー比が低いとき(例えば0から10)に特に注意が必要で、デューティー比を0にしても、5番ピンと6番ピンでは、完全に出力を0にすることはできない。

使用例

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

int ledPin = 9;      // 9番ピンにLEDを接続
int analogPin = 3;   // 3番ピンに可変抵抗器を接続
int val = 0;         // 読み取った値を格納する変数

void setup()
{
  pinMode(ledPin, OUTPUT);   // ピンを出力(OUTPUT)に設定
}

void loop()
{
  val = analogRead(analogPin);   // 入力ピンを読む
  analogWrite(ledPin, val / 4);  // analogRead()の戻り値は0から1024、analogWrite()に与える値は0から255なので、4で割って変換する。
}

訳者註

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

バージョン

Arduino 1.8.5

実装の解析

analogWrite()



メニューを表示するためにJavaScriptを有効にしてください。

inserted by FC2 system