チャコメーター1 表示機能5 製作

コロナ禍の冬、室内の湿度をチェックする機会が増えています。
チャコメーター1に7セグLEDを付け、直接湿度を読めるようにします。

いよいよ回路を組んで、Tinker Boardで制御します。

部品配置

見た目を気にして、抵抗を1列に配置しました。

f:id:kainuma-k5:20210207145019j:plain

Tinker Board PINOUT

LEDのアノードにGPIOを配線します。
LEDをドライブできるのは、下表の緑色で記してあるGPIOピンです。

f:id:kainuma-k5:20210206223229p:plain
PINOUT

プログラム

DBから最新の湿度データを読み込み、ダイナミックモードで3桁表示します。
ダイナミックモードの設定は以下の通りで、約330Hzです。
3分に1回、湿度を更新します。
 1桁 点灯:0.0004sec → 消灯:0.0006sec
 2桁 点灯:0.0004sec → 消灯:0.0006sec
 3桁 点灯:0.0004sec → 消灯:0.0006sec 

import ASUS.GPIO as GPIO
import time
import sqlite3
import datetime

dbname  = '/mnt/usb/work/sht31_logger/sht31.db'

Pin_A=(238, 223, 185, 224, 187, 168, 188, 239)
Pin_C=(255, 251, 165)

digit = ((1, 1, 1, 1, 1, 1, 0, 0),     # 0
         (0, 1, 1, 0, 0, 0, 0, 0),     # 1
         (1, 1, 0, 1, 1, 0, 1, 0),     # 2
         (1, 1, 1, 1, 0, 0, 1, 0),     # 3
         (0, 1, 1, 0, 0, 1, 1, 0),     # 4
         (1, 0, 1, 1, 0, 1, 1, 0),     # 5
         (1, 0, 1, 1, 1, 1, 1, 0),     # 6
         (1, 1, 1, 0, 0, 0, 0, 0),     # 7
         (1, 1, 1, 1, 1, 1, 1, 0),     # 8
         (1, 1, 1, 1, 0, 1, 1, 0),     # 9
         (0, 0, 0, 0, 0, 0, 0, 0),     # Blank
         (0, 0, 0, 0, 0, 0, 1, 0))     # Minus

GPIO.setmode(GPIO.ASUS)
GPIO.setwarnings(False)

for Pin in Pin_C:
	GPIO.setup(Pin, GPIO.OUT)
	GPIO.output(Pin, GPIO.LOW) 
for Pin in Pin_A:
	GPIO.setup(Pin, GPIO.OUT)
	GPIO.output(Pin, GPIO.LOW) 

while 1:
	con = sqlite3.connect(dbname)
	cur = con.cursor()
	cur.execute('SELECT * FROM sensor3 order by timestamp desc limit 1')
	val = cur.fetchone()
	cur.close()
	con.close()
	H = round(val[3], 1)
	str_H = str(H)
	d1 = int(str_H[0])
	d2 = int(str_H[1])
	d3 = int(str_H[3])
	d = (d1,d2,d3)

	for t in range(60000):
		for j in range(3):
			a = digit[ d[j] ]
			for i in range(8):
				if a[i] == 1:
					GPIO.output(Pin_A[i], GPIO.HIGH)
				else:
					GPIO.output(Pin_A[i], GPIO.LOW)
			if j == 1:
				GPIO.output(239, GPIO.HIGH)
			GPIO.output(Pin_C[j], GPIO.HIGH)
	  		time.sleep(0.0004)
	  		GPIO.output(Pin_C[j], GPIO.LOW)
	  		time.sleep(0.0006)		

完成

さっそく連続運転してみました。
時々、値がチラつくのが気になります。
・・・
夜中にトイレで起きると、緑LEDが煌々と光っていたので、慌ててプログラムを止めました。
夜間は暗くするか、非表示にしないとダメだな。。。