n-hirokiのプログラミング軌跡

プログラミングのメモ

Arduino 光センサを使おう!

光センサを使った簡単なプログラミングを行います。

 

1、光センサの値によりLEDを点滅させる感覚を制御

  Cord

  //アナログ入力の値に応じてLEDの点滅レートが変化

const int LED = 13;
int val = 0;

void setup() {
  pinMode(LED, OUTPUT); //LEDにアウトプット設定
  //注:アナログピンは自動的に入力として設定される
}

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

  digitalWrite(13, HIGH); //LEDをオン
  delay(val); //少しの間、プログラムを停止

  digitalWrite(13, LOW); //LEDをオフ
  delay(val);
}

 

ジャンパー線の色が限られていて規則性がないですm(_ _)m

回路写真(実行) 

 f:id:n-hiroki_zero:20160820065816j:image

 

 実際に光センサに手を近づけて光を遮り試してみてください。

 

2、光センサの値によりLEDを点滅させる感覚を制御

Cord

 //アナログ入力の値に応じてLEDの明るさを変える

const int LED = 9;
int val = 0;

void setup() {
  pinMode(LED, OUTPUT);
}

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

  analogWrite(LED, val/4); //センサの値を明るさとしてLED点灯
  delay(10);
}

 

f:id:n-hiroki_zero:20160820065100j:image

f:id:n-hiroki_zero:20160820065125j:image

 

valの値を4で割るのは、センサーから返ってくる値が最大で1023で、analogWrite()が受け付ける値が最大で255だからです。 

 

 

CdSセルは明るさを抵抗値に変えてくれる便利なセンサーです。ですが、Arduinoは抵抗値を読み取ることはできないので、回路でArduinoが読み取れる電圧に変換させる必要があります。

この方法は他のセンサーにも応用が可能で、圧力センサー、サーミスタなどが今回の回路で使えます。

CdSセルをサーミスタに変えれば、温度変化によってLEDの明るさが変化します。

 

 

今回はこの2点で終わりですが、これ以外にも様々なプログラムの可能性がたくさんあります。なのであなたも色々試してみたください!!