僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
RasPicoネタ。アナデジ変換ができるとかいう("GET STARTED WITH MICROPYTHON ON RASPBERRY PI PICO" の Chapter 8.より)
RP2040にはADCが4つ(GP26, GP27、GP28に加え温度計を接続したコンバータ)あり、 12ビットの分解能があるが、MicroPythonは 他のコントローラに合わせて16ビットに変換しているとのことである。
36番ピン(3V3 OUT) と31番ピン(GP26)を 手近にあった適当な抵抗器( カラーコードで68kΩ±3.4kΩ)、実測約66.4kΩ)を挟んで接続。
Thonnyでコピペを少し修正して、平均、最大、最小を求めてみた。
import utime import machine potentiometer = machine.ADC(26) times = 10 total = 0 temp = [] for x in range(times): temp.append(potentiometer.read_u16()) print(temp[x]) utime.sleep(2) print("") average = sum(temp) / len(temp) print("averrage is ", average) print("max is ", max(temp), "max/average is", max(temp)/average * 100, " %.") print("min is ", min(temp), "max/average is", min(temp)/average * 100, " %.")
>>> %Run -c $EDITOR_CONTENT 62943 62495 62751 62783 62495 62687 61519 62527 62143 62191 averrage is 62453.4 max is 62943 max/average is 100.7839 %. min is 61519 max/average is 98.50385 %.
接続しない場合には不定(0が多かったが、それ以外も)となり、 抵抗器を挟まない、あるいは 抵抗値が(ある値より)小さいと65535になった。
上の出力値に3.3/65535をかけると電圧になる(potentionmeter.py)らしいが、 このあたりもちゃんと読まないと。
machine.ADC(4)からread.u16()すると温度データが出るので、
これを変換して、摂氏に換算すれば温度計になるらしい。
コピペから一歩も出ないので貼るのはやめる。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。