//電光表示板スケッチ by Kimio Kosaka //四谷アートステデュウム発明工作ゼミ //Arduino マトリクスLED1を引用し改編 //http://kousaku-kousaku.blogspot.com/2008/07/arduinoled.html #define DUTY 10 // DUTYの値は1〜20までの値。値が大きいとLEDが明るく点灯 #define S_DELAY 80 // S_DELAYの値を大きくするとゆっくりスクロールする #define DOTS 54 //表示キャラクタArduinoのデータ boolean matrix[8][DOTS+1]={ // A r d u i n o . {0, 0,1,1,1,0, 0,0 ,0,0,0,0,0, 0,0, 0,0,0,0,1 ,0,0, 0,0,0,0,0, 0,0, 0,1,0, 0,0, 0,0,0,0,0, 0,0, 0,0,0,0,0, 0,0, 0,0 }, {0, 1,0,0,0,1, 0,0 ,0,0,0,0,0, 0,0, 0,0,0,0,1, 0,0, 0,0,0,0,0, 0,0, 0,0,0, 0,0, 0,0,0,0,0, 0,0, 0,0,0,0,0, 0,0, 0,0 }, {0, 1,0,0,0,1, 0,0 ,1,0,1,1,0, 0,0, 0,1,1,0,1, 0,0, 1,0,0,0,1, 0,0, 1,1,0, 0,0, 1,0,1,1,0, 0,0, 0,1,1,1,0, 0,0, 0,0 }, {0, 1,0,0,0,1, 0,0 ,1,1,0,0,1, 0,0, 1,0,0,1,1, 0,0, 1,0,0,0,1, 0,0, 0,1,0, 0,0, 1,1,0,0,1, 0,0, 1,0,0,0,1, 0,0, 0,0 }, {0, 1,1,1,1,1, 0,0 ,1,0,0,0,0, 0,0, 1,0,0,0,1, 0,0, 1,0,0,0,1, 0,0, 0,1,0, 0,0, 1,0,0,0,1, 0,0, 1,0,0,0,1, 0,0, 0,0 }, {0, 1,0,0,0,1, 0,0 ,1,0,0,0,0, 0,0, 1,0,0,0,1, 0,0, 1,0,0,1,1, 0,0, 0,1,0, 0,0, 1,0,0,0,1, 0,0, 1,0,0,0,1, 0,0, 1,1 }, {0, 1,0,0,0,1, 0,0 ,1,0,0,0,0, 0,0, 0,1,1,1,1, 0,0, 0,1,1,0,1, 0,0, 1,1,1, 0,0, 1,0,0,0,1, 0,0, 0,1,1,1,0, 0,0, 1,1 }, {0, 0,0,0,0,0, 0,0 ,0,0,0,0,0, 0,0, 0,0,0,0,0, 0,0, 0,0,0,0,0, 0,0, 0,0,0, 0,0, 0,0,0,0,0, 0,0, 0,0,0,0,0, 0,0, 0,0 }, }; //初期化 void setup(){ for(int i=2;i<=17;i++){ pinMode(i,OUTPUT); digitalWrite(i,LOW); } } //LEDマトリクス制御ピンの配置設定 14=A0,15=A1,16=A2,17=A3 byte col[8]={ 5,11,10, 8,16, 7, 3, 2}; byte row[8]={ 9, 4,14, 6,13,15,12,17}; void loop(){ int count=S_DELAY; while(count>0){ for(int r=0;r<=7;r++){ digitalWrite(row[r],HIGH); //row 行:HIGHで点灯 for(int c=0;c<=7;c++){ digitalWrite(col[c],!matrix[r][c+1]); //col 列:LOWで点灯 delayMicroseconds(DUTY);//点灯時間 digitalWrite(col[c],HIGH);//オフにする delayMicroseconds(21-DUTY); } digitalWrite(row[r],LOW);//オフにする } count--; } //カスケーディング for(int k=0;k<=7;k++){ for(int l=0;l<=DOTS;l++){ if(l==DOTS){ matrix[k][DOTS]=matrix[k][0]; }else{ matrix[k][l]=matrix[k][l+1]; } } } }