반응형
🔘 아두이노 버튼 입력으로 LED 제어하기 — 디지털 입력 & 토글 제어 실습
지금까지 아두이노로 LED를 단순히 ON/OFF 하는 실습을 해보았습니다.
이번 3편에서는 **버튼을 눌렀을 때 LED의 상태가 바뀌는** 디지털 입력 제어를 실습합니다.
이 구조는 아두이노에서 **입력(버튼) → 조건 판단 → 출력(LED)** 흐름을 이해하는 가장 기초적인 예제이며, 다양한 센서와 사용자 인터페이스의 시작점이기도 합니다.
🧰 준비물
- 아두이노 UNO
- 브레드보드
- 푸시버튼 1개
- 220Ω 저항 1개 (LED용)
- 10kΩ 저항 1개 (풀다운용)
- LED 1개
- 점퍼 와이어
🔌 회로 연결
- D2 → 버튼 한쪽
- 버튼 다른 쪽 → 5V
- D2와 GND 사이에 10kΩ 저항 연결 (풀다운 저항)
- D8 → 220Ω → LED → GND
💻 코드 작성: 버튼 누를 때 LED 토글
int ledPin = 8; int buttonPin = 2; int ledState = LOW; int buttonState; int lastButtonState = LOW; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); Serial.begin(9600); } void loop() { buttonState = digitalRead(buttonPin); if (buttonState == HIGH && lastButtonState == LOW) { ledState = !ledState; digitalWrite(ledPin, ledState); delay(200); // 디바운싱용 딜레이 } lastButtonState = buttonState; }
이 코드는 버튼을 짧게 눌렀을 때마다 LED의 상태가 반전(toggle)되도록 동작합니다. 즉, 한 번 누르면 켜지고, 다시 누르면 꺼지는 구조입니다.
💡 디바운싱이란?
버튼을 누를 때 실제로는 수 ms 동안 진동이 생기며 입력이 여러 번 인식될 수 있습니다.
이런 현상을 막기 위해 delay(200);
같은 간단한 **디바운싱 처리**가 필요합니다.
✅ 핵심 개념 정리
- digitalRead(pin): 지정된 핀의 입력 상태 읽기
- 디바운싱: 버튼의 흔들림을 방지하기 위한 처리
- if 조건 + 상태 비교: 상태가 변할 때만 동작하도록 구현
📚 마무리
이번 실습을 통해 아두이노의 디지털 입력(GPIO)을 읽고, 그 입력에 따라 출력을 변경하는 토글 구조를 직접 구현해보았습니다.
이 구조는 스위치, 키패드, 터치 센서 등 다양한 입력 장치로 확장될 수 있습니다. 다음 편에서는 **가변저항(포텐셔미터)을 통해 아날로그 입력을 읽고 LED 밝기를 조절**하는 실습으로 넘어갑니다! 😊
반응형
'아두이노' 카테고리의 다른 글
버튼 2개로 LED 밝기 단계 조절하기 — PWM 제어 심화 실습 (0) | 2025.04.18 |
---|---|
아두이노 아날로그 입력으로 LED 밝기 조절하기 — 가변저항 + PWM 제어 (0) | 2025.04.18 |
아두이노 GPIO 제어: 외부 LED 회로 연결과 코드 실습 (0) | 2025.04.18 |
아두이노 입문자를 위한 첫 걸음: 기본 개념과 개발환경 소개 (0) | 2025.04.18 |
아두이노를 이용한 자동화된 식물 관리 시스템 (0) | 2025.03.31 |