ドットマトリクスLEDの使い方 [Arduino]
このマトリクスはアノードコモンで「5つのアノード」(列毎)と「7つの共通行」(1,2,3,4,5,6,7行)の計12ピンで構成されています。
スケッチでは4桁7セグメントLEDと同様に1列毎にLEDを表示していますが「残像現象」で5つの列が同時に表示されているように見えます。
MOA20UB019GJの表示例
使用部品・材料
総額で約390円です。(Arduino本体の値段を除く)
部品/材料 | 値段 | 備考 |
---|---|---|
ブレッドボード | ¥270 | 秋月電子の通販コード(P-00315) |
青色ドットマトリクスLED 5x7ドット MOA20UB019GJ | ¥120 | 秋月電子の通販コード(I-08249) |
カーボン抵抗器 | 数円 | 100Ω(5個)を使用。 |
配線図
Arduinoのデジタル1-5ピンはMOA20UB019GJの5つのアノードに100Ωでプルアップをしています。6-12ピンはMOA20UB019GJの1,2...の順番で使用しています。
次の図は公式データシートより引用(MOA20UB019GJ.pdf)
MOA20UB019GJのピン配置は部品裏面を「虫眼鏡」で確認すると「1」と「12」が印字されています。ピン番号は1から半時計周りとなります。
スケッチ(プログラム)
スケッチを実行するとマトリクスに8(日)を表示します。
const int col1 = 1; const int col2 = 2; const int col3 = 3; const int col4 = 4; const int col5 = 5; const int row1 = 12; const int row2 = 11; const int row3 = 6; const int row4 = 10; const int row5 = 7; const int row6 = 8; const int row7 = 9; // 全てのCol(列)をクリア void clearCol(){ for(int i = 0; i < 5; i++){ digitalWrite((i+1),LOW); } } // 全てのROW(行)をクリア void clearRow(){ for(int i = 6; i < 13; i++){ digitalWrite(i,HIGH); } } void setup() { // 全てのピンを出力にする for(int i =0; i < 13; i++){ pinMode((i+1),OUTPUT); } } void loop() { // COL1 clearCol(); clearRow(); digitalWrite(col1,HIGH); digitalWrite(row1,LOW); digitalWrite(row2,LOW); digitalWrite(row3,LOW); digitalWrite(row4,LOW); digitalWrite(row5,LOW); digitalWrite(row6,LOW); digitalWrite(row7,LOW); delayMicroseconds(50); // COL2 clearCol(); clearRow(); digitalWrite(col2,HIGH); digitalWrite(row1,LOW); digitalWrite(row4,LOW); digitalWrite(row7,LOW); delayMicroseconds(50); // COL3 clearCol(); clearRow(); digitalWrite(col3,HIGH); digitalWrite(row1,LOW); digitalWrite(row4,LOW); digitalWrite(row7,LOW); delayMicroseconds(50); // COL4 clearCol(); clearRow(); digitalWrite(col4,HIGH); digitalWrite(row1,LOW); digitalWrite(row4,LOW); digitalWrite(row7,LOW); delayMicroseconds(50); // COL5 clearCol(); clearRow(); digitalWrite(col5,HIGH); digitalWrite(row1,LOW); digitalWrite(row2,LOW); digitalWrite(row3,LOW); digitalWrite(row4,LOW); digitalWrite(row5,LOW); digitalWrite(row6,LOW); digitalWrite(row7,LOW); delayMicroseconds(50); }
抵抗値の計算
Arduinoの電源は5V(V)。順方向電圧(DC Forward Voltage/VF)は標準3.5V。電流(DC Forward Current)の標準電流は20mA(IF)。オームの法則で算出すると75Ωとなります。
今回は大きめに100Ωを使用しました。(電流は15mA)
掲示板
ArduinoやRaspberry Piなどの電子工作の掲示板を作成しました。質問やわからない事は電子工作 (Arduino・ラズパイ等)でユーザー同士で情報を共有して下さい。