# Lab2 7-segment LED display
## Members:
411085031 劉又瑄
410985004 陳文彥
411085020 林漢昕
## Principle:
Use 7 pin to control the number we play and use 4 pin to determine which light is under control.
## Program:
```c=
char col[] = {47, 49, 51, 53};
char row[] = {38, 40, 42, 44, 46, 48, 50, 52};
char TAB[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
void setup()
{
for (int i = 0; i < 4; i++)
{
pinMode(col[i], OUTPUT);
digitalWrite(col[i], HIGH);
}
for (int j = 0; j < 8; j++)
{
pinMode(row[j], OUTPUT);
digitalWrite(row[j], HIGH);
}
}
void light(int index, int num) {
digitalWrite(col[index], LOW);
for (int k = 0; k < 8 ; k++)
digitalWrite(row[k], TAB[num] >> k & 0x01);
delay(5);
digitalWrite(col[index], HIGH);
}
void setNumber(int num) {
light(3, num % 10);
light(2, num / 10 % 10);
light(1, num / 100 % 10);
light(0, num / 1000);
}
int minSec = 0;
void loop()
{
int minSec = millis() / 100;
setNumber(minSec / 600 * 1000 + minSec % 600);
}
```
## Description
### ``setup()``
Set up the output pin.
### ``light(int index, int num)``
Set the i'th LED to one digit num.
### ``setNumber(int num)``
Set all of light to the four digits of num.
### ``loop()``
Use``millis()``to get the current time, convert it to a four digits num and call``setNumber(int num)``with it in avery loop.
## Result
### [影片連結](https://drive.google.com/drive/u/0/folders/1n6hdeguwyIUa-wu3iFgC_ic0AQoZTTU9)
