ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7Segment에 숫자를 표시
    Arduino/Shift Register 2020. 11. 6. 18:45

    D Flip Flop은 LOW에서 HIGH가 될 때, 신호를 내보낸다.

     

    레지스터의 14번 핀을 통해 10진수의 데이터가 입력되면

    a~h핀(8개. h핀은 7Segment의 dp핀에 연결)을 통해 2진수 형태의 데이터가 출력된다.

     

    하드웨어의 연결

    먼저, 아두이노의 5V선과 빵판의 VCC선과 연결을 한다.

    그리고 아두이노의 GND선과 빵판의 GND와 연결을 한다.

    VCC와 GND가 필요하면 점프선으로 연결한다.

     

    레지스터의 16번핀은 빵판의 VCC에 연결.

    레지스터의 10번핀은 빵판의 VCC에 연결.

    레지스터의 9번 핀에는 아무것도 연결하지 않는다.

     

    레지스터와 아두이노의 핀 연결

    레지스터의 14번핀과 아두이노의 3번핀을 연결

    레지스터의 13번핀은 아두이노의 GND핀에 연결

    레지스터의 12번핀은  아두이노의 4번핀과 연결

    레지스터의 11번핀은 아두이노의 3번핀과 연결

     

    레지스터와 7Segment와의 하드웨어 연결

    레지스터의 15번핀은 7Segment의 a에 연결

    레지스터의 1번핀~6번 7Segment의 각 b~g에 연결

    레지스터의 7번핀은 7Segment의 dp에 연결

    레지스터의 8번핀은 빵판의 GND에 연결

     

    아래는 아두이노와 레지스터와의 연결 그림이다.

     

    그리고 7Segment의 가운데 두 핀은 각 각 220옴 저항을 연결하고 각 각 빵판의 GND에 연결한다. 

    아래의 세 그림은 7Segment와 저항을 연결한 그림이다.

    아래의 그림에서 각 저항이 끝에 연결된 초록색 선과 붉은선은 빵판의 GND에 연결한다. 

     

    전체적으로 연결한 모습은 아래의 그림이다.

     

    0~9의 숫자를 7Segment에 출력하는 프로그램을 작성해보자.

    그리고 아래의 소스에서 LSBFIRST라고 하면 아래 내용의 7Segment에 숫자를 출력하는 내용과 같다.

    다만 여기서는 10진수로 표현한 형태이다.

    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

     

    7Segment에 숫자를 출력하는 내용은 
    digitalWrite(LATCH_PIN, LOW) 함수와 digitalWrite(LATCH_PIN, HIGH)함수 사이에 들어오면 된다.

    소스 코드

    더보기
    const int LATCH_PIN = 4;  //  12 RCLK LATCH PIN
    const int CLOCK_PIN = 3;  //  11 SCK CLOCK PIN
    const int DATA_PIN = 2;   //  14 SER DATA PIN
    
    int g_7SEGMENT_Num[10] = {  //  LSBFIRST
        252, // 0  
        96 , // 1
        218, // 2
        242, // 3
        102, // 4
        182, // 5
        190, // 6
        224, // 7
        254, // 8
        246  // 9
      };
    
    //  레지스터와 7Segment의 연결
    //  15번핀과 a에 연결
    //  1번핀부터 7번핀까지 b~h에 그리고 마지막으로 dp를 연결
    void setup() {
      // put your setup code here, to run once:
      pinMode(LATCH_PIN,OUTPUT);
      pinMode(CLOCK_PIN,OUTPUT);
      pinMode(DATA_PIN,OUTPUT);
    /*
      //  동작을 시키기 위한 구문
      digitalWrite(LATCH_PIN, LOW);
    
      shiftOut(DATA_PIN,CLOCK_PIN,LSBFIRST,218);  //  LSBFIRST, MSBFIRST
      
      digitalWrite(LATCH_PIN, HIGH);
      */
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
      for (int decimal = 0; decimal < 10; decimal++)
      {
        //  동작을 시키기 위한 구문
        digitalWrite(LATCH_PIN, LOW);
      
        shiftOut(DATA_PIN,CLOCK_PIN,LSBFIRST,g_7SEGMENT_Num[decimal]);  //  LSBFIRST, MSBFIRST
    
        digitalWrite(LATCH_PIN, HIGH);
        
        delay(1000);
      }
    }

     

    댓글

Designed by Tistory.