2. アナログライト

Arduinoの14のデジタルピンのうち6つはPWM出力機能も備えています。したがって、これらの6つのピンにデジタル信号を書き込むだけでなく、アナログ信号(PWM波信号)も書き込むことができます。これにより、LEDを異なる明るさで点灯させたり、モーターを異なる速度で回転させることができます。

パルス幅変調、あるいは PWM は、デジタル手段でアナログ結果を得るための技術です。文字通りの意味を理解するのが難しいかもしれませんので、LEDの強度を制御する例を以下に示します。

高レベルと低レベルで構成されるデジタル信号はパルスと呼ばれます。これらのピンのパルス幅は、ON/OFFの速度を変えることで調整できます。 簡単に言えば、LEDを点灯、消灯、再び点灯させる短い期間(例えば20ms、ほとんどの人の視覚的停留時間)では、 LEDが消灯したことには気づかないかもしれませんが、光の明るさはわずかに弱くなります。この期間中、LEDが点灯している時間が長いほど、LEDの明るさは増します。 つまり、一定の期間内で、パルスが広いほど、マイクロコントローラから出力される「電気信号の強さ」が大きくなります。

これがPWM波を書き込むための関数です。

  • analogWrite(pin, value)

    ピンにアナログ値(PWM波)を書き込む。指定されたパルス信号を生成することで、異なる出力電圧(0-5V)をシミュレートすることができます。この信号は、新しいreadまたはwriteステートメントで呼び出されるまでピンが保持します。

    構文

    analogWrite(pin, value)

    パラメータ
    • pin: 書き込むArduinoのピン。許容されるデータ型: int。

    • value: デューティサイクル: 0(常にオフ)から255(常にオン)の間。許容されるデータ型: int。

アナログライトの例

int pin = 9;      //pwmピンに接続

void setup() {
   pinMode(pin, OUTPUT);  // ピンを出力として設定
}

void loop() {
   for (int i = 0 ;i<255 ; i++){
      analogWrite(pin, i); //analogWriteの値は0から255
      delay(30);
   }
}

注意と警告

  • R4ボードをよく見ると、"~"記号でマークされたピンはアナログ出力機能があります。

  • ピン5と6で生成されるPWM出力は、予想よりもデューティサイクルが高くなることがあります。これは、 millis() 関数や delay() 関数との相互作用によるもので、これらのPWM出力を生成するために使用される内部タイマと同じものを共有しているためです。これは主に低デューティサイクルの設定(例:0 - 10)で注意され、ピン5と6の出力を完全にオフにする値0がオフにならない場合があります。

関連するコンポーネント

以下は関連するコンポーネントです。クリックすると、その使用方法を学ぶことができます。