아두이노

아두이노 - 7세그먼트

haniru 2026. 3. 26. 23:51

세그먼트 활용하기

const unsigned int led_a = 2;
const unsigned int led_b = 3;
const unsigned int led_c = 4;
const unsigned int led_d = 5;
const unsigned int led_e = 6;
const unsigned int led_f = 7;
const unsigned int led_g = 8;

void setup() {
  pinMode(led_a, OUTPUT);
  pinMode(led_b, OUTPUT);
  pinMode(led_c, OUTPUT);
  pinMode(led_d, OUTPUT);
  pinMode(led_e, OUTPUT);
  pinMode(led_f, OUTPUT);
  pinMode(led_g, OUTPUT);

  digitalWrite(led_a, HIGH);
  digitalWrite(led_b, HIGH);
  digitalWrite(led_c, HIGH);
  digitalWrite(led_d, HIGH);
  digitalWrite(led_e, HIGH);
  digitalWrite(led_f, HIGH);
  digitalWrite(led_g, HIGH);
}

void loop() {

}
const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };

void setup() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }

  for (int x=0; x<7; x++) {
    digitalWrite(led[x], HIGH);
  }
}

void loop() {

}

 

LED 켜고 끄기 반복

const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };

void setup() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void loop() {
  for (int x=0; x<7; x++) {
    digitalWrite(led[x], HIGH);
  }
  delay(500);

  for (int x=0; x<7; x++) {
    digitalWrite(led[x], LOW);
  }
  delay(500);

}

KakaoTalk_20260326_221911418.mp4
0.50MB

 

LED 차례대로 켜고 꺼보기 -> 주파수: 0.286Hz, 0.5초 간격으로 켜지고 꺼짐

delay를 50으로 설정하면 초당 2.86회 / 2.86Hz, delay를 5로하면 초당 28.6회 28.6Hz, delay를 1로하면 초당 143회

const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };

void setup() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void loop() {
  for (int x=0; x<7; x++) {
    for (int x=0; x<7; x++) {
      digitalWrite(led[x], LOW);
    }
    digitalWrite(led[x], HIGH);
    delay(500);
  }
}

KakaoTalk_20260326_222145607.mp4
2.71MB

 

함수로 만들기

const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };

void display_init() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void display_clear() {
  for (int x=0; x<7; x++) {
    digitalWrite(led[x], LOW);
  }
}

void setup() {
  display_init();
}

void loop() {
  for (int x=0; x<7; x++) {
    display_clear();
    digitalWrite(led[x], HIGH);
    delay(1);
  }
}
const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };
const unsigned int num_0[7] = { 1, 1, 1, 1, 1, 1, 0 };

void display_init() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void display_clear() {
  for (int x=0; x<7; x++) {
    digitalWrite(led[x], LOW);
  }
}

void display_0() {
  for(int x=0; x<7; x++) {
    digitalWrite(led[x], num_0[x]==1?HIGH:LOW);
  }
}

void setup() {
  display_init();
  display_clear();
  display_0();
}

void loop() {
}

 

0, 1숫자 표시하기

const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };
const unsigned int num_0[7] = { 1, 1, 1, 1, 1, 1, 0 };
const unsigned int num_1[7] = { 0, 1, 1, 0, 0, 0, 0 };

void display_init() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void display_clear() {
  for (int x=0; x<7; x++) {
    digitalWrite(led[x], LOW);
  }
}

void display_0() {
  for(int x=0; x<7; x++) {
    digitalWrite(led[x], num_0[x]==1?HIGH:LOW);
  }
}

void display_1() {
  for(int x=0; x<7; x++) {
    digitalWrite(led[x], num_1[x]==1?HIGH:LOW);
  }
}

void setup() {
  display_init();
}

void loop() {
  display_clear();
  display_0();
  delay(500);

  display_clear();
  display_1();
  delay(500);
}
const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };
const unsigned int num[2][7] = {
  { 1, 1, 1, 1, 1, 1, 0 },
  { 0, 1, 1, 0, 0, 0, 0 }
};

void display_init() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void display_clear() {
  for (int x=0; x<7; x++) {
    digitalWrite(led[x], LOW);
  }
}

void display_0() {
  for(int x=0; x<7; x++) {
    digitalWrite(led[x], num[0][x]==1?HIGH:LOW);
  }
}

void display_1() {
  for(int x=0; x<7; x++) {
    digitalWrite(led[x], num[1][x]==1?HIGH:LOW);
  }
}

