ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7Segment x 4EA와 아두이노의 연결 & 숫자 출력하기
    Arduino/7 Segment x 4EA 2020. 11. 2. 18:02

    테스트로 처음에 4자리 디지털 핀 중에서 맨 왼쪽의 a부분에만 LED를 켜려면

    다음과 같이 연결하면 된다.

    아두이노의 3.3볼트핀에 7Segment x 4EA의 11번핀을 연결하고 
    7Segment x 4EA의 12번핀에 220옴 저항을 12번핀과 같은 라인으로 저항의 한 다리를 왼쪽으로 되게 꽂는다.

    이 부분에 아두이노의 GND를 연결해서 a에 LED가 들어오면 된다.

     

    아래는 아두이노와 7Segment와의 연결할 핀 설정 부분이다.

    a(11)는 아두이노 2번핀. 괄호는 7Segment 
    b(7)는 아두이노 3번핀. 괄호는 7Segment 
    c(4)는 아두이노 4번핀. 괄호는 7Segment 
    d(2)는 아두이노 5번핀. 괄호는 7Segment 
    e(1)는 아두이노 6번핀. 괄호는 7Segment 
    f(10)는 아두이노 7번핀. 괄호는 7Segment 
    g(5)는 아두이노 8번핀. 괄호는 7Segment 
    dp(3)는 아두이노 9번핀. 괄호는 7Segment 
    세그먼트의 D1(12)을 아두이노 10번핀 220옴 저항과 연결
    세그먼트의 D2(9)을 아두이노 11번핀 220옴 저항과 연결
    세그먼트의 D3(8)을 아두이노 12번핀 220옴 저항과 연결
    세그먼트의 D4(6)을 아두이노 13번핀 220옴 저항과 연결

     

    아래는 아두이노와 7Segment와의 하드 웨어 연결이다.

     

     

    숫자가 너무 흐릿하게 나와서 위의 저항을 제거하고 연결을 하였다.

    아래와 같이 연결한다.

     

     

    7Segment의 4자리에서 맨 왼쪽에 숫자0을 출력하는 예제

    소스는 7Segment의 내용을 그대로 가지고 온 부분이 있다.

     

    아래의 내용을 참고하자.

    designatedroom87.tistory.com/267?category=900171

     

    7Segment에 숫자 표시하기

    우선 회로도를 보자. 우리가 사용할 방식은 오른쪽의 방식이다. 아두이노와 7세그먼트와의 연결은 다음과 같이 한다.a는 2번핀, b는 3번핀, c는 4번핀, d는 5번핀, e는 6번핀, f는 7번핀, g는 8번핀, dp

    designatedroom87.tistory.com

    아래의 내용도 참고를 하자.

    designatedroom87.tistory.com/268?category=900171

     

    7Segment와 시리얼 통신 하기

    시리얼 통신을 활용하여 0~9의 숫자를 입력하면 입력한 수가 7Segment에 출력되도록 만들어보자. 하드웨어의 구현의 구현과 내용은 아래를 참고하자. designatedroom87.tistory.com/267 7Segment에 숫자 표시하

    designatedroom87.tistory.com

     

    소스 코드

    더보기
    #define   D1    10  //  아두이노의 디지털 핀 번호
    #define   D2    11  //  아두이노의 디지털 핀 번호
    #define   D3    12  //  아두이노의 디지털 핀 번호
    #define   D4    13  //  아두이노의 디지털 핀 번호
    
    //  행의 수는 우리가 표현할 십진수의 개수이며, 
    //  열의 수는 십진수에 따른 수 표기에 필요한 세븐세그먼트핀의 수
    bool num[10][8] = {
        {1,1,1,1,1,1,0,0},    //  숫자0
        {0,1,1,0,0,0,0,0},    //  숫자1
        {1,1,0,1,1,0,1,0},    //  숫자2
        {1,1,1,1,0,0,1,0},    //  숫자3 
        {0,1,1,0,0,1,1,0},    //  숫자4
        {1,0,1,1,0,1,1,0},    //  숫자5 
        {1,0,1,1,1,1,1,0},    //  숫자6
        {1,1,1,0,0,0,0,0},    //  숫자7
        {1,1,1,1,1,1,1,0},    //  숫자8
        {1,1,1,1,0,1,1,0}     //  숫자9
    };
    
    void DigitalNum(int _num)
    {
      for (int i = 0; i < 8; i++)
      {
        digitalWrite(i + 2, num[_num][i]);
      }
      delay(1000);
    }
    
    void setup() {
      // put your setup code here, to run once:
      
      //  2번핀부터 9번핀까지 모두 설정
      for (int i = 2; i < 10; i++)
      {
        pinMode(i, OUTPUT);
        digitalWrite(i,LOW);
      }
    
      //  디지털 핀에 대한 초기화
      for (int i = 10; i < 14; i++)
      {
        pinMode(i, OUTPUT);
        digitalWrite(i,HIGH);
      }
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      digitalWrite(D1,LOW);
      DigitalNum(0);
    }

     

     

     

    위의 예재를 이용해서 이번에는 7Segment의 디지털 핀 4자리에 숫자를 출력하는 예제

    아래의 소스에서 함수 DigitalNum함수가 2개가 정의되어 있는 것을 볼 수 있는데,

    C++은 오버로딩이 된다.

    소스 코드

    더보기
    //  D1~D4핀에 숫자들을 표시하기
    #define   D1    10
    #define   D2    11
    #define   D3    12
    #define   D4    13
    
     //  행의 수는 우리가 표현할 십진수의 개수이며, 
      //  열의 수는 십진수에 따른 수 표기에 필요한 세븐세그먼트핀의 수
      bool num[10][8] = {
        {1,1,1,1,1,1,0,0},    //  숫자0
        {0,1,1,0,0,0,0,0},    //  숫자1
        {1,1,0,1,1,0,1,0},    //  숫자2
        {1,1,1,1,0,0,1,0},    //  숫자3 
        {0,1,1,0,0,1,1,0},    //  숫자4
        {1,0,1,1,0,1,1,0},    //  숫자5 
        {1,0,1,1,1,1,1,0},    //  숫자6
        {1,1,1,0,0,0,0,0},    //  숫자7
        {1,1,1,1,1,1,1,0},    //  숫자8
        {1,1,1,1,0,1,1,0}     //  숫자9
    };
    
    void DigitalNum(int _num)
    {
      for (int i = 0; i < 8; i++)
      {
        digitalWrite(i + 2, num[_num][i]);
      }
      delay(1000);
    }
    
    //  디지털핀의 원하는 수를 표시한다.
    void DigitalNum(int Dpin, int _num)
    {
      digitalWrite(Dpin,LOW);
      
      for (int i = 0; i < 8; i++)
      {
        digitalWrite(i + 2, num[_num][i]);
      }
    }
    
    //  디지털 핀들을 초기화하는 함수
    void DigitalPinInit()
    {
      //  디지털 핀에 대한 초기화
      for (int i = 10; i < 14; i++)
      {
        pinMode(i, OUTPUT);
        digitalWrite(i,HIGH);
      }
    }
    
    void setup() {
      // put your setup code here, to run once:
      
      //  2번핀부터 9번핀까지 모두 설정
      for (int i = 2; i < 10; i++)
      {
        pinMode(i, OUTPUT);
        digitalWrite(i,LOW);
      }
    
      //  디지털 핀에 대한 초기화
      DigitalPinInit();
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      
      DigitalNum(D1,0);
      delay(500);
      DigitalPinInit();
      
      DigitalNum(D2,1);
      delay(500);
      DigitalPinInit();
     
    
      DigitalNum(D3,2);
      delay(500);
      DigitalPinInit();
      
      DigitalNum(D4,3);
      delay(500);
      DigitalPinInit();
    }

     

     

     

    댓글

Designed by Tistory.