Raspberry Pi Pico 搭載の温度センサーの値を読み取ってRP2040チップの温度を測定してみます。
import machine
import utime
# 内蔵温度センサー(ADCチャンネル4)を設定
sensor_temp = machine.ADC(4)
# 16ビットADCの変換係数(3.3Vスケール)
conversion_factor = 3.3 / (65535)
while True:
# ADCの読み取り値(0〜65535)を電圧(0〜3.3V)に変換
reading = sensor_temp.read_u16() * conversion_factor
# 温度換算:27°C時に0.706V、以降1°Cあたり1.721mVずつ変化
temperature = 27 - (reading - 0.706)/0.001721
print(f"{temperature:.1f}°C")
utime.sleep(2)
なお、ADC(4) は内蔵温度センサー専用のため、「温度を測る」以外の用途には使えません。
OLEDディスプレイに表示させてみた

from machine import I2C, Pin, ADC
from ssd1306 import SSD1306_I2C
from utime import sleep
# I2C通信の初期化(SCL: GP17, SDA: GP16)
i2c = I2C(0, scl=Pin(17), sda=Pin(16))
# OLEDディスプレイの初期化(解像度 128x64)
oled = SSD1306_I2C(128, 64, i2c)
# 内蔵温度センサー(ADCチャンネル4)を設定
t = ADC(4)
# ADC値を電圧に変換するための係数(3.3V / 65535)
f = 3.3 / 65535
while True:
# 温度センサーからADC値を取得して電圧に変換
v = t.read_u16() * f
# 電圧から摂氏温度を計算(公式に基づく)
temp = 27 - (v - 0.706) / 0.001721
# OLED画面をクリアして、温度を表示
oled.fill(0)
oled.text("Temp:", 0, 0)
oled.text(f"{temp:.1f} C", 0, 16)
oled.show()
# 2秒待って次の更新へ
sleep(2)
コメント