2025年8月12日火曜日

OSL641501-ARA 赤色ドットマトリックスの点灯

 Raspberry Pi Pico Wは、LEDやセンサーなどさまざまな外部デバイスを制御できる柔軟なマイコンボードです。

今回は、その活用例として「OSL641501-ARA 赤色8×8ドットマトリックスLED」の制御に挑戦してみましょう。

このLEDマトリックスは、縦横8つずつのLEDが格子状に並んでおり、文字やパターン、アニメーションなどを自由に表示することが可能です。
Raspberry Pi Pico Wと組み合わせることで、自作のディスプレイやゲーム、時計など、アイデア次第で多彩な表現が広がります。

■ ドットマトリックスLEDとは?

LEDマトリクスは、複数のLEDを行列状に配置し、列と行を組み合わせて点灯を制御する仕組みを持っています。
OSL641501-ARAは共通アノード(またはカソード)型の8×8マトリクスで、16本のピン(8列+8行)で64個のLEDを制御します。

■ 制御の基本:スキャン方式で1列ずつ点灯

64個のLEDすべてを同時に点灯させるには工夫が必要です。
そこで使われるのが**「スキャン方式」**です。
これは、1列(または1行)ずつ高速に切り替えて点灯させ、人間の目にはすべてが同時に光っているように見せる方法です。

例えば:

  • 列1:行データを書き込み → 点灯 → オフ

  • 列2:次の行データ → 点灯 → オフ

  • 列8まで繰り返す
    この処理を毎秒何百回も繰り返すことで、安定した表示が実現します。

■ 実装の第一歩:「点」を1つ光らせてみる

まずは「(1, 1)の位置を点灯させる」といったシンプルな動作から始めてみましょう。
マトリクスLEDのピン番号と座標の対応を確認し、GPIOピンのON/OFFを制御することで、任意のLEDを点灯させることができます。

OSL641501_check.jpg

簡単なチェックから、単三電池でLEDがデータシート見てLEDを点灯させてます。
13番→9番で1列目の1つを点灯させてます。

OSL641501_check2.jpg
OSL641501.jpg
どのPINが何番かちょっと、最初分かりにくいなって感じですが、
↑のような順番になっています。

OSL641501‑ARA 8×8 ドットマトリクス

⚠️ 必ず電流制限抵抗を入れてください
アノード側 または カソード側のどちらか一方に、470 Ω 〜 1 kΩ の抵抗を直列に挟みましょう。LED を直接 GPIO に接続すると過電流で Pico W や LED を損傷するおそれがあります。

ソースコード

from machine import Pin
from time import sleep

# アノードPIN(陽極)
anode = [Pin(i, Pin.OUT) for i in range(2, 10)]
# カソードPIN(陰極)
cathode = [Pin(i, Pin.OUT) for i in range(10, 18)]

# 初期状態:アノードをLOW、カソードをHIGH
for a in anode:
    a.value(0)

for c in cathode:
    c.value(1)

# 無限ループでアニメーションを繰り返す
while True:
    for k in range(8):
        cathode[k].value(0)  # カソードON(有効)

        if k % 2 == 0:
            for i in range(8):
                anode[i].value(1)
                sleep(0.3)
                anode[i].value(0)
        else:
            for i in range(7, -1, -1):
                anode[i].value(1)
                sleep(0.3)
                anode[i].value(0)

        # アノードすべてOFF
        for a in anode:
            a.value(0)
        cathode[k].value(1)  # カソードOFF(無効)


プログラムの処理フロー 🚀

  • 🛠️ GPIO 初期化

    • GP2‒GP9 を アノード(出力・LOW) として設定

    • GP10‒GP17 を カソード(出力・HIGH) として設定

  • 🔄 メインループ開始

    • 0〜7 の 各行(カソード) を順番に処理

  • ↘️ 行を有効化

    • 対象行のカソードを LOW にして LED 点灯を許可

  • 🔁 列スキャン

    • 行番号 k が 偶数なら 左→右奇数なら 右→左 に列を走査

    • 各列のアノードを

      1. HIGH にして 0.3 秒点灯

      2. LOW に戻して消灯

  • ⛔ 行リセット

    • 走査終了後、すべてのアノードを LOW

    • 対象行のカソードを HIGH に戻し無効化

  • 🔁 次の行へ

    • 8 行すべてを処理し終えると、メインループの先頭へ戻り 無限ループ 継続


0 件のコメント:

コメントを投稿

Google Spread Sheetの利用

  以前に ESP32 で作っていたものを、Raspberry Pi Pico W + MicroPythonで再現してみました。 1.Googleスプレッドシートの設定 1.Google Drive → 右クリック → Google スプレッドシート 2.作成して共有をクリック