Raspberry Pi Picoを久しぶりに引っ張り出したので、熱が冷めないうちに単純な”Lチカ”以外にも手を出してみる。Raspberry Pi 3Bを買ったときに一緒に揃えたパーツの一つであるLEDドットマトリックスを試してみた。
手元にあるLEDマトリックスはMAX7219というLEDディスプレイドライバICがくっついているユニットを4連につなげたもの。インターネットで"MAX7219" AND "PICO"で検索して比較的上位に表示された下記のサイト情報を基に、文字やセンサ読み値を表示させてみた。日本語を表示させるまで今回は至らず、もう少し調査が必要。
細かいチュートリアル的な内容は下記サイト参照…
https://microcontrollerslab.com/max7219-led-dot-matrix-display-raspberry-pi-pico/
使用した機材等
- Raspberry Pi Pico
- Thonny
- MAX7219 ドットマトリックスモジュール
- その他
- ブレッドボード
- 配線類
配線
LEDマトリックスとPICO間の配線は、電源とSPI通信の計5本。LEDマトリックスはデイジーチェーンの様に連続して複数繋がるようになっている。
|
MAX7219 | RPi Pico | Pin |
---|---|---|
VCC | VBUS (DC5V) | 40 |
GND | GND | 3 |
DIN | SPI0_TX | 5 |
CS | SPI0_CSn | 7 |
CLK | SPI0_SCK | 4 |
プログラム
MAX7219 ライブラリ
参考サイトで公開されているドライバ『max7219.py』をコピー(サイトからテキストコピーし.pyに保存)。(https://github.com/mcauser/micropython-max7219)
RPi Pico内に、ライブラリフォルダ(lib)を作成して、その中にmax7219.pyファイルを保存する。Picoへのファイル保存はWindowsのエクスプローラ上ではできないため、Thonnyから保存。メニュー > View > Filesを表示させると、Picoの内部が表示されるようになり、新しいファイルやフォルダを作成可能。
これまでずっとThonnyから直接実行していたので、ファイル転送できることを知らなかった…
テストコード
参考サイトに載っていたコードをそのまま実行してみると、何の問題もなく表示できた。
メッセージのスクロール
forループで表示させる位置をずらしていくことでスクロールする。
温度計の値を表示
Picoに載っている温度計の値をADCで読み取ってstringに変換して表示。温度は小数点を合わせてちょうど4文字なのでスクロールなしでピッタリ収まるように表示された。
RPi Pico上の温度は部屋の温度計より2℃ほど高め、校正が必要そう。 |
各種コマンド
- display.pixel(x, y, s)
- ピクセル指定
- x: x座標: 左が0、4x8x8では一番右が31
- y: y座標: 上が0、一番下が7
- s: 1=点灯、0=消灯
- display.hline(x, y, l, s)
- 横線
- x, y: 開始位置の座標
- l: 線の長さ(ピクセル数)
- s: 1=点灯、0=消灯
- display.vline(x, y, l, s)
- 縦線
- x, y: 開始位置の座標
- l: 線の長さ(ピクセル数)
- s: 1=点灯、0=消灯
- display.line(x1, y1, x2, y2, s)
- 始点と終点を指定した線
- x1, y1: 始点座標
- x2, y2: 終点座標
- s: 1=点灯、0=消灯
- display.rect(x1, y1, lx, ly, s)
- 四角形(白抜き)
- x1, y1: 左上頂点座標
- lx, ly: 四角形サイズ(ピクセル数)
- s: 1=点灯、0=消灯
- display.fill_rect(x1, y1, lx, ly, s)
- 四角形(塗りつぶし)
- x1, y1: 左上頂点座標
- lx, ly: 四角形サイズ(ピクセル数)
- s: 1=点灯、0=消灯
- display.scroll(x, y)
- 表示されている状態をシフトさせる。
- x: 横方向変位量
- y: 縦方向変位量
- ループさせればスクロールさせられるが、ループさせて描きなおす方がやりやすいと感じた。
参考にしたサイト
- microcontrollerslab
- MAX7219 LED Dot Matrix Display with Raspberry Pi Pico
- https://microcontrollerslab.com/max7219-led-dot-matrix-display-raspberry-pi-pico/
- Github Mike Causer
- MicroPython max7219 cascadable 8x8 LED matrix driver
- https://github.com/mcauser/micropython-max7219
- MicroPython用のMAX7219ドライバ