ここまでやってきたことを全て組み合わせます。
GLCDに表示するのは、
- 時刻、天気、温度、湿度
- カレンダー
- 倉田ましろの絵
この3つの表示を、スイッチの1番を押すことで切り替えます。
import RPi.GPIO as GPIO
import time
import datetime
import calendar
import GLCD
import AM2320
import Weather
import SW
def __main__():
GPIO.setmode(GPIO.BCM)
GLCD.PinsInit(20, 7, 8, 9, 18, 19, 10, 11, 12, 13, 14, 15, 16, 17)
GLCD.GLCDInit()
GLCD.GLCDDisplayClear()
SW.PinsInit(21, 22, 23, 24, 25, 26, 27)
SW.Start()
roop = 10 * 60 * 60
mode = 1
try:
while True:
key = SW.GetKey()
if key == "1":
GLCD.GLCDDisplayClear()
mode += 1
if mode > 3:
mode = 1
if mode == 1:
if roop >= 10 * 60 * 60:
Weather.RequestAPI()
weather = Weather.GetWeather()
temp = Weather.GetTemp()
roop = 0
GLCD.GLCDPuts(1, 0, "Date :")
GLCD.GLCDPuts(5, 8, datetime.datetime.now().strftime('%Y:%m:%d %A'))
GLCD.GLCDPuts(1, 16, "Weather :")
GLCD.GLCDPuts(10,24, weather)
GLCD.GLCDPuts(10,32, "Temp : " + format(temp) + 'C')
GLCD.GLCDPuts(1, 40, "Time : " + datetime.datetime.now().strftime('%H:%M:%S'))
GLCD.GLCDPuts(1, 48, "Humidity : " + AM2320.GetHum() + '%')
GLCD.GLCDPuts(1, 56, "Temperature : " + AM2320.GetTemp() + 'C')
roop += 1
elif mode == 2:
cal = calendar.month(datetime.datetime.now().year, datetime.datetime.now().month)
cals = cal.split("\n")
y = 0
for c in cals:
GLCD.GLCDPuts(1, y, c)
y += 8
elif mode == 3:
GLCD.drowMashiro()
time.sleep(0.1)
except KeyboardInterrupt:
SW.Stop()
GLCD.GLCDDisplayClear()
GPIO.cleanup()
__main__()
スイッチ押下でmodeの値が変化し、表示処理の内容を変えています。
なかなか上手くいったので、これで完成品を作ってみようか。
ラズパイ遊びの集大成です。