LoginSignup
8
2

More than 5 years have passed since last update.

RaspberryPi Sense HATのLEDに日本語をスクロール表示させる

Last updated at Posted at 2016-11-24

SenseHATの公式APIでは日本語がスクロール出来なかったので、PythonのPILと美咲フォントを使ってそれとなく対応してみました。
テキストを1枚の画像にして、端から8*8の画像に切り抜き順々に表示させるイメージです。

# -*- encoding:utf8 -*-
import unicodedata
import time
import sys
from PIL import Image, ImageDraw, ImageFont
from sense_hat import SenseHat

# 文字列の総バイト数を取得
def count_byte(s):
    n = 0
    for c in s:
        wide_chars = u"WFA"
        eaw = unicodedata.east_asian_width(c)
        if wide_chars.find(eaw) > -1:
            n += 2
        else:
            n += 1
    return n

# SenseHATにスクロール表示
def show_scroll_string(
        disp_str, fore_color = "#ffffff", back_color = "#000000", interval = 0.1):
    '''
        disp_str   = 表示させる文字列
        fore_color = 文字色(省略可)
        back_color = 背景色(省略可)
        interval   = スクロール表示間隔(省略可)
    '''
    matrix_size = 8
    img_width = (count_byte(disp_str) * 4) + (matrix_size * 2)

    sense = SenseHat()
    font = ImageFont.truetype("/misaki_gothic.ttf", # フォントのパスを指定
                              8, encoding="unic")
    img_moto = Image.new("RGB", (img_width, matrix_size), back_color)
    draw = ImageDraw.Draw(img_moto)
    draw.text((matrix_size, 1), disp_str, font = font, fill = fore_color)
    img_moto.save("./img.png", "PNG")

    for num in range(0, img_width - matrix_size):
        img = img_moto.crop((num, 0, matrix_size + num, matrix_size))
        img.save("./img_.png", "PNG")
        sense.load_image("./img_.png")
        time.sleep(interval)
    sense.clear()

# main
show_scroll_string(u"文字列もじれつMojiretsu。", fore_color="#ffff00", interval = 0.07)

フォントのパスを指定して、show_scroll_stringの引数に出力する文字列を入れて呼べばスクロール表示されるはずです。
写真 2016-11-24 20 49 54.gif

そのまま実行・利用する場合は自己責任でお願いします。


参考にしたサイトなど

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2