디필의 요모조모

아두이노(Ardoino) 7-Segment 코드 및 연결 방법 본문

Programming Language/C++

아두이노(Ardoino) 7-Segment 코드 및 연결 방법

Diphylleia12 2019. 12. 9. 22:21

7-Segment (연속 출력)

(1)

void setup()
{
  int i;
  for(i=3; i<10; i++)
  pinMode(i, OUTPUT);
}

void loop()
{
  // 숫자 0
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  delay(1000);
  // 숫자 1
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  delay(1000);
  // 숫자 2
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  delay(1000);
  // 숫자 3
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  delay(1000);
  // 숫자 4
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  delay(1000);
  // 숫자 5
  digitalWrite(3, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  delay(1000);
  // 숫자 6
  digitalWrite(3, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  delay(1000);
  // 숫자 7
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  delay(1000);
  // 숫자 8
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  delay(1000);
  // 숫자 9
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  delay(1000);
}

(2)

int Seven[10][7] = {{1,1,1,1,1,1,0},
                    {0,1,1,0,0,0,0},
                    {1,1,0,1,1,0,1},
                    {1,1,1,1,0,0,1},
                    {0,1,1,0,0,1,1},
                    {1,0,1,1,0,1,1},
                    {1,0,1,1,1,1,1},
                    {1,1,1,0,0,0,0},
                    {1,1,1,1,1,1,1},
                    {1,1,1,0,0,1,1}};

void setup()
{
  int i;
  for(i=3; i<10; i++)
  pinMode(i, OUTPUT);
}

void loop()
{
  for(int a=0; a<10; a++)
  {
    for(int b=0; b<7; b++)
    digitalWrite(b+3, Seven[a][b]);
    delay(1000);
  }
}

 

7-Segment (입력된 숫자만 출력) 코드

int Seven[10][7] = {{1,1,1,1,1,1,0},
                    {0,1,1,0,0,0,0},
                    {1,1,0,1,1,0,1},
                    {1,1,1,1,0,0,1},
                    {0,1,1,0,0,1,1},
                    {1,0,1,1,0,1,1},
                    {1,0,1,1,1,1,1},
                    {1,1,1,0,0,0,0},
                    {1,1,1,1,1,1,1},
                    {1,1,1,0,0,1,1}};

void setup() 
{
  Serial.begin(9600);
  
  int i;
  for(i=3; i<10; i++)
  pinMode(i, OUTPUT);
}

void loop() 
{
  char value;
  if(Serial.available() > 0)
  {
    value = (char)Serial.read();
    Serial.println(value);
    switch(value)
    {
      case '0' : Led_on(0);
                 break;
      case '1' : Led_on(1);
                 break;
      case '2' : Led_on(2);
                 break;
      case '3' : Led_on(3);
                 break;
      case '4' : Led_on(4);
                 break;
      case '5' : Led_on(5);
                 break;
      case '6' : Led_on(6);
                 break;
      case '7' : Led_on(7);
                 break;
      case '8' : Led_on(8);
                 break;
      case '9' : Led_on(9);
                 break;
    }
  }
}

void Led_on(int val)
 {
  for(int a = 0; a < val+1; a++)
      for (int b = 0; b < 7; b++)
  digitalWrite(b+3,Seven[a][b]);
  delay(1000);
 }

 

코드 연결 모습

 

위의 사진과 함께 올린 표를 참고해서 연결하면 좀 더 편합니다.

 

먼저 사진과 같이 7-Segment(사진에서 숫자를 표시)를 브래드보드에 연결해 줍니다.

그 후, 7-Segment의 3번 위치 즉, 아래쪽 가운데부터 파란줄 밑 - 위치에 저항을 연결해 줍니다.

같은 라인에 GND를 연결합니다.(저항 없이 바로 연결하면 7-Segment가 망가집니다 ㅜ)

그리고 순서대로 사진 밑 그림과 표를 이용해

아두이노 3번과 7-Segment의 7번 위치, 아두이노 4번과 7-Segment의 6번 위치... 이런 식으로 회로를 연결해줍니다.

 

그리고 컴포트후 실행을 하면 정상적으로 작동하는 모습을 보실 수 있을 겁니다^^

Comments