見出し画像

【ラズパイ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 になるようにスケーリングしてくれるものらしいです。
(なんかすげー)

最後に

分かりづらいところがあるかとおもいますので、筆者が参考にしたサイトも見ることをおすすめします。
最後までお読みいただき、ありがとうございました。
他にもラズパイ関連を含め、様々な情報を発信していく予定ですので、よろしければフォローのほどよろしくお願いします。

参考


この記事が気に入ったらサポートをしてみませんか?