小綠人動畫

 #include <LedControl.h>


LedControl lc = LedControl(5, 7, 6, 1);


// 小綠人走路動畫(每 8 個 byte 是一個動作)

byte gMan[] = {

  // 動作1

  B00000000,B11010001,B11110111,B00111100,B00011000,B00000101,B00000011,B00000000,

  // 動作2

  B00000000,B11011011,B11110110,B00111100,B00011000,B00010100,B00001011,B00000000,

  // 動作3

  B00001000,B11010010,B11111010,B00111100,B00010100,B00010010,B00001011,B00000000,

  // 動作4

  B11001010,B11110010,B00111100,B00101000,B00100100,B00010010,B00000011,B00000000,

  // 動作5

  B11001001,B11110001,B00111111,B00011100,B00010100,B00001010,B00000111,B00000000,

  // 動作6

  B11001001,B11110011,B00111100,B00011100,B00010010,B00001011,B00000100,B00000000,

  // 動作7

  B11000000,B11111010,B00111101,B00011110,B00010011,B00001000,B00000000,B00000000,

  // 動作8

  B00000000,B11000000,B11110000,B00111110,B00011010,B00000111,B00000000,B00000000,

  // 停止

  B00000000,B00011001,B00100011,B11111110,B11111110,B00100011,B00011001,B00000000

};


void setup() {

  lc.shutdown(0, false);   // 啟動顯示

  lc.setIntensity(0, 8);   // 設定亮度

  lc.clearDisplay(0);      // 清除顯示

}


void loop() {

  // 播放走路動畫

  for (int frame = 0; frame < 9; frame++) {   // 共有 9 個動作

    showFrame(frame);

    delay(400);  // 每個動作停留 400ms

  }

}


// 顯示某一個動作(frame)

void showFrame(int frame) {

  for (int row = 0; row < 8; row++) {

    lc.setRow(0, row, gMan[frame * 8 + row]);

  }

}


留言