LCDとCdSセンサーを使用してLCDに明るさの数値を表示してみよう

0
1529

明るさが強くなると抵抗が低下するCds(硫化カドミウム)セルの特性を利用して明るさを測定し、測定値を前回の「【初級~中級編】LCDと半固定抵抗器を使用して文字を表示してみよう」で使ったLCDに表示すると共に、暗さ(明るさ)に応じてLEDの明るさを制御するスケッチを作ってみました。

今回必要な部品

  • Arduino×1
  • USBケーブル( Aコネクタ – Bコネクタ )
  • Csdセンサ×1
  • LCD×1
  • LED×1
  • 抵抗器(330Ω×1
  • 抵抗器(10kΩ×1
  • ジャンプワイヤー×5

回路図

今回必要なコード

[code]
#include <LiquidCrystal.h>

// CdSセルにアナログ0番ピンを接続する
const int sensorPin = 0;

// LEDにアナログ9番ピンを接続する
const int ledPin = 9;

// LCDオブジェクト
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
// LEDに接続したピンのモードを出力に設定する
pinMode(ledPin, OUTPUT);

// LCDの桁数と行数を16桁2行に設定する
lcd.begin(16, 2);
}

void loop() {
// 明るさを読み取る
int brightness = analogRead(sensorPin);

// LCDの表示をクリアして、読み取った明るさを表示する
lcd.setCursor(0, 0);
lcd.clear();
lcd.print("CdS: ");
lcd.print(brightness);

// センサの値(0~1023)をLEDの輝度(255~0)に変換する
int intensity = map(brightness, 0, 1023, 255, 0);

// LEDの輝度を表示する
lcd.setCursor(0, 1);
lcd.print("LED: ");
lcd.print(intensity);

// LEDに接続したピンに輝度を出力する
analogWrite(ledPin, intensity);

// そのまま100ミリ秒待機する
delay(100);
}
[/code]

このスケッチはCdsで読み取った明るさをスケッチ例の“LiquidCrystal”によりLCDに表示すると共に、アナログ入力の明るさ(0~1023)をPWM出力の明るさ(255~0)に変換してLEDを制御するものです。明るい場所でCdsの表面を塞ぐか、暗い場所でCdsに強い明かりを当てるなどをすると、それにつれてLEDの明るさが変化するのを確認できるはずです。

動作例