[Arduino] 10.7-Segment




7-Segment



7 세그먼트 표시 장치는 8개의 발광 다이오드를 이용하여 숫자나 간단한 문자를 표시하기 위해 만들어진 출력 장치의 일종으로 숫자 출력을 위해 주로 사용됩니다! 7 세그먼트 표시장치는 8개의 요소들을 개별적으로 제어해야 하므로 8개의 입출력 핀이 필요합니다~!


image




image




제가 가지고 있는 7 세그먼트는 공통음극 방식이기에 저항을 (-)에 연결하고, GND에 연결했습니다!

0부터 9까지 출력을 해보겠습니다!


int pins[8] = {2, 3, 4, 5, 6, 7, 8, 9};
int digits[10][7] = 
{
  {1,1,1,1,1,1,0},  // 0
  {0,1,1,0,0,0,0},  // 1
  {1,1,0,1,1,0,1},  // 2
  {1,1,1,1,0,0,1},  // 3
  {0,1,1,0,0,1,1},  // 4
  {1,0,1,1,0,1,1},  // 5
  {1,0,1,1,1,1,1},  // 6
  {1,1,1,0,0,1,0},  // 7
  {1,1,1,1,1,1,1},  // 8
  {1,1,1,1,0,1,1},  // 9
};

void setup(){
  for(int i = 0; i < 8; i++){
    pinMode(pins[i], OUTPUT);
  }
}

void loop(){
    for(int num = 0; num <= 9; num++){
      segment(num);
      delay(1000);
    }
}

void segment(int num){
  for(int i = 0; i < 7; i++){
    digitalWrite(pins[i], digits[num][i]);
  }
}







이번엔 버튼을 사용해서 수를 증가시키고 감소시키고 해보겠습니다!


int pins[8] = {2, 3, 4, 5, 6, 7, 8, 9};
int btn1 = 10;
int btn2 = 11;
int segNum = 0;
int digits[10][7] = 
{
  {1,1,1,1,1,1,0},  // 0
  {0,1,1,0,0,0,0},  // 1
  {1,1,0,1,1,0,1},  // 2
  {1,1,1,1,0,0,1},  // 3
  {0,1,1,0,0,1,1},  // 4
  {1,0,1,1,0,1,1},  // 5
  {1,0,1,1,1,1,1},  // 6
  {1,1,1,0,0,1,0},  // 7
  {1,1,1,1,1,1,1},  // 8
  {1,1,1,1,0,1,1},  // 9
};

void setup(){
  for(int i = 0; i < 8; i++){
    pinMode(pins[i], OUTPUT);
  }
  pinMode(btn1, INPUT);
  pinMode(btn2, INPUT);
}

void loop(){
    int value1 = digitalRead(btn1);
    int value2 = digitalRead(btn2);
    segment(segNum);
    if(value1 == 1){
      segNum--;
      if(segNum < 0){
        segNum = 9;
      }
    }
    if(value2 == 1){
      segNum++;
      if(segNum > 9){
        segNum = 0;
      }
    }
    delay(200);
}

void segment(int num){
  for(int i = 0; i < 7; i++){
    digitalWrite(pins[i], digits[num][i]);
  }
}