본문 바로가기

개발자/부품

2-Digit Seven Segment Display

반응형

이 튜토리얼에서는 아두이노 UNO 보드로 2자리 7 세그먼트 디스플레이를 사용하는 방법을 보여드리겠습니다. 0에서 '숫자'(변수)까지, '숫자'에서 0까지 카운트하기 위해 countUP() 및 countDown() 함수를 사용할 것입니다. 이 '숫자'를 0에서 99까지의 값으로 변경할 수 있습니다. 

 

 

 

 

연결은 간단합니다:

 

4자리 7세그먼트 연결:

Vcc - 아두이노 5V 핀

GND - 아두이노 GND

SDI - 아두이노 핀 2

CLK - 아두이노 핀 3

LOAD - 아두이노 핀 4 

 

아두이노 코드는 아래와 같습니다.

 

/* 
 *  2 Digitl 7 segment display PCB board with (2) 74HC595 shift register ICs
 *  Arduino Tutorial - www.Ardumotive.com
 *  Dev: Michalis Vasilakis // Date: 31/1/2018 // Ver:1.0
 */
#include <ShiftRegister74HC595.h>
// create shift register object (number of shift registers, data pin, clock pin, latch pin)
ShiftRegister74HC595 sr (2, 2, 3, 4); 

int number=99; // <--- Change it from 0 to 99

int value,digit1,digit2,digit3,digit4; 
uint8_t  numberB[] = {B11000000, //0
                      B11111001, //1 
                      B10100100, //2
                      B10110000, //3 
                      B10011001, //4
                      B10010010, //5
                      B10000011, //6
                      B11111000, //7
                      B10000000, //8
                      B10011000 //9
                     };
                        
void setup() {
  //Count from 0 to 'number' 
  countUp();
  //Count from 'number' to 0
  //countDown();  // <--- Comment countUp and uncomment countDown
  //Blink 4 times all on and all off.
  blink();  
}

void loop() {

}

void countUp(){
  for (int i = 0; i<=number; i++){
    //Split number to digits:
    digit2=i % 10 ;
    digit1=(i / 10) % 10 ;
    //Send them to 7 segment displays
    uint8_t numberToPrint[]= {numberB[digit2],numberB[digit1]};
    sr.setAll(numberToPrint); 
    //Reset them for next time
    digit1=0;
    digit2=0;
    delay(1000); // Repeat every 1 sec
  }
}

void countDown(){
  for (number; number>=0; number--){
    //Split number to digits:
    digit2=number % 10 ;
    digit1=(number / 10) % 10 ;
    //Send them to 7 segment displays
    uint8_t numberToPrint[]= {numberB[digit2],numberB[digit1]};
    sr.setAll(numberToPrint); 
    //Reset them for next time
    digit1=0;
    digit2=0;
    delay(1000); // Repeat every 1 sec
  }
}

//Blink
void blink(){
  for(int i = 0; i<4; i++){
    sr.setAllLow(); // set all pins Low (off)
    delay(1000);
    sr.setAllHigh(); // set all pins High (on)
    delay(1000);
  }
}

 

 

 

 

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^