プロジェクト3 フォトレジスタセンサー

説明
フォトレジスタは、CdSやセレン化合物などの半導体材料で作られた特殊な抵抗です。表面は防湿樹脂でコーティングされており、光導電効果を持っています。周囲の光に敏感で、その抵抗値は異なる光の強度によって変わります。
フォトレジスタの特性を利用して回路を設計し、フォトレジスタモジュールを生成します。
フォトセルモジュールの信号ピンをアナログポートに接続すると、光の強度が強いほどアナログポートの電圧が大きくなり、アナログ値も大きくなることがわかります。
逆に、光の強度が弱いほどアナログポートの電圧が小さくなり、アナログ値も小さくなります。
これに基づいて、フォトセルモジュールを使用してアナログ値を読み取り、周囲の光の強度を取得することができます。
仕様

抵抗値:5K ohm~0.5Mohm
インターフェースタイプ:アナログ
動作電圧:3.3V~5V
簡単な取り付け:ネジ固定穴付き
ピン間隔:2.54mm
部品

接続図:

2つのフォトレジスタセンサーはA1とA2に接続されており、A1に接続されたフォトレジスタを通じて実験を完了します。そのアナログ値を読み取ってみましょう。
テストコード
/*
keyestudio Mini Tank Robot V2.1
lesson 3.1
photocell
http://www.keyestudio.com
*/
int sensorPin = A1; // フォトセルの入力ピンを選択
int sensorValue = 0; // センサーから来た値を格納する変数
void setup()
{
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin); // センサーから値を読み取る
Serial.println(sensorValue); // シリアルポートに抵抗値を出力
delay(500);
}
//******************************************************
テスト結果
開発ボードにコードをアップロードし、シリアルモニターを開いて、フォトレジスタを覆うと値が減少し、覆わないと値が増加することを確認します。

コード説明
analogRead(sensorPin): アナログポート経由でフォトレジスタのアナログ値を読み取ります。
Serial.begin(9600): シリアルポートを初期化し、シリアル通信のボーレートは9600です。
Serial.println :シリアルポートに出力して改行します。
応用練習
フォトレジスタの値を読み取る方法を学びました。次に、フォトレジスタとLEDを組み合わせて、LEDの状態を確認してみましょう。

PWMは明るさを制御するため、LEDはPWMピンに接続されます。LEDをピン10に接続し、フォトレジスタのピンは変更せずに、次のようにコードを設計します:
/*keyestudio Mini Tank Robot V2.1
lesson 3.2
photocell-analog output
http://www.keyestudio.com
*/
int analogInPin = A1; // フォトセルが接続されているアナログ入力ピン
int analogOutPin = 10; // LEDが接続されているアナログ出力ピン
int sensorValue = 0; // ポテンショメータから読み取った値
int outputValue = 0; // PWM(アナログ出力)に出力する値
void setup()
{
Serial.begin(9600);
}
void loop()
{
// アナログ入力値を読み取る:
sensorValue = analogRead(analogInPin);
// アナログ出力の範囲にマッピングする:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// アナログ出力値を変更する:
analogWrite(analogOutPin, outputValue);
// 最後の読み取り後、アナログ-デジタル変換器が安定するまで
// 2ミリ秒待機する:
Serial.println(sensorValue); // シリアルポートにフォトレジスタの値を出力
delay(2);
}
//***************************************************************
コードをアップロードし、手で押さえてLEDの明るさを観察します。