【ラズパイPico】CdS(光センサ)をアナログ入力してAD変換【Python】
RaspberryPi Picoは、アナログ入力をすることができます。
この記事では、ADCを使わずに、Pythonを利用してRaspberryPi Picoの中だけでAD変換をする方法を説明します。
※注意:ほぼ素人がネットを読んで適当に作ったものを記事にしています。そのため、間違い等が発生する可能性があります。他のソースも参考にしつつ自己責任でお願いします。(何気に初投稿)
CdSとは
CdSとは硫化カドミウム(化学式でCdS)でできている、明るさに応じて抵抗値が変化するもの。
明るさが明るければ抵抗値が小さく、暗ければ抵抗値が大きくなります。
実際の値は割愛。おそらくデータシートなどに載っていると思います。
CdSはアナログなので、直接スイッチなどと同じように使用することはできません。
RaspberryPi Picoには、31,32,34番ピンにアナログ入力端子があるので、そこに接続します。
ほかのRaspberryPiシリーズではアナログ入力ができないので、別途ADコンバーターというものを間に挟まなければなりません。
よく使われているものにMCP3208などがあります。(これを2個買ったらおおよそRaspberrypiPicoと同じ値段になります。Pico安すぎ笑 )
配線
3.3V →CdSの片方に
AGNDとA0(アナログ入力、GPIO26番ピン)→CdSのもう片方に
プログラム
(Python3ファイル)
import machine
import time
cds = machine.ADC(0)
while True:
print(cds.read_u16())
time.sleep(1.0) #1.0秒ごとに更新
これを[ファイル名].pyで保存し、実行すると1秒置きに数字が表示されます。
.read_u16とは、ADCクラスというもので、整数で最小値が 0、最大値が 65535 になるようにスケーリングしてくれるものらしいです。
(なんかすげー)
最後に
分かりづらいところがあるかとおもいますので、筆者が参考にしたサイトも見ることをおすすめします。
最後までお読みいただき、ありがとうございました。
他にもラズパイ関連を含め、様々な情報を発信していく予定ですので、よろしければフォローのほどよろしくお願いします。