Sense HAT Emulatorでディジタル時計

このページの内容はRaspbian stretchで試した結果です。

Sense HAT Emulatorでディジタル時計というお馬鹿プログラムを作ってみました。

仕様はザッと

という構想で手を付けてみました。本物のSense HATは持っていないので関係ないんですが、一応うちの辺の気候に合わせて温度は-10°〜40°、気圧は950hPa〜1030hPaを想定していますので、アンカレッジやドバイなど著しく気候が違う所にお住まいだったり、ASTRO PIでご採用いただく場合は、頭の方で定義している定数を適当に調整して下さい。

それと、エミュレータじゃなくって本当のSense HATをお使いになるときは

from sense_emu import SenseHat

from sense_hat import 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)
	)

[Raspberry Piはじめましたへ|Raspberry Piへ]
Copyright(c) 2020 Koh-ichi Ito, All rights reserved
Last update: $Date:: 2020-09-26 12:06:36 +0900 #$