#include <SPI.h>
#define N1 10
#define N2 9
#define N3 8
byte Decode = 0x9;
byte Intensity = 0xA;
byte Scan = 0xB;
byte Shutdown = 0xC;
byte Test = 0xF;
byte A[] = {0x1F, 0x28, 0x48, 0x88, 0x88, 0x48, 0x28, 0x1F};
byte B[] = {0xFF, 0x91, 0x91, 0x91, 0x91, 0x91, 0x69, 0x06};
// Number 3
byte n1[] = {0x00, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x00};
// Number 4
byte n2[] = {0x00, 0x7E, 0x81, 0x81, 0x81, 0x81, 0x7E, 0x00};
// Number 5
byte n3[] = {0x00, 0x72, 0x89, 0x89, 0x89, 0x89, 0x7E, 0x00};
void max7219(byte cs, byte r,byte d){
digitalWrite(cs, LOW); //選取晶片
SPI.transfer(r); //暫存器位址
SPI.transfer(d); //資料
digitalWrite(cs, HIGH); //取消選取晶片
}
void clear(byte cs){
for(int i = 1;i <= 8;i++){
max7219(cs, i, 0);
}
}
void setup() {
pinMode(N1, OUTPUT);
pinMode(N2, OUTPUT);
pinMode(N3, OUTPUT);
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV64);
digitalWrite(N1, HIGH);
digitalWrite(N2, HIGH);
digitalWrite(N3, HIGH);
delay(1);
#if 0
max7219(N1, Decode,0);
max7219(N1, Intensity,7);
max7219(N1, Scan,7);
max7219(N1, Shutdown,1);
max7219(N1, Test,0);
clear(N1);
max7219(N2, Decode,0);
max7219(N2, Intensity,7);
max7219(N2, Scan,7);
max7219(N2, Shutdown,1);
max7219(N2, Test,0);
clear(N2);
max7219(N3, Decode,0);
max7219(N3, Intensity,7);
max7219(N3, Scan,7);
max7219(N3, Shutdown,1);
max7219(N3, Test,0);
clear(N3);
#endif
//delay(1000);
}
void loop() {
for(int i = 0; i< 8;i++){
max7219(N1, i+1, n1[i]);
}
for(int i = 0; i< 8;i++){
max7219(N2, i+1, n2[i]);
}
for(int i = 0; i< 8;i++){
max7219(N3, i+1, n3[i]);
}
delay(500);
clear(N1);
clear(N2);
clear(N3);
delay(500);
}