#include #define ROW 8 #define COL 3 #define G1 10 #define LED_L 8 #define LIGHT 1 #define DARK 0 #define beg 4//起始值 const char scan[COL] = {13,12,11}; const char tMax[LED_L]={5,6,7,6,8,7,6,7}; const char row[ROW] = {9,8,7,6,5,4,3,2}; const char Speed[] = {40, 30, 30, 20, 20, 10, 10, 1,1}; int xC=0;//計數器 char Map[LED_L]; char Title[LED_L+1][5];//速度,起始值,目前值,終值,遞增(減) void setRand(char); void moveMap(); void prnMap(); void setup() { int i,j,k,m,n; randomSeed(analogRead(A0)); for (i = 0; i0); Title[i][2]=Title[i][1]; x=LED_L-Title[i][1]; Title[i][3]=random(x-2)+Title[i][1]+2+(random(beg)>1); if(Title[i][3]>=LED_L) Title[i][3]=LED_L; Title[i][4]=1; Map[i]=Title[i][2]; } //速度(0),起始值(1),目前值(2),終值(3),遞增(減)(4) void moveMap(){ char i,j,k; for(i=0;i=Speed[Title[i][2]]){ Title[i][0]=0; Title[i][2]+=Title[i][4]; if(Title[i][2]Title[i][3]){ Title[i][4]=-1; Title[i][2]+=Title[i][4]; } Map[i]=Title[i][2]; } else Title[i][0]++; } void prnMap(){ char i,j,k,u,m; for(i=LOW;i<=HIGH;i++){ digitalWrite(scan[2],i); for(j=LOW;j<=HIGH;j++){ digitalWrite(scan[1],j); for(k=LOW;k<=HIGH;k++){ digitalWrite(scan[0],k); u=i*4+j*2+k; for(m=0;m