プロジェクト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の明るさを観察します。