請複習前面單元 雙點控制 LED 方法。
如上圖,紅色線給予高電位,藍色線給予低電位,則對應的 LED 會亮。
程式碼如下:
void setup() {
      for (int i = 2; i<=5; i++) pinMode(i, OUTPUT);
      for (int i = 8; i<=11; i++) pinMode(i, OUTPUT);
      for (int i = 8; i<=11; i++) digitalWrite(i, LOW);
      digitalWrite(8, HIGH); //紅色線
      for (int i = 2; i<=5; i++) digitalWrite(i, HIGH);
      digitalWrite(3, LOW); //藍色線
}

void loop() { }


若一排要一次顯示數顆如下圖:(程式碼如下)                        Tinker Cad 的圖形
 
void setup() {
     for (int i = 2; i<=5; i++) pinMode(i, OUTPUT);
      for (int i = 8; i<=11; i++) pinMode(i, OUTPUT);
      for (int i = 8; i<=11; i++) digitalWrite(i, LOW);
      digitalWrite(8, HIGH); //紅色線
      for (int i = 2; i<=5; i++) digitalWrite(i, HIGH);
      digitalWrite(3, LOW); //藍色線
      digitalWrite(5, LOW); //藍色線
}

void loop() { }


若要控制整面的燈,則需要一排一排控制(稱為掃描),利用視覺暫留,產生整面結果。

void setup() {
    for (int i = 2; i<=5; i++) pinMode(i, OUTPUT);
    for (int i = 8; i<=11; i++) pinMode(i, OUTPUT);
}

void loop() {
    //以下是控制第 1 行
    for (int i = 8; i<=11; i++) digitalWrite(i, LOW);
    digitalWrite(8, HIGH); //橙色線
    for (int i = 2; i<=5; i++) digitalWrite(i, HIGH);
    digitalWrite(4, LOW); //灰色線
    delay(100);

//以下是控制第 2 行
    for (int i = 8; i<=11; i++) digitalWrite(i, LOW);
    digitalWrite(9, HIGH); //紅色線
    for (int i = 2; i<=5; i++) digitalWrite(i, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(5, LOW); //藍色線
    delay(100);

//以下是控制第 3 行
    for (int i = 8; i<=11; i++) digitalWrite(i, LOW);
    digitalWrite(10, HIGH); //紅色線
    for (int i = 2; i<=5; i++) digitalWrite(i, HIGH);
    digitalWrite(4, LOW); //藍色線
    delay(100);

//以下是控制第 4 行
    for (int i = 8; i<=11; i++) digitalWrite(i, LOW);
    digitalWrite(11, HIGH); //紅色線
    for (int i = 2; i<=5; i++) digitalWrite(i, HIGH);
    delay(100);
}




同樣的亮燈,另一種寫法:
void setup() {
     //同上
}

void loop() {
     //使用迴圈控制 1 至 4 行
     for(int j=8; j<=11; j++){
          for (int i = 8; i<=11; i++) digitalWrite(i, 0);
          digitalWrite(j, HIGH); //橙色線
          for (int i = 2; i<=5; i++) digitalWrite(i, 1);
          switch(j){
               case 8://灰色線
                    digitalWrite(4, LOW);break;
               case 9://灰色線
                    digitalWrite(5, LOW);
                    digitalWrite(3, LOW);break;
               case 10://灰色線
                    digitalWrite(4, LOW);break;
          }
          delay(10);
}
}



同樣的亮燈,比較常用(標準)用法:(業界使用方式)
const byte x[ ]={B1011, B0101, B1011, B1111};
void setup() {
     //同上
}

void loop() {
     int i,j,k;
     for(j=0; j<4; j++){
          digitalWrite(j+8,1);//橙色開
          digitalWrite(((j+3)%4)+8,0);//橙色關
          for (i = 2,k=1; i<=5; i++,k<<=1)
               digitalWrite(i, x[j]&k);//灰色
          delay(10);
     }
}