前回は、Raspberry Pi Pico Wを使って「OSL641501-ARA」という8×8の赤色ドットマトリクスLEDの基本的な仕組みと接続方法を学びました。
今回はその応用として、**ダイナミック点灯(スキャン方式)**によって、アルファベットの A~G を順番に表示させてみましょう。💡 ダイナミック点灯とは?
8×8のマトリクスLEDには64個のLEDが搭載されていますが、すべてを同時に点灯させると、電流の負荷が大きくなり回路にも悪影響を及ぼします。
そこで活躍するのが「ダイナミック点灯」という方法です。
これは、1行(または1列)ずつ高速に点灯させていくことで、人間の目にはすべてが同時に光って見えるようにする仕組みです。
実際には、LEDは1行ずつ順番にON/OFFを繰り返しており、目の錯覚(残像効果)を利用しています。
🅰️~🅶 表示のしくみ
今回のプログラムでは、各文字(A~G)を 8×8のビットマップ配列として定義し、それぞれの配列に応じてアノード(列)とカソード(行)のGPIOを制御します。
各文字は約1秒ごとに切り替わり、ループしながら順に表示されます。
これにより、まるで小さなLEDディスプレイに文字が浮かび上がるような視覚効果が得られます。
⚠️ 注意点
LEDを直接GPIOピンに接続する際は、**必ず電流制限抵抗(470Ω〜1kΩ)**を アノード側またはカソード側のどちらか一方に入れるようにしてください。
これを怠ると、LEDやRaspberry Pi Pico W本体の破損につながるおそれがあります。
OSL641501‑ARA 8×8 ドットマトリクス
ソースコード
プログラムの処理フロー 🚦
-
🛠️ GPIO 準備
-
アノード (GP2‑GP9) を出力に設定し LOW で初期化
-
カソード (GP10‑GP17) を出力に設定し HIGH で初期化
-
-
📑 文字パターン登録
-
アルファベット A〜G を 8 × 8 の 0/1 ビットマップとしてリスト
patterns
に格納
-
-
🎨
draw_matrix()
:1フレーム描画-
8 行を上から順にループ
-
対象行の カソードを LOW(行を有効化)
-
列ごとにアノードへ パターンの 0/1 を書き込む
-
100 µs ウェイトで点灯保持
-
全アノードを LOW、行カソードを HIGH に戻す(行無効化)
-
-
-
🔄 メインループ
-
変数
x_counter
をインクリメントし続け、1000 回ごとに-
change
を次のパターン番号へ更新(0→1→…→6→0) -
x_counter
をリセット
-
-
毎ループで
draw_matrix(patterns[change])
を呼び出し、現パターンを表示 -
デバッグ用に
change
値をシリアル出力
-
-
⚠️ 保護抵抗必須
-
アノード側またはカソード側のどちらか一方に 470 Ω〜1 kΩ の抵抗を直列に入れて過電流を防止
-
コメント
コメントを投稿