期間:
1/20 準備・搬入
1/21ー25 展示期間(最終日25日は展示終了後搬出)
開館時間:11:00から17:00
*期間中ギャラリー内にだれもいない場合は、セキュリティ上一旦施錠し2F事務室へ解錠を申し出る
//8x8の二次元配列を用意
byte matrix[8][8];
void setup(){
  //出力ピンの設定、すべてオフにする
  for(int i=2;i<=17;i++){
    pinMode(i,OUTPUT);
    digitalWrite(i,LOW);
  }
  //シリアル通信開始
  Serial.begin(9600);
}
void loop(){
  //シリアル通信(64個分のデータ)
  if(Serial.available()>63){
    for(int k=0;k<8;k++){
      for(int l=0;l<8;l++){
        //読み込んだ値を配列に代入
        matrix[k][l]=Serial.read();
      }  
    }
  }
  //各LEDの点灯制御
  for(int i=2;i<=9;i++){
    //列の点灯
    digitalWrite(i,HIGH);  //極性が逆の場合HIGHをLOW
    for(int j=10;j<=17;j++){
      //行の点灯
      digitalWrite(j,LOW); //極性が逆の場合LOWをHIGH
      //行の点灯継続時間
      delayMicroseconds(1+matrix[i-2][j-10]);
      //行の消灯
      digitalWrite(j,HIGH);  //極性が逆の場合HIGHをLOW
      //行の消灯継続時間
      delayMicroseconds(256-matrix[i-2][j-10]);    
    }
    //列の消灯
    digitalWrite(i,LOW); //極性が逆の場合LOWをHIGH
} }
マトリクスLEDにはアノードコモンタイプとカソードコモンタイプがあり極性が逆になります。
以下プログラム内のdigitalWrite()のHIGH/LOWが逆になります。
*アノードコモンタイプの場合:
void setup(){
  //16本のピン(2~17)をデジタル出力に設定
  for(int i=2;i<=17;i++){
    pinMode(i,OUTPUT);
  }
}
void loop(){
  //行(横)の繰り返し処理
  for(int i=2;i<=9;i++){     //行(2~9番ピン)
    digitalWrite(i,LOW);    //LOWで点灯
    //列(縦)の繰り返し処理
    for(int j=10;j<=17;j++){ //列(10~17番ピン)
      digitalWrite(j,HIGH);   //HIGHで点灯
      delay(100);            //点灯時間
      digitalWrite(j,LOW);  //列をオフにする
    }
    digitalWrite(i,HIGH);     //行をオフにする
  }
}
void setup(){
  //16本のピン(2~17)をデジタル出力に設定
  for(int i=2;i<=17;i++){
    pinMode(i,OUTPUT);
  }
}
void loop(){
  //行(横)の繰り返し処理
  for(int i=2;i<=9;i++){     //行(2~9番ピン)
    digitalWrite(i,HIGH);    //HIGHで点灯
    //列(縦)の繰り返し処理
    for(int j=10;j<=17;j++){ //列(10~17番ピン)
      digitalWrite(j,LOW);   //LOWで点灯
      delay(100);            //点灯時間
      digitalWrite(j,HIGH);  //列をオフにする
    }
    digitalWrite(i,LOW);     //行をオフにする
  }
}