
マトリクスLEDのLTP-12188M-08をArduinoで光らせてみます。16ピンのものを買ったつもりが24ピンだったので、サンプルが見つからずデータシートとにらめっこでした。
マトリクスLEDのLTP-12188M-08
商品やデータシートは LTP-12188M-08(秋月電子) から確認できます。

抵抗は秋月電子の抵抗計算を使ってみたところ平均で25mAだったので118Ωぐらいのようです。

回路は上記のようになります。赤い線がアノードで青と黄色い線がカソード。つまり、アノード1つに対してカソードが2つあり、カソードの片方を使うとRED ORANGE色となり、もうひとつを使うとGREEN色になります。
上記例ではRED ORANGEにつないでいます(青い線)。GREENにするなら黄色の線ですね。
詳細はデータシートなのですが、読みにくいので上記、LTP-12188M-08にノートを貼り付けておきました。番号はピン番号となり、それ以外の文字は以下のようになります。
- C1G: カソード列1グリーン
- C1R: カソード列1レッドオレンジ
- R1: アノード行1
行列は以下のようなイメージです。
COL(列) 1, 2, 3, 4, 5, 6, 7, 8
○ ○ ○ ○ ○ ○ ○ ○ 1
○ ○ ○ ○ ○ ○ ○ ○ 2
○ ○ ○ ○ ○ ○ ○ ○ 3
○ ○ ○ ○ ○ ○ ○ ○ 4
○ ○ ○ ○ ○ ○ ○ ○ 5
○ ○ ○ ○ ○ ○ ○ ○ 6
○ ○ ○ ○ ○ ○ ○ ○ 7
○ ○ ○ ○ ○ ○ ○ ○ 8
ROW(行)
また、この部品はデジタル出力が16本必要なので、足りないぶんはアナログピンを使っています。6本あるアナログ入力ピンは、A0からA5(D14からD19)として使用できます。
ソースコードは以下のようになりました。はじめに全点灯して、1列目点灯、2列目点灯、3列目点灯・・・として波打つような動きにしています。
光らせる場合は、アノード側をHIGH、カソード側をLOWにするようです。
/**
* 2色ドットマトリクスLED(赤緑) 8×8ドット LTP-12188M-08
* http://akizukidenshi.com/catalog/g/gI-09878/
*
* 16ピン必要なのでA0からA5もデジタル(D14からD19)として利用
*/
// 要素0は使わず(0で埋めている)、要素1からがそれぞの列番号になる。
// ROW[1] + COL[1]で1行1列目のドットを指す
const int ROW[9] = {0, 4, 3, 19, 18, 14, 15, 16, 17};
const int COL[9] = {0, 12, 11, 10, 9, 8, 7, 6, 5};
void setup() {
Serial.begin(9600);
Serial.println("Initilization start");
for (int i = 1; i < 9; i++) {
pinMode(ROW[i], OUTPUT);
pinMode(COL[i], OUTPUT);
}
off();
Serial.println("Initilization end");
}
void loop() {
Serial.println("All high");
all();
delay(1500);
scroll();
}
void line(int *pinArray, int highLow) {
Serial.println(highLow);
for (int i = 1; i < 9; i++) {
digitalWrite(pinArray[i], highLow);
}
}
void all() {
Serial.println("All");
line(ROW, HIGH);
line(COL, LOW);
}
void off() {
Serial.println("Off");
line(ROW, LOW);
line(COL, LOW);
}
void scroll() {
for (int count = 5; 0 < count; count--) {
for (int i = 1; i < 9; i++) {
off();
// 1列ずつLEDを光らせる
Serial.println("One line => High");
digitalWrite(ROW[i], HIGH);
for (int i = 1; i < 9; i++) {
line(COL, LOW);
}
delay(100);
off();
}
}
}
ソースコードと回路図はGitHubにおいています。