PICOで複数のフルカラーLEDを制御 その4  文字をスクロールさせる

複数のフルカラーLED(マイコン内蔵RGBLED 8mm PL9823-F8)で文字をスクロールさせます。

4×4のLEDに文字を縦スクロールさせます。

フルカラーLED(マイコン内蔵RGBLED 8mm PL9823-F8)マトリックスモジュール

16LED WS2812B 5V PCB モジュール シリアルLED アドレッサブル ARGB

配線図

1 GND  38:GND
2 IN       1:GPIO 0 
3 VCC  40:VBUS
4 一番右のGNDはつながない
(別電源からつなぐときにつなぐ)
下のOUTピンから次のLEDのINへ接続

5Vの電源を使うので慎重に配線します。
間違えるとLEDが割れることがあります。

MicroPythonプログラム

import neopixel
import time
from machine import Pin

# LEDの設定
NUM_LEDS =  16  # LEDの数
PIN = 0         # データピン

# NeoPixelオブジェクトの作成
np = neopixel.NeoPixel(Pin(PIN), NUM_LEDS)

# 'A'のパターンを定義(4x4)
A_PATTERN = [
    0b0110,  # _XX_
    0b1001,  # X__X
    0b1111,  # XXXX
    0b1001   # X__X
]

# 'C'のパターンを定義(4x4)
C_PATTERN = [
    0b1111,  # XXX_
    0b0001,  # X___
    0b1000,  # X___
    0b1111   # XXX_
]

# 全てのLEDを消灯する関数
def clear_leds():
    for i in range(NUM_LEDS):
        np[i] = (0, 0, 0)
    np.write()

# 4x4のパターンをLEDに表示する関数
def display_pattern(pattern, row_offset):
    clear_leds()
    for row in range(4):
        for col in range(4):
            if pattern[row] & (1 << (3 - col)):
                index = (row + row_offset) * 4 + col
                if 0 <= index < NUM_LEDS:
                    np[index] = (25, 25, 25)  # 白色に点灯
    np.write()

# 文字をスクロールして表示する関数
def scroll_text(patterns, speeds):
    for pattern, speed in zip(patterns, speeds):
        display_pattern(pattern, 4)  # 初期位置を下にずらす
        time.sleep(1)  # 表示した後のウェイト

        for offset in range(5):  # 上にスクロール
            display_pattern(pattern, 4 - offset)
            time.sleep(speed)

# メインループ
while True:
    scroll_text([A_PATTERN, C_PATTERN], [0.1, 0.1])  # 'A'から'C'にスクロール
    time.sleep(1)  # 文字間のウェイト

これでAとCが上にスクロールします。

自由研究

テンテン
テンテン

ところがCの2行目がなぜか反対にしないとCが表示されません。
理由があるはずですが。