#define LATCH 13 #define CLOCK 12 #define DATA 11 byte matrix[8]; int idx = 0; int dd = 1; int rr = 1; void setup() { pinMode(CLOCK, OUTPUT); pinMode(LATCH, OUTPUT); pinMode(DATA, OUTPUT); digitalWrite(CLOCK, LOW); digitalWrite(LATCH, LOW); digitalWrite(DATA, LOW); initLED(); clearLED(); } void loop() { int n; for(dd=1;dd<0x100;dd=(dd<<1)+1){ for(n=1;n<=8;n++){ ledOut((n<<8)+dd); } delay(80); } for(rr=1;rr<9;rr++){ ledOut((rr<<8)+0x00); delay(80); } } /* * The source code below is quotation from * http://www.bryanchung.net/?p=177 */ void ledOut(int n) { digitalWrite(LATCH, LOW); shiftOut(DATA, CLOCK, MSBFIRST, (n>>8)); //output upper 8bits shiftOut(DATA, CLOCK, MSBFIRST, n); //output lower 8bits digitalWrite(LATCH, HIGH); delay(1); digitalWrite(LATCH, LOW); } void initLED() { ledOut(0x0B07); ledOut(0x0A07); ledOut(0x0900); ledOut(0x0C01); } void clearLED() { int n; for(n=1;n<9;n++){ ledOut((n<<8)+0x00); } } 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<