Arduinoの基礎 - 赤外線LEDとフォトダイオード
ナビゲーションに移動
検索に移動
概要
フォトダイオードは、光のエネルギーを電流に変換することができる半導体である。
したがって、フォトダイオードに光を当てることでダイオードを通り電流が流れる。
フォトダイオードも通常のダイオードと同じく、アノードとカソードがあり、足の長い方がアノード、短い方がカソードである。
なお、光が当たっていない(反応の弱い波長の光しか当たっていない)場合でも、僅かながら電流は流れており、それを暗電流(ダークカレント)という。
赤外線LEDとフォトダイオードの使用
ここでは、Arduinoと赤外線LEDおよびフォトダイオードを組み合わせて、障害物の検出を行う。
Arduinoとの配線を下図に示す。
フォトダイオードの種類において、最も感度の良い波長は異なる。
ここでは、940[nm]の波長の赤外線への感度の高いフォトダイオードと940[nm]の赤外線LED(IR LED)を組み合わせて使用する。
Arduinoにおいて、digitalRead関数
で入力を読み取った場合、3[V]が閾値となり、それより低い電圧の場合はLow、それより高い電圧ではHighとなる。
上図において、電流が流れている場合、フォトダイオードのVFは1.2[V]程度である。
このため、電流が流れている場合(つまり、障害物がなく、赤外線LEDの光が当たっている場合)は、digitalRead
関数はLowを返す。
逆に、電流が流れていない場合(つまり、障害物があり、赤外線LEDの光が当たっていない場合)は、digitalRead関数
はHighを返す。
これらの特徴を活かして、ブザーを鳴らしたり止めたりする。
const int PIN_PD = 3;
const int PIN_BZ = 4;
void setup()
{
pinMode( PIN_PD, INPUT );
pinMode( PIN_BZ, OUTPUT );
digitalWrite( PIN_BZ, LOW );
}
void loop()
{
int pd = digitalRead( PIN_PD );
if( pd == HIGH )
{
digitalWrite( PIN_BZ, HIGH );
delay( 100 );
}
else
{
digitalWrite( PIN_BZ, LOW );
}
delay( 50 );
}