読者です 読者をやめる 読者になる 読者になる

Yotazo Lab.

ほぼ自分用。でも誰かの役に立つかもしれない話題

Raspberry Piでインターネットラジオを作る #7

Raspberry Pi

RPLCDを使ってLCD表示をスクロールさせる

RPLCDのサンプルスクリプトを参考に、LCDの表示をスクロールさせるスクリプトを作りました。
Scrolling Text with RPLCD - blog.dbrgn.ch

スクロールさせたい文字の前後に、LCD表示幅分の空白を入れ、それを順々に表示させていけばいいようです。なるほどー。

サンプルでは1行目が固定、2行目がスクロールでしたが、設定を変えれば1行目と2行目を入れ替えることができるように書き換えました。

# -*- coding: utf-8 -*-
# LCD スクロール
# 

import time
from RPLCD import CharLCD

class WriteLcd():
    lcd = CharLCD()
    def __init__(self):
        self.col = 16
        self.delay = 0.2 # 速度
        self.pad = 4     # 間隔
        self.line = 2    # 1: 1行目がスクロール  2: 2行目がスクロール

    def write(self, buffer):
        self.lcd.home()
        for i in buffer:
            #print(i.ljust(self.col)[:self.col])
            self.lcd.write_string(i.ljust(self.col)[:self.col])

    def scroll(self, buffer):
        sp = ' ' * self.col
        if self.line == 2:
            sc = 1
        elif self.line == 1:
            sc = 0
            buffer.reverse()
        s = sp + buffer[sc] + sp
        for i in range(len(s) - self.col + self.pad):
            buffer[sc] = s[i:i+self.col]
            self.write(buffer)
            time.sleep(self.delay)

w = WriteLcd()
title =  'Static'
scroll = 'I want to scroll and scroll.....'

while True:
    w.scroll([title, scroll])


36-37行目
title が固定文(16文字でカットされます)
scrollがスクロールする文です

self.lineで文字の位置が設定できます

self.line = 2
1行目:タイトル(固定)
2行目:スクロール

self.line = 1
1行目 :スクロール
2行目:タイトル(固定)

※19行目のprint文がコメントになっていますが、コメントを外すと何が起きているかわかります。

さて、これをどうやってラジオに組み込むかが問題です。

Raspberry Pi Zero - ラズベリー・パイ ゼロ

Raspberry Pi Zero - ラズベリー・パイ ゼロ