gpiozeroライブラリ入門⑳import LightSensor (LDR)
使用環境
|
gpiozeroパッケージの基底クラスInput Devicesは、入力デバイスやセンサ用です。
●LightSensor (LDR)=CdS
class gpiozero.LightSensor(pin, *, queue_len=5, charge_time_limit=0.01, threshold=0.1, partial=False, pin_factory=None)LDRの片方の脚を3V3ピンに接続する。 1µFコンデンサの片方の脚をグラウンド・ピンに接続する。 LDRのもう一方の足とコンデンサのもう一方の足を同じGPIOピンに接続する。 このクラスは、コンデンサを繰り返し放電してから、充電にかかる時間を掛ける(これは、LDRに当たる光によって異なる)。 LDRを検索すると、CdS(硫化カドミウム)が見つかる。光の当たり具合で抵抗値が変化するデバイス。 LTspiceで動かしてみた。青色がV1の発生するパルス電圧、赤色が回路を流れる電流。電源がつながったときと電源が切れた時に鋭い電流が流れることがわかる。 パラメータ; pin (int or str)CdSが接続されているGPIOピン。 queue_len (int)センサから読み取られた値を格納するために使用されるキューの長さ。デフォルトは5。 charge_time_limit(float) 回路内のコンデンサが充電にこの時間より長くかかる場合、それは暗いと見なされる。 デフォルト(0.01秒)は、CamJam#2 EduKit(製品名)からのCdSと結合された1µFコンデンサに適している。 異なる値のCdSに対してこの値を調整する必要がある。 threshold (float)デフォルトは0.1。 内部キュー内のすべての値の平均がこの値を超えると、その領域は「ライト」と見なされ、適切なすべてのイベントが発生する。 partial (bool)False(デフォルト)の場合、内部キューが値でいっぱいになるまで、オブジェクトはis_activeの値を返さない。オブジェクト構築の直後に値が必要な場合にのみ、これをTrueに設定する。 pin_factory(factoryまたはNone)詳細については、API –ピンを参照(これは、ほとんどのユーザが無視できる高度な機能)
|
●配線
CdSの片方の足を3.3Vへ、もう一方を1uFの片方の足と接続してGPIO4に、1uF(フィルム・コンデンサ)の残りの足をGNDにつなぎました。
回路図です。
オシロスコープでGPIO4の信号を見ます。机の上の明るさの光が当たっているときの波形です。
CdSを指でふさいだときの波形です。
●プログラム
サンプルを動かします。
from gpiozero import LightSensor
ldr = LightSensor(4)
ldr.wait_for_light()
print("Light detected!")
指でCdSをふさいで、実行します。指を離すと、Light detected!と表示が出て終了しました。