このページの内容はRaspbian stretchで試した結果です。
Sense HAT Emulatorでディジタル時計というお馬鹿プログラムを作ってみました。
仕様はザッと
という構想で手を付けてみました。本物のSense HATは持っていないので関係ないんですが、一応うちの辺の気候に合わせて温度は-10°〜40°、気圧は950hPa〜1030hPaを想定していますので、アンカレッジやドバイなど著しく気候が違う所にお住まいだったり、ASTRO PIでご採用いただく場合は、頭の方で定義している定数を適当に調整して下さい。
それと、エミュレータじゃなくって本当のSense HATをお使いになるときは
from
sense_emuimport SenseHat
を
from
sense_hatimport SenseHat
に変更すればよいそうです。
#!/usr/bin/env python3 import colorsys import time from sense_emu import SenseHat TEMP_LO = -10.0 TEMP_HI = 40.0 T_BIAS = 1.0 / 3.0 HUMI_LO = 0.0 HUMI_HI = 100.0 PRES_LO = 950.0 PRES_HI = 1030.0 P_BIAS = 0.5 def temp2hue(t): if t < TEMP_LO: t = TEMP_LO elif TEMP_HI < t: t = TEMP_HI return ( 1.0 - ( (1.0 - T_BIAS) * (t - TEMP_LO) / (TEMP_HI - TEMP_LO) + T_BIAS) ) def humi2sat(h): return 1.0 - (h - HUMI_LO) / (HUMI_HI - HUMI_LO) def pres2val(p): if p < PRES_LO: p = PRES_LO elif PRES_HI < p: p = PRES_HI return ( (1.0 - P_BIAS) * (p - PRES_LO) / (PRES_HI - PRES_LO) + P_BIAS ) def text_colour(sense): (r, g, b) = colorsys.hsv_to_rgb( temp2hue(sense.get_temperature() ), humi2sat(sense.get_humidity() ), pres2val(sense.get_pressure() ) ) return int(255 * r), int(255 * g), int(255 * b) sense = SenseHat() while True: tm = time.localtime() sense.show_message( '%02d:%02d' % (tm.tm_hour, tm.tm_min), text_colour = text_colour(sense) )