デジタルとアナログ
Digital and Analog Signalsデジタル、アナログと聞いて何が思い浮かぶでしょうか?
テレビの種類にも使われますが、今回は電気的な違いについて説明していきます。
デジタルとアナログの違いって?
一番の違いは、電圧の変化をグラフにしたときに分かります。
もともと以下のようなアナログの信号があるとします。
アナログの信号をデジタルにするとこのようになります。
見比べると、デジタルはある(1)ない(0)のどちらかで表現されるため、シンプルなデータになっています。
これによってあるかないかはハッキリと見て分かるのですが、 もともとの値がどれくらい大きかったのか、小さかったのかは分からなくなってしまいました。
逆に、アナログはどれだけ大きい・小さいかは分かるのですが、 データは大きくなります。
マイコンボードでみるデジタル、アナログ
どのような違いがあるか分かったところで、マイコンボードでその値を取得する方法を説明します。
マイコンボードの種類により詳細な手順は変わるので注意してください。今回のプログラムについての説明は全て、Arduino Unoに基づいたものとします。
デジタル、アナログの入出力については、指定されたピンでやりとりします。
デジタルの入出力
入力
Arduino Unoでは、digitalRead関数を使ってある(HIGH)ない(LOW)を取得できます。
このときに注意しなくてはいけないのが閾値の値です。
Arduino Unoの場合は閾値は2.5vです。2.5vを超えるとHIGHになり、それ以下はLOWとなります。
この閾値はマイコンボードにより異なるので注意が必要です。
スイッチなどを付けて、押された・押されてないという状態を取得するときに、ノイズによって押していないのに押したと誤検知することがあります。
その場合は、プルアップという方法を利用することで誤検知を減らすことができます。
出力
Arduino Unoでは、digitalWrite関数を使ってある(HIGH)ない(LOW)を出力できます。
HIGHのときに5vが出力され、LOWのとき0vが出力されます。
こちらもマイコンボードによって異なるので注意してください。
アナログの入出力
入力
Arduino Unoでは、analogRead関数により0(0v)-1023(5v)の1024段階で値を取得できます。
入力する電圧が5vを超える場合、抵抗で分圧をすることで入力することができます。
分圧については、計算してくれるサイトなどもあるので参考にしてください。
出力
Arduino Unoではアナログ出力はできません。
しかしPWMと呼ばれる方式により、擬似的にアナログ出力をすることができます。
PWMの出力は、analogWrite関数により可能となります。0(0v)-255(5v)の256段階で指定することが可能です。
それによりLEDをふんわり点けることなどができるようになります。