「Arduinoの基礎 - 赤外線LEDとフォトダイオード」の版間の差分
ナビゲーションに移動
検索に移動
細 (文字列「<source lang」を「<syntaxhighlight lang」に置換) |
|||
23行目: | 23行目: | ||
これらの特徴を活かして、ブザーを鳴らしたり止めたりする。<br> | これらの特徴を活かして、ブザーを鳴らしたり止めたりする。<br> | ||
<br> | <br> | ||
< | <syntaxhighlight lang="c++"> | ||
const int PIN_PD = 3; | const int PIN_PD = 3; | ||
const int PIN_BZ = 4; | const int PIN_BZ = 4; |
2021年11月18日 (木) 15:20時点における版
概要
フォトダイオードは、光のエネルギーを電流に変換することができる半導体である。
したがって、フォトダイオードに光を当てることでダイオードを通り電流が流れる。
フォトダイオードも通常のダイオードと同じく、アノードとカソードがあり、足の長い方がアノード、短い方がカソードである。
なお、光が当たっていない(反応の弱い波長の光しか当たっていない)場合でも、僅かながら電流は流れており、それを暗電流(ダークカレント)という。
赤外線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を返す。
これらの特徴を活かして、ブザーを鳴らしたり止めたりする。
<syntaxhighlight lang="c++"> 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 ); } </source>