こんばんは!
今回はArduinoのアナログ出力について説明していきたいと思います。
概要
Arduinoのアナログ出力の仕組みについて理解する
アナログ出力を使ってLEDの明るさを調整してみる。
使用するもの
・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・ブレッドボード(https://amzn.to/38eNi8u)
・ジャンパワイヤ (https://amzn.to/39uBU8T)
・LED(https://amzn.to/2TvEPGc)
デジタル出力とアナログ出力
デジタルとアナログは一般的に
デジタル→新しい、機械、パソコン
アナログ→古い、手作業
などのイメージがあると思います。
デジタルとアナログの違いは「段階的なデータ」を扱うものか「連続的なデータ」を扱うものかです。
デジタルは全てのデータを0か1で扱います。コンピュータは全てのデータを0か1で処理します。
一方でアナログは0と1の間の数である0.4、1/3、0.000009など全ての値を連続量として扱います。
よってデジタルとアナログを比較したときにアナログの方が情報量が多いです。
アナログ、デジタルを波形で見ると、下の図のようであり、なんとなくイメージがつくかと思います。
PWMについて
PWMとはPulse Width Modulationの略称で、オンとオフの繰り返しスイッチングを行い、出力される電力を制御します。
ONとOFFを繰り返す電気信号をパルス信号と呼びます。パルス信号のオンとオフの一定周期を作り、オンの時間幅を変化させることで、任意の電圧を得ることができます。
1周期の間にONになっている時間をデューティー比と言い、デューティー比が大きいほど出力される電圧が大きくなります。
Arduinoでのアナログ出力
Arduinoでの出力電圧は0Vと5Vのどちらかしか使えないので、PWMにより疑似的にアナログ出力としています。例として、PWMの周期を十分短くして、デューティー比を0.5に設定することで、2.5Vの電圧を出力することができます。
ArduinoではanalogWrite(pin,val)関数によってPWMにより、アナログ出力をします。
pinはピン番号の指定、valは0~255の数値を指定してデューティー比を決めます。
0のときはデューティー比が0、255の時はデューティー比は1です。
Arduino UNOではD3,D5,D6,D9,D10,D11ピンでanalogWriteが使えます。
手順
まず、ハード側からやっていきます。
以下の図のように配線します。
次に、Arduino IDEを起動して次のコードを書き込んでいきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | int led = 9; void setup() { } void loop() { for ( int val = 0; val < 256; val += 1 ) { analogWrite(led, val); delay(5); } for (int val = 255; val > 0; val -= 1) { analogWrite(led, val); delay(5); } } |
コードの説明をしていきます。
loop()内で1つ目のfor文ではvalの値を徐々に大きくしています。
つまりデューティ比が大きくなり、電圧も大きくなるのでLEDが徐々に明るくなっていきます。
2つ目のfor文ではvalの値を徐々に大きくしています。
つまりデューティー比が小さくなり、電圧も小さくなるのでLEDが徐々に暗くなっていきます。
これをメインボードに書き込んで確認してみてください。
まとめ
今回はArduinoのアナログ出力について説明しました。
知らなくてもコードは書けますが、身に付けて損はない知識だと思います。
今回はこれで終わります。
ではまた!