Arduino를 이용하여 8개의 LED를 활용한 업다운 카운터 회로를 설계하는 방법을 살펴보겠습니다. 업카운터(0 → 7) 및 다운카운터(7 → 0) 방식으로 LED를 순차적으로 점등하며 숫자를 표현하는 방식입니다.
이 프로젝트는 디지털 카운팅 원리를 이해하는 데 유용하며, 다양한 전자회로 응용에도 적용될 수 있습니다.
설계 개요
💡 주요 개념
- LED 배열을 사용하여 카운팅 표현
- 업카운트(0 → 7) 및 다운카운트(7 → 0) 방식 구현
- 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);
}
코드 설명
- LED 설정
- pinLED 배열을 사용하여 8개의 LED를 관리합니다.
- setup() 함수에서 반복문을 사용하여 모든 LED 핀을 OUTPUT으로 설정합니다.
- 업카운트 구현 (LED 순차 점등)
- for 반복문을 사용하여 0번 LED부터 7번 LED까지 순서대로 켭니다.
- 각 LED를 HIGH로 설정하여 켠 후 delay(dTime)을 사용하여 점등 시간을 조절합니다.
- 다운카운트 구현 (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);
}
코드 설명
- LED 설정
- pinLED 배열을 사용하여 8개의 LED를 관리합니다.
- setup()에서 모든 LED 핀을 OUTPUT으로 설정합니다.
- 업카운트 기능 (이전 LED가 꺼지고 새로운 LED가 켜짐)
- k 값을 2씩 증가시키며 LED 2개를 동시에 점등합니다.
- 이전 LED가 꺼진 후 새로운 LED가 점등하는 방식으로 작동합니다.
- 다운카운트 기능 (역순으로 이전 LED가 꺼지고 다음 LED가 켜짐)
- k 값을 2씩 감소시키며 LED 2개를 동시에 점등합니다.
- 앞에서 점등된 LED가 꺼지면서 다음 LED가 켜집니다.
결론
이제 8개의 LED가 2개씩 이동하면서 앞의 LED가 꺼지는 방식으로 동작하게 됩니다. 이를 발전시켜 다양한 입력 방식(버튼, 센서)을 추가하면 더욱 다양한 응용이 가능합니다.
💡 응용 아이디어
- 버튼을 추가하여 속도 조절 기능 적용
- PWM을 활용하여 LED 밝기 변화를 줄 수 있음
- 7-세그먼트 디스플레이를 사용하여 숫자 카운트 표시
코드를 실행해 보고 원하는 동작이 나오는지 확인해 주세요! 🚀 추가적인 수정이 필요하다면 언제든지 알려 주세요. 😊