void setup() {
  display_init();
}

void loop() {
  display_clear();
  display_0();
  delay(500);

  display_clear();
  display_1();
  delay(500);
}
const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };
const unsigned int num[2][7] = {
  { 1, 1, 1, 1, 1, 1, 0 },
  { 0, 1, 1, 0, 0, 0, 0 }
};

void display_init() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void display_clear() {
  for (int x=0; x<7; x++) {
    digitalWrite(led[x], LOW);
  }
}

void display_number(int n) {
  if (0<=n&&n<=1) {
    for(int x=0; x<7; x++) {
      digitalWrite(led[x], num[n][x]==1?HIGH:LOW);
    }
  }
}

void setup() {
  display_init();
}

void loop() {
  display_clear();
  display_number(0);
  delay(500);

  display_clear();
  display_number(1);
  delay(500);
}
const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };
const unsigned int num[2][7] = {
  { 1, 1, 1, 1, 1, 1, 0 },
  { 0, 1, 1, 0, 0, 0, 0 }
};

void display_init() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void display_clear() {
  for (int x=0; x<7; x++) {
    digitalWrite(led[x], LOW);
  }
}

void display_number(int n) {
  if (0<=n&&n<=1) {
    for(int x=0; x<7; x++) {
      digitalWrite(led[x], num[n][x]==1?HIGH:LOW);
    }
  }
}

void setup() {
  display_init();
}

void loop() {
  for (int n=0; n<=1; n++) {
    display_clear();
    display_number(n);
    delay(500);
  }
}

KakaoTalk_20260326_231304612.mp4
0.25MB

 

 

숫자표시 함수 일반화 하기

const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };
const unsigned int num[10][7] = {
  { 1, 1, 1, 1, 1, 1, 0 },
  { 0, 1, 1, 0, 0, 0, 0 },
  { 1, 1, 0, 1, 1, 0, 1 },
  { 1, 1, 1, 1, 0, 0, 1 },
  { 0, 1, 1, 0, 0, 1, 1 },
  { 1, 0, 1, 1, 0, 1, 1 },
  { 1, 0, 1, 1, 1, 1, 1 },
  { 1, 1, 1, 0, 0, 1, 0 },
  { 1, 1, 1, 1, 1, 1, 1 },
  { 1, 1, 1, 1, 0, 1, 1 },
};

void display_init() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void display_clear() {
  for (int x=0; x<7; x++) {
    digitalWrite(led[x], LOW);
  }
}

void display_number(int n) {
  if (0<=n&&n<=9) {
    for(int x=0; x<7; x++) {
      digitalWrite(led[x], num[n][x]==1?HIGH:LOW);
    }
  }
}

void setup() {
  display_init();
}

void loop() {
  for (int n=0; n<=9; n++) {
    display_clear();
    display_number(n);
    delay(500);
  }
}

KakaoTalk_20260326_232353008.mp4
1.85MB

 

시리얼 입력으로 숫자 표시하기

const unsigned int led[7] = { 2, 3, 4, 5, 6, 7, 8 };
const unsigned int num[10][7] = {
  { 1, 1, 1, 1, 1, 1, 0 },
  { 0, 1, 1, 0, 0, 0, 0 },
  { 1, 1, 0, 1, 1, 0, 1 },
  { 1, 1, 1, 1, 0, 0, 1 },
  { 0, 1, 1, 0, 0, 1, 1 },
  { 1, 0, 1, 1, 0, 1, 1 },
  { 1, 0, 1, 1, 1, 1, 1 },
  { 1, 1, 1, 0, 0, 1, 0 },
  { 1, 1, 1, 1, 1, 1, 1 },
  { 1, 1, 1, 1, 0, 1, 1 },
};

void display_init() {
  for (int x=0; x<7; x++) {
    pinMode(led[x], OUTPUT);
  }
}

void display_clear() {
  for (int x=0; x<7; x++) {
    digitalWrite(led[x], LOW);
  }
}

void display_number(int n) {
  if (0<=n&&n<=9) {
    for(int x=0; x<7; x++) {
      digitalWrite(led[x], num[n][x]==1?HIGH:LOW);
    }
  }
}

void setup() {
  Serial.begin(115200);
  display_init();
}

void loop() {
  if (Serial.available()) {
    char userInput = Serial.read();
    if ('0' <= userInput && userInput <= '9') {
      int num = userInput - '0';
      display_clear();
      display_number(num);
    }
  }
}