今日は、こんなこともあるんだ!っていう不思議体験に遭遇したので、その事について書きます。
講座でも使用している、4連8x8ドットLEDマトリックスですが、秋月電子さんなどの秋葉原のお店では売っていなくて、ネット通販でしか入手できないんです。
あるとき、入手手段を増やそうと買ったことのないところから買って、IoT電光掲示板の講座で使用しているプログラムを実行してみたら、ん、ん〜!なんか表示がおかしい!最後の8x8LEDマトリックスの文字が読めない!と、なったんです。
何かLEDマトリックスのテストになりそうな方法がないものかと、MD_MAX72xxライブラリのサンプルプログラムを漁っていたら、MD_MAX72xx_Testというサンプルプログラムの中に全てのLEDの点灯と消灯を繰り返すblinking()というファンクションがあって、ファンクションの中に次のコードが書かれていました。ONで全点灯、OFFで全消灯するっぽいですよね。
mx.control(MD_MAX72XX::TEST, MD_MAX72XX::ON); mx.control(MD_MAX72XX::TEST, MD_MAX72XX::OFF);
このコードを元に、次の配線で実際に動作するプログラムにしてみました。 配線
(LED) (ATOM Lite) - VCC --- 5V - GND --- G - DIN --- G19 - CS --- G22 - CLK --- G23
プログラム
#include <MD_MAX72xx.h> // LEDマトリックスライブラリ // LEDマトリックスの定義 #define HARDWARE_TYPE MD_MAX72XX::FC16_HW // LEDマトリックスのタイプ選択 #define MAX_DEVICES 4 // 8x8LEDマトリックスの接続数 #define PIN_DIN 19 // DINピンのGPIO #define PIN_CS 22 // CSピンのGPIO #define PIN_CLK 23 // CLKピンのGPIO MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, PIN_DIN, PIN_CLK, PIN_CS, MAX_DEVICES); void setup() { mx.begin(); // LEDマトリックスの初期化 } void loop() { mx.control(MD_MAX72XX::TEST, MD_MAX72XX::ON); // 全点灯 delay(1000); mx.control(MD_MAX72XX::TEST, MD_MAX72XX::OFF); // 全消灯 delay(1000); }
このプログラムを実際に動作させたら、こんな表示になりました!
全点灯
全消灯

一番左のLEDの表示が、明らかにおかしく、文字は右から左に流れるので、最後の文字が読めなくなった理由が一番左のLEDの動作不具合だったことがわかりました。
ずっと、単なるLEDの不良かと思っていたのですが... この記事を書くにあたって、ちょっと色々と試してみる事にしました。
まずは、不良がLED側なのか基盤側なのかを確かめるために、左側の2個のLEDを付け替えてみました。すると、今度は左から2番目の表示がおかしくなったのです! これで、基盤側の問題ではないことがハッキリしました。
ぼくが次に行った事を推理しながら、次の写真を見てください。
LEDマトリックスの一辺に印字がされていて、全てのLEDマトリックスの印字が見えると思います。
便宜的に上下の分かり難い部品は印字などで区別するのですが、もしやと思って正しく表示できなかったLEDマトリックスの上下を変えてみました。 すると、なんと、キチンと動作したのです! 不具合の原因は、LEDマトリックスの印字位置が上下逆になっていたせいで、LEDマトリックスが上下逆に取り付けられていた事だったんです!
こんなことも、あるものなのですねぇ...。