# Arduino LED陣列動態顯示_主程式碼解釋
>撰寫人[name=AmiYaku1049] [首頁--天空路1049號](https://skys-kid-lai.github.io/1004/)
>>[time=Sat, Apr 2, 2022 7:08 PM]
---
## 實驗目的
撰寫程式碼,使LED能夠顯示動態的文字
## 主程式碼及解釋
```clink=
void loop()
{
for(int pp = 0; pp < 80; pp++)
{
for(int dup = 0; dup < speed; dup++)
{
for(int col = 0; col < 8; col++)
{
digitalWrite(g1, 0);
pp1 = pp + col;
if(pp1 > 79)
pp1 -= 79;
row = tab[pp1];
for(int i = 0; i < 8; i++)
{
if(row & 1)
digitalWrite(seg[i], 0);
else
digitalWrite(seg[i], 1);
row >>= 1;
}
scanOut(col);
digitalWrite(g1, 1);
delay(1);
}
}
}
}
```
**我的解釋方式:**
* **pp**:tab[]陣列有80個內容物
* **col**:顯示器有8個直排要跑
* **digitalWrite**:讀取後面的值,並對前面的做出反應
* **g1**:連接解碼器74138的接腳。若在digitalWrite,後面為0則解碼器輸出11111111關閉LED(防殘影);若後面為1則解碼器開始解碼
* **pp1**:比起直接用pp放在tab[]裡面,不一樣的地方在於,pp1因為是pp+col會產生重複。例如說,第一次是:0,1,2,3,4,5,6,7,8 而第二次是:1,2,3,4,5,6,7,8,9。我認為是為了讓該排要亮的地方向左,讓LED產生動態輸出的感覺。
* **row**:代表了tab[]該位置的代碼,解碼後會產生二進位置的一組8位元。若row = 1,則seg[i] = 0
* **seg[i]**:一排LED的第i顆LED。測試後,在digitalWrite內,若為0,則不亮;若為1,則該顆LED會亮