Circuit Playground Express の各種機能を試す(3)
温度センサーを利用する
利用するライブラリは adafruit_thermistor.mpy
でこれを lib に放り込む。
で、コードをしれっと
import time import adafruit_thermistor import board thermo = adafruit_thermistor.Thermistor(board.TEMPERATURE, 10000, 10000, 25, 3950) while True: temp = thermo.temperature print((temp,)) time.sleep(1)
実行するとこんなかんじ
(27.9365,) (27.9139,) (27.959,) (28.004,) (27.8915,) (27.959,) (27.9139,) (27.9139,)
大体 28 度位なのだが、これを手のひらで包むと
(29.4573,) (29.5717,) (29.7322,) (29.7092,) (29.824,) (29.939,) (30.0081,) (30.1693,) (30.2384,) (30.2616,)
単位が 度というのが助かりますね。
海外だと単位が華氏で有ることも多いので…
他のライブラリを利用してみる
circuit playground のアクセスをもっと単純化したライブラリ adafruit_circuitplayground
が存在したので使ってみた。
コードは
import time from adafruit_circuitplayground import cp while True: print("Temperature C:", cp.temperature) time.sleep(1)
うーんシンプル。
Temperature C: 27.3748 Temperature C: 27.3748 Temperature C: 27.3972 Temperature C: 27.4197 Temperature C: 27.4197 Temperature C: 27.4197
このライブラリを利用して温度を視覚化しようか
温度の視覚化
温度で LED 光らせてみようか。
import time from adafruit_circuitplayground import cp # LED の明るさ設定 cp.pixels.auto_write = False cp.pixels.brightness = 0.3 # 25-30 度の間で 10 段階表示 minimum_temp = 25 maximum_temp = 30 # 平たく言えば、最小温度から最大温度までの比率を 10 段階計算 #まぁ、25 度下回ればマイナスにもなるし、30 度超えれば 10 以上になるが、ループとしては特に問題ない def scale_range(value): return int((value - minimum_temp) / (maximum_temp - minimum_temp) * 10) while True: peak = scale_range(cp.temperature) # 10 個ある LED を範囲内で発光させる for i in range(10): if i <= peak: cp.pixels[i] = (255, 255, 255) else: cp.pixels[i] = (0, 0, 0) # 発光! cp.pixels.show() time.sleep(0.5)
ということで、30 度でマックス、25 度からおよそ 0.5 度刻みで光らせるコードを書いた。
その様子がコレである。
ちなみに起動してると、次第に基盤自体に熱を持つので、27 度の室温なら気づくと 30 度とかになる…