Raspberry Pi Pico でLEDマトリクス MAX7219を使って文字列の表示をします。
今回紹介するもの
LEDマトリクス MAX7219
特徴
単色の8×8 LED Matrixモジュールです。
連結して使用することができます。
電源電圧 | 5V |
通信 | SPI (CS, MOSI, SCK) |
LED色 | 購入時に選択します。 (赤, 青, 緑) |
基板と、LEDパネルはICソケットで接続されています。
LEDパネルを取り換えて接続することもできます。(接続の上下向きに注意!!)
LEDパネルのピンは曲がりやすいです。
てこの原理や斜めでの挿抜は破損の原因になるので、真っすぐ挿抜を行ってください。
外観
使用感
5Vでの電源ですが、3.3VロジックレベルのRaspberry Pi Picoでも制御ができました。
輝度の調整はできませんが、くっきりと明るい表示パネルとして使用することができます。
全点灯させるそれなりの電力を消費するので、供給力の低いマイコンでは心配です。
先に紹介しましたが、モジュール同士を連結して使用できるため、後から付け足して制御することができます。
連結数が多い表示物を作成する際は、電源を用意した方が良いかもしれません。
同じドライバを使用している7セグ表示機の記事です。
準備
使うもの
画像 | 名称、型番 | 用途 |
---|---|---|
LED Matrix 4連 MAX7219 | 光ってもらいます。 | |
Raspberry Pi Pico | MAX7219を表示制御します。 | |
ブレッドボード | 配線します | |
– | ジャンパワイヤ数本 オス-メス | 配線します MAX7219のピンヘッダは標準でアングルが半田されているので ジャンパワイヤを直接接続します。 |
ライブラリ
ライブラリマネージャから以下2件のライブラリをインストールします。
ライブラリ名 | 検索 | 確認時のバージョン |
---|---|---|
MD_MAX72XX by majicDesigns | md_max7219 | 3.3.1 |
MD_Parola by majicDesigns | md_parola | 3.6.2 |
動作
メッセージ表示
説明
4連MAX7219 の中央に”NEGI”と表示します。
配線
Raspberry Pi Pico | 配線 | MAX7219 |
---|---|---|
VBUS(5V) | 赤 | VCC |
GND | 黒 | GND |
GPIO1 (SPI0 CS) | 黄 | CS |
GPIO2 (SPI0 SCK) | 紫 | CLK |
GPIO3 (SPI0 MOSI) | 緑 | DIN |
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/
【マイコン基板】
Raspberry Pi Pico
【スケッチの説明】
4連MAX7219 の中央に "NEGI" と表示します。
【ライブラリ】
Raspberry Pi Pico/RP2040 > Raspberry Pi Pico
MD_MAX72XX by majicDesigns
MD_Porola by majicDesigns
【準備】
Raspberry Pi Pico <-> MAX7219
VCC(5V) <-> VCC
GND <-> GND
GPIO1 (SPI0 CS) <-> CS
GPIO2 (SPI0 SCK) <-> CLK
GPIO3 (SPI0 MOSI) <-> DATA
【バージョン情報】
2023/4/11 : 新規
**********************************************************************/
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW //デバイス種別
#define MAX_DEVICES 4 //8x8のマトリクス表示のユニット数
#define PIN_MOSI 3 //MOSI -> DIN
#define PIN_CS 1 //CS -> CS
#define PIN_SCK 2 //SCK -> CLK
MD_Parola LED = MD_Parola(HARDWARE_TYPE, PIN_CS, MAX_DEVICES);
void setup()
{
//SPIのピン設定
SPI.setTX(PIN_MOSI);
SPI.setSCK(PIN_SCK);
SPI.setCS(PIN_CS);
SPI.begin();
LED.displayReset();
LED.begin();
LED.displayText("NEGI", PA_CENTER, 0, 0, PA_PRINT, PA_NO_EFFECT);
LED.displayAnimate();
}
void loop()
{
}
結果
青LEDのモジュールと、赤LEDのモジュールで試してみました。
発光LEDは全体の 1/5 程と思いますが、電流は125mA使用しています。
(Raspberry Pi Pico 単体では 約 30mA)
メッセージスクロール
説明
4連MAX7219 に “TAMANEGI”をスクロール表示させる。
配線
配線は、「メッセージ表示」と同じです。
Raspberry Pi Pico | 配線 | MAX7219 |
---|---|---|
VBUS(5V) | 赤 | VCC |
GND | 黒 | GND |
GPIO1 (SPI0 CS) | 黄 | CS |
GPIO2 (SPI0 SCK) | 紫 | CLK |
GPIO3 (SPI0 MOSI) | 緑 | DIN |
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/
【マイコン基板】
Raspberry Pi Pico
【スケッチの説明】
4連MAX7219 に "TAMANEGI"をスクロール表示します。
【ライブラリ】
Raspberry Pi Pico/RP2040 > Raspberry Pi Pico
MD_MAX72XX by majicDesigns
MD_Porola by majicDesigns
【準備】
Raspberry Pi Pico <-> MAX7219
VCC(5V) <-> VCC
GND <-> GND
GPIO1 (SPI0 CS) <-> CS
GPIO2 (SPI0 SCK) <-> CLK
GPIO3 (SPI0 MOSI) <-> DATA
【バージョン情報】
2023/4/11 : 新規
**********************************************************************/
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW //デバイス種別
#define MAX_DEVICES 4 //8x8のマトリクス表示のユニット数
#define PIN_MOSI 3 //MOSI -> DIN
#define PIN_CS 1 //CS -> CS
#define PIN_SCK 2 //SCK -> CLK
MD_Parola LED = MD_Parola(HARDWARE_TYPE, PIN_CS, MAX_DEVICES);
void setup()
{
const long DlInterval_ms = 100; //LED.displayAnimate()を実行するたびにスクロールを行って停止するインターバル。小さいほど早くスクロールが速くなる。
const long DlStopTime_ms = 0; //すべてのアニメーションが停止した後の停止時間
//SPIのピン設定
SPI.setTX(PIN_MOSI);
SPI.setSCK(PIN_SCK);
SPI.setCS(PIN_CS);
SPI.begin();
LED.displayReset();
LED.begin();
LED.displayText("TAMANEGI", PA_LEFT, DlInterval_ms, DlStopTime_ms, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
}
void loop()
{
//LED.displayTextで設定したアニメーションを実行する。 終了するとtrueを返すのでリセットする。
if(LED.displayAnimate() == true)
{
LED.displayReset();
}
}
結果
青LEDで動作させました。
コメント