버튼으로 LED 켜고 끄기 실습
지금까지는 LED를 단순히 켜고 끄거나 깜빡이게 만들었죠? 이번 시간에는 입력 장치인 버튼을 사용해서 사용자의 동작에 따라 LED가 반응하도록 만들어볼 거예요.
이 실습을 통해 digitalRead() 함수를 배우고, 입력을 감지해서 출력으로 연결하는 아두이노의 기본 구조를 익히게 될 거예요.
실습 목표
- 버튼을 눌렀을 때 LED가 켜지게 만들기
- 버튼에서 손을 떼면 LED가 꺼지게 만들기
- 입력(INPUT)과 출력(OUTPUT)의 관계 이해
준비물
- 아두이노 우노 보드
- USB 케이블
- 브레드보드
- LED 1개
- 저항 220Ω 또는 330Ω (LED용)
- 푸시 버튼 1개
- 저항 10kΩ (풀다운 저항용)
- 점퍼선 몇 개
회로 연결 방법
- LED의 긴 다리(양극)를 저항을 거쳐 아두이노 8번 핀에 연결
- LED의 짧은 다리(음극)는 GND로 연결
- 버튼의 한쪽 다리를 아두이노 2번 핀에 연결
- 같은 쪽 다리에 10kΩ 저항을 연결하여 GND로 연결 (풀다운 저항)
- 버튼의 다른 다리는 5V 핀에 연결
※ 풀다운 저항은 버튼이 눌리지 않았을 때 불필요한 신호가 들어오는 것을 막아주는 역할을 해요.
코드 작성하기
int ledPin = 8;
int buttonPin = 2;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT); // LED 출력
pinMode(buttonPin, INPUT); // 버튼 입력
}
void loop() {
buttonState = digitalRead(buttonPin); // 버튼 상태 읽기
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // 버튼 눌림 → LED 켜기
} else {
digitalWrite(ledPin, LOW); // 버튼 안 눌림 → LED 끄기
}
}
코드 설명
pinMode(buttonPin, INPUT);
: 버튼은 입력 장치예요.digitalRead()
: 버튼이 눌렸는지 감지해요.if문
: 버튼 상태에 따라 LED ON/OFF 제어
작동 원리
버튼을 누르면 아두이노 2번 핀에 HIGH(5V)가 들어오고, 손을 떼면 LOW(0V)가 들어와요. 이 값을 감지해서 LED를 켜거나 끄는 거예요.
실습 중 흔한 실수
- 버튼에 풀다운 저항을 연결하지 않음 → 불안정한 신호
- LED 방향 반대로 연결 → 안 켜짐
- 핀 번호 코드와 회로 연결이 일치하지 않음
응용 아이디어
- 버튼을 누를 때마다 LED 상태를 바꾸도록 만들기 (토글 기능)
- 두 개의 버튼으로 서로 다른 색 LED를 켜기
- 버튼을 눌렀을 때 부저도 함께 울리게 하기
마무리하며
이번 실습에서는 입력 장치인 버튼과 출력 장치인 LED를 연결해서 입력 → 조건 판단 → 출력이라는 기본 흐름을 이해했어요. 이 구조는 앞으로 센서, 모터, 디스플레이 등에도 똑같이 적용돼요!
다음 시간에는 버튼을 눌렀을 때 LED가 잠깐 깜빡이고 꺼지게 만드는 실습을 해볼 거예요. 입력에 따른 다양한 반응을 만드는 재미있는 실습이 될 거예요!