Skip to content

Instantly share code, notes, and snippets.

@shikarunochi
Last active October 8, 2018 00:50
Show Gist options
  • Save shikarunochi/ecff9b3b3d1dd5d6059fa0bf03ab17bb to your computer and use it in GitHub Desktop.
Save shikarunochi/ecff9b3b3d1dd5d6059fa0bf03ab17bb to your computer and use it in GitHub Desktop.
from m5stack import lcd
import time
fontDataDict = {
"0":[0x0000,0x0E00,0x1100,0x2080,0x2080,0x2080,0x2080,0x2080,0x2080,0x1100,0x0E00,0x0000,0x0000],
"1":[0x0000,0x0400,0x0C00,0x1400,0x2400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0000,0x0000],
"2":[0x0000,0x0E00,0x1100,0x2080,0x0080,0x0100,0x0200,0x0400,0x0800,0x1000,0x3F80,0x0000,0x0000],
"3":[0x0000,0x3F80,0x0100,0x0200,0x0400,0x0E00,0x0100,0x0080,0x2080,0x1100,0x0E00,0x0000,0x0000],
"4":[0x0000,0x0600,0x0A00,0x0A00,0x1200,0x1200,0x2200,0x2200,0x7F80,0x0200,0x0200,0x0000,0x0000],
"5":[0x0000,0x3F80,0x2000,0x2000,0x2E00,0x3100,0x0080,0x0080,0x0080,0x2100,0x1E00,0x0000,0x0000],
"6":[0x0000,0x0F00,0x1000,0x2000,0x2E00,0x3100,0x2080,0x2080,0x2080,0x1100,0x0E00,0x0000,0x0000],
"7":[0x0000,0x3F80,0x0080,0x0100,0x0100,0x0200,0x0200,0x0400,0x0400,0x0800,0x0800,0x0000,0x0000],
"8":[0x0000,0x0E00,0x1100,0x2080,0x1100,0x0E00,0x1100,0x2080,0x2080,0x1100,0x0E00,0x0000,0x0000],
"9":[0x0000,0x0E00,0x1100,0x2080,0x2080,0x2080,0x1180,0x0E80,0x0080,0x0100,0x1E00,0x0000,0x0000],
"A":[0x0000,0x0400,0x0400,0x0A00,0x0A00,0x1100,0x1100,0x3F80,0x2080,0x4040,0x4040,0x0000,0x0000],
"B":[0x0000,0x3F00,0x2080,0x2080,0x2080,0x3F00,0x2080,0x2040,0x2040,0x2080,0x3F00,0x0000,0x0000],
"C":[0x0000,0x0F80,0x1040,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x1040,0x0F80,0x0000,0x0000],
"D":[0x0000,0x3E00,0x2180,0x2080,0x2040,0x2040,0x2040,0x2040,0x2080,0x2180,0x3E00,0x0000,0x0000],
"E":[0x0000,0x3F80,0x2000,0x2000,0x2000,0x3F00,0x2000,0x2000,0x2000,0x2000,0x3F80,0x0000,0x0000],
"F":[0x0000,0x3F80,0x2000,0x2000,0x2000,0x3F00,0x2000,0x2000,0x2000,0x2000,0x2000,0x0000,0x0000],
"G":[0x0000,0x0F80,0x1040,0x2000,0x2000,0x23C0,0x2040,0x2040,0x2040,0x10C0,0x0F40,0x0000,0x0000],
"H":[0x0000,0x2040,0x2040,0x2040,0x2040,0x3FC0,0x2040,0x2040,0x2040,0x2040,0x2040,0x0000,0x0000],
"I":[0x0000,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0000,0x0000],
"J":[0x0000,0x0100,0x0100,0x0100,0x0100,0x0100,0x4100,0x4100,0x4100,0x2200,0x1C00,0x0000,0x0000],
"K":[0x0000,0x2080,0x2100,0x2200,0x2400,0x2800,0x3400,0x2200,0x2100,0x2080,0x2040,0x0000,0x0000],
"L":[0x0000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x2000,0x3F80,0x0000,0x0000],
"M":[0x0000,0x4040,0x60C0,0x5140,0x4A40,0x4440,0x4040,0x4040,0x4040,0x4040,0x4040,0x0000,0x0000],
"N":[0x0000,0x2080,0x3080,0x2880,0x2480,0x2280,0x2180,0x2080,0x2080,0x2080,0x2080,0x0000,0x0000],
"O":[0x0000,0x0F00,0x1080,0x2040,0x2040,0x2040,0x2040,0x2040,0x2040,0x1080,0x0F00,0x0000,0x0000],
"P":[0x0000,0x3E00,0x2100,0x2080,0x2080,0x2100,0x3E00,0x2000,0x2000,0x2000,0x2000,0x0000,0x0000],
"Q":[0x0000,0x0F00,0x1080,0x2040,0x2040,0x2040,0x2040,0x2040,0x2040,0x1080,0x0F00,0x0200,0x01C0],
"R":[0x0000,0x3E00,0x2100,0x2080,0x2080,0x2100,0x3E00,0x2100,0x2100,0x2080,0x2080,0x0000,0x0000],
"S":[0x0000,0x0F00,0x1080,0x2040,0x1000,0x0F00,0x0080,0x0040,0x2040,0x1080,0x0F00,0x0000,0x0000],
"T":[0x0000,0x7FC0,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0400,0x0000,0x0000],
"U":[0x0000,0x2080,0x2080,0x2080,0x2080,0x2080,0x2080,0x2080,0x2080,0x1100,0x0E00,0x0000,0x0000],
"V":[0x0000,0x2080,0x2080,0x2080,0x1100,0x1100,0x1100,0x0A00,0x0A00,0x0400,0x0400,0x0000,0x0000],
"W":[0x0000,0x4440,0x4440,0x4440,0x4440,0x2A80,0x2A80,0x2A80,0x1100,0x1100,0x1100,0x0000,0x0000],
"X":[0x0000,0x2080,0x2080,0x1100,0x0A00,0x0400,0x0400,0x0A00,0x1100,0x2080,0x2080,0x0000,0x0000],
"Y":[0x0000,0x2080,0x2080,0x1100,0x1100,0x0A00,0x0A00,0x0400,0x0400,0x0400,0x0400,0x0000,0x0000],
"Z":[0x0000,0x3F80,0x0080,0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x2000,0x3F80,0x0000,0x0000]
}
def makeDotData(char):
resultData = [];
charDotData = [];
if char in fontDataDict: #キーがあるか確認
fontData = fontDataDict[char]
for fontData_line in fontData:
for x in range(15):
if fontData_line >> (15 - x) & 1 == 1: #ビット上側から、1か0かチェック
charDotData.append(1)
else:
charDotData.append(0)
#縦横入れ替える
for x in range(15):
for y in range(13):
resultData.append(charDotData[x + y * 15])
return resultData
def makeDotDataList(stringData):
dotDataList = [];
for c in stringData:
dotDataList.extend(makeDotData(c))
return dotDataList
lcd.clear()
lcd.setCursor(0, 0)
lcd.setColor(lcd.WHITE)
stringData="M5STACK   "
delay = 4
#データを変換
dotDataList = makeDotDataList(stringData)
lcd.rect(158, 118, 4, 4, lcd.WHITE, lcd.WHITE )
i = 0
while True:
for y in range(13):
if dotDataList[i + y] == 1:
lcd.rect(y * 8, 118, 8, 8, lcd.WHITE, lcd.WHITE )
else:
lcd.rect(y * 8, 118, 8, 8, lcd.BLACK, lcd.BLACK )
i = i + 13
if i >= len(dotDataList):
i = 0
time.sleep_ms(delay)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment