커뮤니티

  • 제 목 [ 기초 ] 아두이노 실습 - 7 Segment LED 카운트 하기
  • 작성자 주피터 조회 : 7,071 좋아요 : 0 댓글 : 0
  • 작성일 2019-10-25 오후 3:44:12
  • FND(Flexible Number Display) 7 Segment LED 카운트 하기

     

    ① FND 소자설명 < 캐소드 구동 방식 >

                 

     

                                                 

     

    ② 하드웨어 구성

     

    아래 그림 처럼 하드웨어를 구성한다.

     

     

    현재 위그림의 회로 연결이 된 상태는 다음과 같습니다.

     

    D0 -> teminal B

    D1 -> teminal A

    D2 -> teminal D

    D3 -> teminal C

    D4 -> teminal E

    D5 -> teminal F

    D6 -> teminal G

     

    GND는  teminal -com2로  연결 하였습니다.

     

                                                  ⓞ FND 7 Segment LED 논리 회로

     

     

    ③ 아두이노 프로그래밍

     

    프로그램 로직을 구현한다.

     

    void setup()
    {
        for( int pin = 0; pin < 7; pin++){
          pinMode(pin,OUTPUT);
        }
    }
    
    void loop()
    {
        // 0
        digitalWrite(0,1); digitalWrite(1,1); digitalWrite(2,1);
        digitalWrite(3,1); digitalWrite(4,1); digitalWrite(5,1);
        digitalWrite(6,0); 
        delay(1000);
        // 1
        digitalWrite(0,1); digitalWrite(1,0); digitalWrite(2,0);
        digitalWrite(3,1); digitalWrite(4,0); digitalWrite(5,0);
        digitalWrite(6,0); 
        delay(1000);
        // 2
        digitalWrite(0,1); digitalWrite(1,1); digitalWrite(2,1);
        digitalWrite(3,0); digitalWrite(4,1); digitalWrite(5,0);
        digitalWrite(6,1); 
        delay(1000);
        // 3
        digitalWrite(0,1); digitalWrite(1,1); digitalWrite(2,1);
        digitalWrite(3,1); digitalWrite(4,0); digitalWrite(5,0);
        digitalWrite(6,1); 
        delay(1000);
        // 4
        digitalWrite(0,1); digitalWrite(1,0); digitalWrite(2,0);
        digitalWrite(3,1); digitalWrite(4,0); digitalWrite(5,1);
        digitalWrite(6,1); 
        delay(1000);
        // 5
        digitalWrite(0,0); digitalWrite(1,1); digitalWrite(2,1);
        digitalWrite(3,1); digitalWrite(4,0); digitalWrite(5,1);
        digitalWrite(6,1); 
        delay(1000);
        // 6
        digitalWrite(0,1); digitalWrite(1,1); digitalWrite(2,1);
        digitalWrite(3,1); digitalWrite(4,1); digitalWrite(5,1);
        digitalWrite(6,0); 
        delay(1000);
        // 7
        digitalWrite(0,1); digitalWrite(1,1); digitalWrite(2,0);
        digitalWrite(3,1); digitalWrite(4,0); digitalWrite(5,1);
        digitalWrite(6,0); 
        delay(1000);
        // 8
        digitalWrite(0,1); digitalWrite(1,1); digitalWrite(2,1);
        digitalWrite(3,1); digitalWrite(4,1); digitalWrite(5,1);
        digitalWrite(6,1); 
        delay(1000);
        // 9
        digitalWrite(0,1); digitalWrite(1,1); digitalWrite(2,1);
        digitalWrite(3,1); digitalWrite(4,0); digitalWrite(5,1);
        digitalWrite(6,1); 
        delay(1000);
    }
    

     

    ④ 실물 사진

     

    아래 그림은 7 세그먼트 캐소드 방식의 구동하는 실제 사진입니다. 아래와 같이 보드를 구성하고 결과물을 확인합니다.

     

     

    \--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\--\---

     

    ※ FND 소자설명 < 애너드 구동 방식 > 일 경우 .

     

    □ 회로 구성

     

    캐서드 방식은 GND에서 전원부를 연결 해 주었으나 , 애너드 방식은 5v 또는 3.3v에서 전원을 공급해줍니다.

     

    □  아두이노 스케치

     

    void setup()
    {
        for( int pin = 0; pin < 7; pin++){
          pinMode(pin,OUTPUT);
        }
    }
    
    void loop()
    {
        // 0
        digitalWrite(0,0); digitalWrite(1,0); digitalWrite(2,0);
        digitalWrite(3,0); digitalWrite(4,0); digitalWrite(5,0);
        digitalWrite(6,1); 
        delay(1000);
        // 1
        digitalWrite(0,0); digitalWrite(1,1); digitalWrite(2,0);
        digitalWrite(3,1); digitalWrite(4,1); digitalWrite(5,1);
        digitalWrite(6,1); 
        delay(1000);
        // 2
        digitalWrite(0,0); digitalWrite(1,0); digitalWrite(2,1);
        digitalWrite(3,0); digitalWrite(4,0); digitalWrite(5,1);
        digitalWrite(6,0); 
        delay(1000);
        // 3
        digitalWrite(0,0); digitalWrite(1,0); digitalWrite(2,0);
        digitalWrite(3,0); digitalWrite(4,1); digitalWrite(5,1);
        digitalWrite(6,0); 
        delay(1000);
        // 4
        digitalWrite(0,0); digitalWrite(1,1); digitalWrite(2,0);
        digitalWrite(3,1); digitalWrite(4,1); digitalWrite(5,0);
        digitalWrite(6,0); 
        delay(1000);
        // 5
        digitalWrite(0,1); digitalWrite(1,0); digitalWrite(2,0);
        digitalWrite(3,0); digitalWrite(4,0); digitalWrite(5,0);
        digitalWrite(6,0); 
        delay(1000);
        // 6
        digitalWrite(0,1); digitalWrite(1,0); digitalWrite(2,0);
        digitalWrite(3,0); digitalWrite(4,0); digitalWrite(5,0);
        digitalWrite(6,0); 
        delay(1000);
        // 7
        digitalWrite(0,0); digitalWrite(1,0); digitalWrite(2,0);
        digitalWrite(3,1); digitalWrite(4,1); digitalWrite(5,0);
        digitalWrite(6,1); 
        delay(1000);
        // 8
        digitalWrite(0,0); digitalWrite(1,0); digitalWrite(2,0);
        digitalWrite(3,0); digitalWrite(4,0); digitalWrite(5,0);
        digitalWrite(6,0); 
        delay(1000);
        // 9
        digitalWrite(0,0); digitalWrite(1,0); digitalWrite(2,0);
        digitalWrite(3,0); digitalWrite(4,1); digitalWrite(5,0);
        digitalWrite(6,0); 
        delay(1000);
    }

     

    캐서드 방식에서는 "1"이  LED를 켜줬지만, 애너드 방식은 그와 반대이므로 "0"을 출력해야 LED가 켜집니다.

     

    □ 실물 사진