PR

Arduino UNO R4 Wifiの本体についているマトリックスLEDを点灯させてみる

arduino-uno-r4-wifi-matrix-led-eyecatch
arduino-uno-r4-wifi-matrix-led-eyecatch

 ほっぴーです。今回は、Arduino UNO R4 Wifiに最初から基板上に搭載されているマトリックスLEDたちを光らせる方法についてご紹介します。

 マトリックスLEDってなに?という方向けに最初にご紹介しておきます。このようなLEDの塊です。

ArduinoUNOR4wifiのマトリックスLEDを光らせた状態

 縦に4本くらいLEDが点灯しているのが見えると思います。Arduino UNO R4 Wifiには、このように縦8個、横12個のLEDが並んでいます。行列のように並んでいることから、マトリックスLEDと呼ばれます。

 このマトリックスLEDは、好きなようにどこを点灯させるかプログラミングすることが可能です。文字を書くのもよし。絵をかくのも良し。8×12のドットで表現できるので想像力が膨らみますね!

 マトリックスLEDというと、どこのLEDを点灯させるのかの指定が難しいor面倒と思いがちですが、実は直感的に指定できる方法があるんです。さすがArduino。今回はそんな方法もご紹介しつつお好きな表示ができるようになる方法を解説します。

 ※注意※今回のお話はArduino UNO R4 Wifiの基板上のマトリックスLEDを光らせる話なので、互換機を含めて他のArduinoシリーズでは実現できません。ご了承ください。

この記事を読むことでわかること

Arduino UNO R4 Wifi内蔵のマトリックスLEDを自由自在に操る方法がわかる

自己紹介

サラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

2022年5月に転職。現役バリバリの技術者です。
現在は超大手企業の新規事業分野で装置の研究・開発をしています。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

注意

本ブログはアフィリエイトを用いた広告を掲載しています。

必要なものはArduino UNO R4 Wifiとケーブル、PCだけ

 今回必要になるのは、Arduino UNO R4 Wifiとそれをつなげるケーブル、PCこの3点だけです。ほかに必要になるものは無いので、手軽に試してみることができます。

どこを光らせるかテストしてみる方法

 方法は大きく分けて3つ紹介します。コードを一切書かずに試す方法から、LEDの番地を指定する方法まで紹介します。

どこを光らせるかテストしてみる方法
  • とりあえず直感的に光らせてみる方法
  • 直感的に作り込んでそのあと光らせる方法
  • 補足:番地指定の方法

とりあえず直感的に光らせてみる方法

 まずは直感的に光らせてみましょう。直感的にどこを光らせるか決めたほうが楽しいですよね!?というわけで次のような手順で直感的に光らせることができます。

とりあえず直感的に光らせる手順
  • コードをコピペして下準備をする
  • Arduino LED MATRIX EDITORを使って光らせる

コードをコピペして下準備をする

 まずはこちらのコードをコピペしてArduino UNO R4 Wifiに書き込んでください。

#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;

void setup() {
  Serial.begin(115200);
  matrix.begin();
}

uint32_t frame[] = {
  0, 0, 0, 0xFFFF
};

void loop() {
  if(Serial.available() >= 12){
    frame[0] = Serial.read() | Serial.read() << 8 | Serial.read() << 16 | Serial.read() << 24;
    frame[1] = Serial.read() | Serial.read() << 8 | Serial.read() << 16 | Serial.read() << 24;
    frame[2] = Serial.read() | Serial.read() << 8 | Serial.read() << 16 | Serial.read() << 24;
    matrix.loadFrame(frame);
  }
}

 こちらのコードは、以下のようにArduino IDEのスケッチ例にも収録されています。

マトリックスLEDをリアルタイムに制御するための準備

 このコードを書く理由ですが、次の手順のArduino LED MATRIX EDITORでリアルタイムにマトリックスLEDを光らせるための準備のためです。コードの中身は、シリアル通信してPCとやり取りをするものです。深く考える必要はとりあえずないです。まずはコピペしてArduino UNO R4 Wifiに書き込んでください。

Arduino LED MATRIX EDITORを使って光らせる

 先ほどのコードを書き込めたら、次はArduino LED MATRIX EDITORにアクセスしましょう。アクセス先はこちらです。

Arduino LED MATRIX EDITOR

 こちらに飛ぶと、このような画面になります。

LED MATRIX EDITORを立ち上げた状態

 やることはこのArduinoっぽいアイコンを押すことです。

Arduinoと接続するためのボタン

 すると、こんな感じでライブビュー用のスケッチ書いた?と聞かれるのでアップロードしたよ。とボタンを押して、

あらかじめ必要なコードがArduinoに書き込まれているか確認が入る

 次に出てくるウィンドウでTRYをクリックしましょう。

PCとArduinoがケーブルでつながっているかの確認画面

 すると、このようにブラウザからArduinoにアクセスして良いか聞かれますので、選択して接続を押しましょう。

PCにつながったArduinoをブラウザ上で接続する

 するとなんと…もう自由にArduino UNO R4 Wifiとこの画面がリンクします。なので例えばこのように線を引くと…

