質問: 最近、電子工作がしたくなって、Arduinoをはじめようキットなるものを購入しました。 Arduino本体には、デジタルI/Oが13ピンとアナログINが5ピンあるのですが、このピン、同じINとして使う場合、デジタルとアナログで何がどう違うのでしょうか?(デジタル、アナログで何かデメリット、デメリットはあるのでしょうか?) プログラムするにあたっても、配線をつなぐのにも、デジタル、アナログの違いは何もなさそうなのですが。。。 また、デジタルはI/OとINもOUTもいけるのに、どうしてアナログの場合はINだけなのでしょう?
回答: ogura87さん、 ゲームのコントローラで、アナログコントローラがあると思いますが、スティックの傾き加減で、電圧が変化し(実際には可変抵抗)、値をアナログ入力として、取得しています。 8bitの精度であれば、0から255なので、センターにあるときは、128. 思いっきり倒すと0、反対に倒すと255。 ってな感じで、傾き加減での値を取得します。コントローラでは、左右と上下の2つ方向で、値を得ています。 かたや、A Bボタンは、押した・離したの、ON/OFFのみで、デジタル入力(1 / 0)を得ます。 出力に関しては、LEDを考えてもらうといいかと思いますが、 デジタル出力では、LEDの点灯・消灯(ON/OFF)の操作のみで、 アナログ出力では、LEDの明るさを変える、なんて感じですね。 Arduinoでは、(簡単な)アナログ出力(任意の電圧出力)は、PWMを使います。 PWMでは、電圧のLow/High (例:0V/3.3V)を(特定の周波数で)高速に切り替え、Lowの時間とHighの時間の比率(Duty Cycle)を調整することで、なが~い目でみて、それっぽい電圧を得ます。 LEDなんかは、そのままつないでも、人間の目ではうまく明るさが変化してるように見えますが、オシロスコープで見るとON/OFFしてるだけです。接続するデバイスによっては、R(抵抗)とC(コンデンサ)で、LPF(ローパスフィルタ)をつけたりします。 * "Arduinoをはじめようキット"では、"CdSセル"というのが、光の強度で電気抵抗が変わる素子なので、これを使うときに、アナログ入力を使うことになりますね。