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の値の結果として気づくことがあります。
関連コンポーネント
以下は関連するコンポーネントで、クリックするとそれらの使用方法を学ぶことができます。