複数のフルカラーLED(マイコン内蔵RGBLED 8mm PL9823-F8)で文字をスクロールさせます。
4×4のLEDに文字を縦スクロールさせます。
フルカラーLED(マイコン内蔵RGBLED 8mm PL9823-F8)マトリックスモジュール
配線図
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) # 文字間のウェイト
自由研究
テンテン
ところがCの2行目がなぜか反対にしないとCが表示されません。
理由があるはずですが。