大好きArduino

Arduino総合情報サイト

Arduinoプログラミング基礎

8.Cds明るさセンサーとシリアルモニターデバッグ

2016/08/16

analogReadによって読み取るデジタル信号

ArduinoにおいてHIGH(5V)かLOW(0V)かという読み取り以外に、例えばHIGH(5V)からLOW(0V)までの間の値を読み込める方法として、anlogRead(アナログリード)があります。
具体的な例としては、温度計や光の明るさ、風の強さなど、...いわゆるセンサー類...要するにHIGHかLOWかだけでは判定できないような数値を返すセンサー類からのデータの取り込みに利用します。
マイコンなどに接続できるこれらのセンサーのほとんどは、『読み取った実際の値を0~5Vまでの電圧で返します。』というような仕様になっています。
その値を一つのピン(ポート)で読み込むのが analogReadの役目です。

Cdsセンサーの例

Cdsセンサーとは光量を読み取るセンサーです。
インターネットパーツ販売の秋月のページはこちら....

その記述の中で下記の赤矢印のところがポイントです。
WS000003

つまり、このセンサーは光の強さに応じて抵抗値が変わるということです。
これは、先の説明に書いた『読み取った実際の値を0~5Vまでの電圧で返します。』とは明らかに違いますので、これをArduinoのアナログピンに直接入れて抵抗値が読み取れるのでしょうか?
その答えはNGです。
analogReadで読み取れるのは電圧の値ですから、このままピンに突っ込んだのでは全く数値を読み取ることができません。

変化する抵抗値を変化する電圧値に変えてやる

Cdsセンサーの片足を5Vと接続し、もう片足をGNDへ接続してやります。
光量に合わせて抵抗値が変化するということですから、今の光量(抵抗)によって、このCdsにどれだけの電圧がかかっているのかをArduinoのanalogピンで見てあげれば解決します。

◆接続
Cds※抵抗は(茶)(黒)(橙)→ 10KΩを使用します・

◆回路

Cds_kairo

プログラム

void setup() {
}

void loop() {
  int val = analogRead(0);
}

 

基本はたったのこれだけです。
読み込まれるデータ val は0~1023の値....つまり0~5Vを1024段階で割った数値が返されます。

ボードの現在値をボードからIDEへリターンバックさせる

しかし、これだけではこのvalの値がいったい何なのかわかりません。
そのために、Arduinoでは、このArduinoの現在の動作している変数の値などを、ボードからUSBケーブルを通してIDEにリターンバックしてくれる方法があります。
つまり、このリターンバックしてきたデータをIDEで見てみればいいわけです。

ボードからUSBケーブルを通してリターンバックさせるためには、シリアル通信を使用します。

void setup() {
  Serial.begin(9600) ;//リターンバックのためにシリアルポートオープン
}

void loop() {
  int val = analogRead(0);
  Serial.println(val) ;valの値をシリアルでIDEにリターンバックさせる
}

 

IDEでリターンバックしたデータを表示するシリアルモニター

IDEの右端(下の画像で赤枠)部分をクリックするとシリアルモニターという画面がオープンし、ボードによってSerial.printlnなどでリターンバックされた値を読み取ることが可能です。

WS000004

-Arduinoプログラミング基礎