私が持っています:
- 2 8x8 LEDマトリックス、および
- MAX7219チップ。
Q:Arduino Duemilanoveに接続するにはどうすればよいですか?
私はグーグルで遊んでいましたが、方法がわかりませんでした。
私が持っています:
Q:Arduino Duemilanoveに接続するにはどうすればよいですか?
私はグーグルで遊んでいましたが、方法がわかりませんでした。
回答:
Bryan Chungは、MAX7219を使用してLEDマトリクスをArduinoに接続する方法について、インターネットアーカイブでまだ利用可能なチュートリアルを公開していました。
これは、Arduinoマイクロコントローラボードを介して制御される、MAX7219 ICによって駆動される8×8 LEDマトリクスの実験です。LEDマトリックスとICを接続するすべてのワイヤを整理するために、カスタムPCBがDinoTechのTanによって作成されました。Arduinoボードからすべてを排出しないように、独立した12V電源が付属しています。
MAX7219ドライバICを制御するために必要なのは4本のワイヤのみです。彼らは
データクロックラッチ/ロードグランド
データピンとクロックピンは、ArduinoのshiftOut()コマンドのピンと一致する必要があります。ラッチピンは、shiftOutコマンドの後にLOWからHIGHパルスを出力します。Javelin Stampのオリジナルプログラムを作成しました。Arduinoは8ビットのデータしかシフトできないため、2つの個別のコマンドを使用して、上位バイトと下位バイトの両方をMAX7219にシフトする必要があります。MAX7219では、コマンドごとに2バイトの制御が必要です。
8×8 LEDマトリックスのデータ構造には、バイト配列(長さ8のマトリックス)を使用します。マトリックスの各行はY次元に対応しています。行の各ビットはX次元に対応します。桁1はオンです。0はオフです。X方向が反転し、1ビットのシフトもあります。updateLED()関数はこれに対応します。
最初のプログラムは、単一の線の動きのアニメーションです。
int CLOCK = 12;
int LATCH = 13;
int DATA = 11;
byte matrix[8];
int idx = 0;
void setup() {
pinMode(CLOCK, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(DATA, OUTPUT);
digitalWrite(CLOCK, LOW);
digitalWrite(LATCH, LOW);
digitalWrite(DATA, LOW);
initLED();
clearLED();
}
void loop() {
for (int j=0;j<8;j++) {
updateLED(idx, j, true);
}
refreshLED();
delay(200);
for (int j=0;j<8;j++) {
updateLED(idx, j, false);
}
refreshLED();
delay(100);
idx++;
idx %= 8;
}
void ledOut(int n) {
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, (n>>8));
shiftOut(DATA, CLOCK, MSBFIRST, (n));
digitalWrite(LATCH, HIGH);
delay(1);
digitalWrite(LATCH, LOW);
}
void initLED() {
ledOut(0x0B07);
ledOut(0x0A0C);
ledOut(0x0900);
ledOut(0x0C01);
}
void clearLED() {
for (int i=0;i<8;i++) {
matrix[i] = 0x00;
}
refreshLED();
}
void refreshLED() {
int n1, n2, n3;
for (int i=0;i<8;i++) {
n1 = i+1;
n2 = matrix[i];
n3 = (n1<<8)+n2;
ledOut(n3);
}
}
void updateLED(int i, int j, boolean b) {
int t = 1;
int n = 0;
int m = 0;
if (j==0) {
m = 7;
}
else {
m = j-1;
}
n = t<<m;
if (b) {
matrix[i] = n | matrix[i];
}
else {
n = ~n;
matrix[i] = n & matrix[i];
}
}
少し遅れて申し訳ありませんが、LEDマトリックスと7セグメントLEDディスプレイを備えたMAX7219の使用について投稿しました。