自由にマトリックスLEDを光らせる場所を選択

 このようにArduino UNO R4 Wifi側でも同じようにリアルタイムでLEDが光ります。

Arduinoの内蔵マトリックスLEDを光らせている様子

 エディタ上でリアルタイムで直感的に光らせることができるのは結構面白いです!ぜひ遊んでみてください。

直感的に作り込んでそのあと光らせる方法

 さて、直感的に絵をかいてこれを通常のArduinoのスケッチの中で使いたいな…と思った場合、一工夫が必要になります。3ステップで解説します。

作り込んだ絵を自由に光らせる方法3ステップ
  • 好きな絵を完成させる
  • 絵の情報をコードとしてダウンロードする
  • ダウンロードしたデータをスケッチに入れ込む

好きな絵を完成させる

 お好きなように心ゆくまで作り込んでください。アイコンについては恐らく説明はいらないでしょうが、一番上のモードで線を書いて、その下が消しゴム。残りはundoや全消しなどです。

マトリックスLEDの点灯場所を編集するツール

絵の情報をコードとしてダウンロードする

 さて、作り込んだ絵をArduinoに表示させるためには、今書いた絵のデータが必要になります。具体的にはLEDがどこが光ってどこが光らないかの情報ですね。

 この情報をダウンロードするには、こちらをクリックします。

コードを表示させるボタン

 すると、ヘッダーファイルがダウンロードされますので、お好きなエディタで開いてみてください。メモ帳でも開くはずです。メモ帳で開いたのがこちらです。

光らせたいマトリックスLEDの番地

 大事なのは、0x~~~で書かれた4行です。この4行が、LEDのどこが光ってどこが光らないかの指定している内容です。つまりこの4行があなたが書いた絵の情報だと思ってください。

ダウンロードしたデータをスケッチに入れ込む

 最後に、ダウンロードした4行のデータをどうやってご自分のコードに入れ込むかの解説です。

 まず、簡単なのはこちらのコードをコピペしてください。

#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;

void setup() {
  Serial.begin(115200);
  matrix.begin();
}

const uint32_t happy[] = {
    0x19819,
    0x80000001,
    0x81f8000
};
const uint32_t heart[] = {
    0x3184a444,
    0x44042081,
    0x100a0040
};
  
void loop(){
  matrix.loadFrame(happy);
  delay(500);

  matrix.loadFrame(heart);
  delay(500);
}

 こちらは、笑顔の絵と、ハートの絵を500cSecで切り替えるコードです。何か見覚えがある箇所はありませんか?

 そうです。0x~~~のところですね。先ほどダウンロードした絵の情報をこちらの0x~~~に入れ替えてあげればいいんです。

 例えば、heart[]の{}の中にある0x~~~を先ほどダウンロードした0x~~~に入れ替えて、Arduinoに書き込みしてあげれば、笑顔の絵と、あなたが作った絵が500mSec毎に切り替わります。もうここまでくれば何となくアレンジできそうですよね??

 ※ただし、Arduino MATRIX EDITORを開いたままだと、Arduinoの制御がブラウザに取られていますので書き込みできません。スケッチを書き込むときはArduino LED MATRIX EDITORは閉じましょう。

補足:番地指定の方法

 さて、ここまでは何も考えずにできる話でしたが、0x~~~ってなんなのよ?という話も必要かと思いましたので少し補足します。

 まず、前提として、縦8マス、横12マスのLEDが付いていますから、指定する方法としては、一個ずつ指定するのが真っ先に思いつくかと思います。イメージとしてはこんな配列を指定してあげる方法です。

byte frame[8][12] = {
  { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
  { 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
  { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
  { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
  { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};

 ただこれだと面倒ですよね…0と1をどんだけ書かないといけないんだと…

 なのでそこを解決するために先ほどの0x~~~が登場します。先ほどの0,1で表示させる方法は、2bit表記でしたが、32bit表記にすることでこれを解決しています。

 8×12マスなので情報としては96個の番地で0or1を指定するわけですが、32bitで指定することで、96/32=3で、3行で表記することが可能になる。という流れです。

 つまり、1個目の番地から、32個目の番地までを1つの区切りとして0x~~~と指定して、33個目から64個目までをまた0x~~~と指定して…ということです。

 ですから、先ほどの0,1でずらっと並べた配列と、0x~~~の3行は変換して同じ値を表示していると思ってください。

今回のまとめ

 今回はArduino UNO R4 Wifiに最初から搭載されているマトリックスLEDを点灯させる方法について解説しました。

 仕組みさえわかってしまえばそこまで難しくないですよね?ポイントは光らせる番地の指定方法です。まずはArduino LED MATRIX EDITORで絵を作って、その番地をダウンロードして、ご自身の使いたいように入れ込む。

 これだけマスターしてしまえばとりえず表示・点滅・切り替えはできます。スクロールしたり、アニメーションにしたりする方法は後ほどまたご紹介しますのでお楽しみに!

コメント

タイトルとURLをコピーしました