본문 바로가기
카테고리 없음

Arduino를 활용한 8개 LED 업다운 카운터 회로 설계개요

by 모빌리티키즈 2025. 4. 29.
728x90
반응형

 

Arduino를 이용하여 8개의 LED를 활용한 업다운 카운터 회로를 설계하는 방법을 살펴보겠습니다. 업카운터(0 → 7) 및 다운카운터(7 → 0) 방식으로 LED를 순차적으로 점등하며 숫자를 표현하는 방식입니다.

이 프로젝트는 디지털 카운팅 원리를 이해하는 데 유용하며, 다양한 전자회로 응용에도 적용될 수 있습니다.

설계 개요

💡 주요 개념

  1. LED 배열을 사용하여 카운팅 표현
  2. 업카운트(0 → 7) 및 다운카운트(7 → 0) 방식 구현
  3. Arduino를 활용하여 순차적으로 점등/소등 제어

회로 설계

✅ 필요한 부품

  • Arduino Uno
  • LED 8개
  • 저항(각 LED에 220Ω)
  • 브레드보드 및 점퍼 와이어

🔧 회로 연결 각 LED는 Arduino의 디지털 핀(2~9번)에 연결되며, 저항을 사용하여 적절한 전류를 공급합니다.

코드 구현

아래 코드는 업다운 카운터 기능을 수행합니다.

 

 

int pinLED[8] = {2, 3, 4, 5, 6, 7, 8, 9};  
int k;  
int dTime = 500;  // 딜레이 타임  

void setup() {  
  for (k = 0; k < 8; k++) {  
    pinMode(pinLED[k], OUTPUT);  
  }  
}  

void loop() {  
  // 업카운트 (0 → 7)  
  for (k = 0; k < 8; k++) {  
    digitalWrite(pinLED[k], HIGH);  
    delay(dTime);  
  }  
  delay(dTime);  

  // 다운카운트 (7 → 0)  
  for (k = 7; k >= 0; k--) {  
    digitalWrite(pinLED[k], LOW);  
    delay(dTime);  
  }  
  delay(dTime);  
}

코드 설명

  1. LED 설정
    • pinLED 배열을 사용하여 8개의 LED를 관리합니다.
    • setup() 함수에서 반복문을 사용하여 모든 LED 핀을 OUTPUT으로 설정합니다.
  2. 업카운트 구현 (LED 순차 점등)
    • for 반복문을 사용하여 0번 LED부터 7번 LED까지 순서대로 켭니다.
    • 각 LED를 HIGH로 설정하여 켠 후 delay(dTime)을 사용하여 점등 시간을 조절합니다.
  3. 다운카운트 구현 (LED 순차 소등)
    • for 반복문을 사용하여 7번 LED부터 0번 LED까지 순서대로 끕니다.
    • 각 LED를 LOW로 설정하여 끈 후 delay(dTime)을 적용합니다.

결론

이 회로와 코드를 활용하면 Arduino를 이용해 간단한 업다운 카운터 기능을 구현할 수 있습니다. 이를 발전시켜 버튼 입력을 추가하면 특정 조건에서 카운팅을 변경하는 방식으로 더욱 확장할 수도 있습니다.

💡 응용 아이디어

  • 버튼을 추가하여 수동으로 카운트 업/다운 기능 구현
  • 7-세그먼트 디스플레이를 사용하여 숫자 카운트 표시

이제 직접 실행해 보고 원하는 동작이 나오는지 확인해 보세요! 🚀 궁금한 점이나 추가 기능이 필요하다면 언제든지 문의 주세요. 😊

 

8개의 LED가 2개씩 이동하면서 앞에 있던 LED가 꺼지는 방식으로 동작하도록 수정되었습니다. 즉, 기존 LED가 꺼진 후 다음 LED가 점등하는 형태의 업다운 카운터입니다.

 

int pinLED[8] = {2, 3, 4, 5, 6, 7, 8, 9};  
int dTime = 500;  // 딜레이 시간  

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

void loop() {  
  // 업카운트 (2개씩 이동하면서 앞 LED가 꺼짐)  
  for (int k = 0; k < 7; k += 2) {  
    if (k > 0) {  
      digitalWrite(pinLED[k - 2], LOW);  
      digitalWrite(pinLED[k - 1], LOW);  
    }  
    digitalWrite(pinLED[k], HIGH);  
    digitalWrite(pinLED[k + 1], HIGH);  
    delay(dTime);  
  }  

  delay(dTime);

  // 다운카운트 (역순으로 2개씩 이동하면서 앞 LED가 꺼짐)  
  for (int k = 6; k >= 0; k -= 2) {  
    digitalWrite(pinLED[k + 2], LOW);  
    digitalWrite(pinLED[k + 1], LOW);  
    digitalWrite(pinLED[k], HIGH);  
    digitalWrite(pinLED[k - 1], HIGH);  
    delay(dTime);  
  }  

  delay(dTime);  
}

코드 설명

  1. LED 설정
    • pinLED 배열을 사용하여 8개의 LED를 관리합니다.
    • setup()에서 모든 LED 핀을 OUTPUT으로 설정합니다.
  2. 업카운트 기능 (이전 LED가 꺼지고 새로운 LED가 켜짐)
    • k 값을 2씩 증가시키며 LED 2개를 동시에 점등합니다.
    • 이전 LED가 꺼진 후 새로운 LED가 점등하는 방식으로 작동합니다.
  3. 다운카운트 기능 (역순으로 이전 LED가 꺼지고 다음 LED가 켜짐)
    • k 값을 2씩 감소시키며 LED 2개를 동시에 점등합니다.
    • 앞에서 점등된 LED가 꺼지면서 다음 LED가 켜집니다.

결론

이제 8개의 LED가 2개씩 이동하면서 앞의 LED가 꺼지는 방식으로 동작하게 됩니다. 이를 발전시켜 다양한 입력 방식(버튼, 센서)을 추가하면 더욱 다양한 응용이 가능합니다.

💡 응용 아이디어

  • 버튼을 추가하여 속도 조절 기능 적용
  • PWM을 활용하여 LED 밝기 변화를 줄 수 있음
  • 7-세그먼트 디스플레이를 사용하여 숫자 카운트 표시

코드를 실행해 보고 원하는 동작이 나오는지 확인해 주세요! 🚀 추가적인 수정이 필요하다면 언제든지 알려 주세요. 😊

728x90
반응형