フォトレジスタ(CdSセンサ)を使って暗くなったらLEDを光らせる回路
この回路は、Raspberry PiにPythonでプログラムを書き、暗くなったらランプを自動的に点灯するというものです。暗くなったかどうかは、フォトレジスタ(CdSセル)と呼ばれる明るさを検知するセンサ(下の写真一番左)を使います。
配線図
まずは以下のように配線をしましょう!
ブレットボードと配線図の写真を見ながら何がどこにつながるかなどを見ながらやっていきましょう。
プログラムのポイント
今回はPython3で記述して、WiringPiというGPIOをコントロールするためのライブラリを活用します。まだWiring Piをライブラリをインストールしていない場合は、Wiring Piライブラリのインストールをごらんください。
<Pythonソースコード>
import wiringpi as pi, time led_pin = 4 cds_pin = 18 pi.wiringPiSetupGpio() pi.pinMode( led_pin, 1 ) pi.pinMode( cds_pin, 0 ) while True: if ( pi.digitalRead(cds_pin) == 1 ): pi.digitalWrite( led_pin, 0 ) else: pi.digitalWrite( led_pin, 1 )
プログラムの解説
最初のimport wiringpi の部分でGIPOをコントロールするためのライブラリwiring piを読み込んでいます。
led_pin = 4
cds_pin =18
上の2つはどのピンを使うかを決めています。とりあえず、GPIOピン4番と18番を使うという事にしていますが、この番号は好きに変えられますから、変えて配線も変更するなどしてみましょう。led_pinやcds_pinなどは自分で好きに決められる名称です。
pi.wiringPiSetupGpio() この部分でwiringPiという関数を使ってこれからGPIOピンを使いますよと宣言しているような部分です。プログラム上すでに利用されていたり、問題がなければ、エラーは起こりません。
pi.pinModeでは、先ほど設定したピン番号にINPUTなのかOUTPUTなどかを記入します。ここでは、数字で1がOutput、0をInputとしています。
while True: は次にifが来る場合が多く、このif内のcds_pinの値が1、つまり信号が入ってきていたら、pi.degitalWrite( led_pin,0)を実行して、LEDにゼロの信号を送りましょう、つまり光らせないという操作をします。cds_pinが1でない場合、つまり信号が入ってきていないなら、else以下のLEDを光らせるという部分をwhile分でループさせているという形になっています。