2017年1月2日 星期一

[玩轉光立方] LED Cube 4x4x4 for Arduino UNO -- 程式3

在前兩篇貼文中,我們介紹了如何從頂端到底端以及從前面到背面點亮 LED,

玩轉光立方 LED Cube 4x4x4 for Arduino UNO http://pizgchen.blogspot.tw/2016/12/led-4x4x4-for-arduino-uno.html

玩轉光立方 LED Cube 4x4x4 for Arduino UNO -- 程式2 http://pizgchen.blogspot.tw/2017/01/led-led-cube-4x4x4-2.html

以上兩種方式只能逐一點亮 LED,無法做出多樣式的顯示圖案。本篇旨在為以後使用查表法做出動態顯示圖案做準備,在程式結構方面稍做修改。


程式碼

//2017-01-01 LED_Cube4_03.ino
//為了之後的動態顯示,用另一種方式來點亮全部 LED

#define CUBE_SIZE 4
#define PLANE_SIZE CUBE_SIZE*CUBE_SIZE
#define PLANE_TIME 0
#define LED_TIME 0

int LEDPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A0, A1};
int PlanePin[] = {A2 , A3, A4, A5};

void setup()
{
  int pin;
  for (pin = 0; pin < PLANE_SIZE; pin++) {
    pinMode(LEDPin[pin], OUTPUT);
    digitalWrite(LEDPin[pin], LOW);
  }
  for (pin = 0; pin < CUBE_SIZE; pin++) {
    pinMode(PlanePin[pin], OUTPUT);
    digitalWrite(PlanePin[pin], HIGH);
  }
}

void loop()
{
  for (int plane = 0; plane < CUBE_SIZE; plane++) {
    digitalWrite(PlanePin[plane], LOW);
    for (int col = 0; col < CUBE_SIZE; col++) {
      for (int row = 0; row < CUBE_SIZE; row++)
      {
        digitalWrite(LEDPin[col * CUBE_SIZE + row], HIGH);
        delay(LED_TIME);
        digitalWrite(LEDPin[col * CUBE_SIZE + row], LOW);
      }
    }
    delay(PLANE_TIME);
    digitalWrite(PlanePin[plane], HIGH);
  }
}


來看看影片



延伸閱讀

玩轉光立方上一篇 http://pizgchen.blogspot.tw/2017/01/led-led-cube-4x4x4-2.html
玩轉光立方下一篇 http://pizgchen.blogspot.tw/2017/03/led-led-cube-4x4x4-for-arduino-uno-4.html

6 則留言:

  1. 大大你好! 小弟我看了你 LED Cube 4x4x4 for Arduino UNO 感到有興趣 也買了一組材料來DIY 也讓LED Cube 4x4x4跑過了你所寫的程式 當下十分開心! 可是要如何讓它顯示出圖形或者隨機一顆一顆閃爍呢? 因小弟我對程式是一竅不通...所以小弟我想請問大大能否分享這類的程式碼? 麻煩你了!!

    回覆刪除
    回覆
    1. 「隨機一顆一顆閃爍」請詳 http://pizgchen.blogspot.tw/2017/03/led-led-cube-4x4x4-for-arduino-uno-4.html

      刪除
  2. 你好,你可以等待我後續貼文。
    可以請問你到哪購買的嗎?

    回覆刪除
    回覆
    1. 小弟我是從你所提供的採購資訊那邊的網址所訂購的, 小弟我會好好期待你的後續貼文的 非常感謝你!!

      刪除
  3. 你好 請問全亮全滅的程式碼要怎麼改?

    回覆刪除