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);
   }
}

注意と警告

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

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

関連コンポーネント

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