Japanino特設サイト トップに戻る

Sketch スケッチ

“JAPANINO”スウィング

// Japanino POV (without switch) by Musashinodenpa

#define LEDPIN 7     // どのピンからLEDをつなぐか
#define NUMLED 7     // LEDの数

// ビットマップ(画像)を定義。最長255行
byte bitmap[] = {
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b01110000,
  0b01000000,
  0b01000000,
  0b01000000,
  0b01111111,
  0b00000000,
  0b01100000,
  0b00011000,
  0b00001110,
  0b00001001,
  0b00001110,
  0b00011000,
  0b01100000,
  0b00000000,
  0b01111111,
  0b00001001,
  0b00001001,
  0b00001001,
  0b00001111,
  0b00000000,
  0b01100000,
  0b00011000,
  0b00001110,
  0b00001001,
  0b00001110,
  0b00011000,
  0b01100000,
  0b00000000,
  0b01111111,
  0b00000010,
  0b00001100,
  0b00011000,
  0b01111111,
  0b00000000,
  0b00000000,
  0b01111111,
  0b00000000,
  0b00000000,
  0b01111111,
  0b00000010,
  0b00001100,
  0b00011000,
  0b01111111,
  0b00000000,
  0b01111111,
  0b01000001,
  0b01000001,
  0b01111111,
  0b00000000,
  0b10000000   // 最後の行は0b10000000(つまり目印)
};

unsigned char pos;  // 現在のビットマップ中の位置
unsigned char i;

void setup() {
  // LEDが接続されたピンを出力に設定します
  for(char pin = LEDPIN; pin < LEDPIN + NUMLED; pin++) {
    pinMode(pin, OUTPUT);
  }
}

void loop() {

  pos = 0;

  while(bitmap[++pos] != 0b10000000) {  // ビットマップの端まで繰り返し
    for(i = 0; i < NUMLED; i++) {  // LEDの数だけ繰り返し
      // ビットマップデータから1ビットを取り出してピンの状態に反映
      digitalWrite(LEDPIN + NUMLED - 1 - i,
       (bitmap[pos] >> i) & 0b00000001);
    }
    delay(1);  // LEDが光っている時間
  }

  for(i = LEDPIN; i < LEDPIN + NUMLED; i++) {  // 全LED消灯
    digitalWrite(i, LOW);
  }
}
このページのトップへ