풀다운(Pull-down) 회로 – 버튼 누르면 LED 켜짐
회로 연결
- 버튼 한쪽 → 디지털 2번 핀
- 버튼 다른쪽 → GND
- 디지털 2번 핀 ↔ 10kΩ 저항 ↔ GND (풀다운 저항)
- LED +극(긴 다리) → 디지털 4번 핀
- LED -극(짧은 다리) → 330Ω 저항 → GND
작동 원리
- 버튼을 누르지 않으면 → GND 상태 → LOW
- 버튼을 누르면 → 5V 입력 → HIGH → LED 켜짐
코드
const int buttonPin = 2;
const int ledPin = 4;
int buttonState = 0;
void setup() {
pinMode(buttonPin, INPUT); // 풀다운 회로에서는 INPUT
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // 버튼 누르면 LED 켬
} else {
digitalWrite(ledPin, LOW); // 버튼 안 누르면 LED 끔
}
delay(100);
}
풀업(Pull-up) 회로 – 버튼 누르면 LED 켜짐
회로 연결
- 버튼 한쪽 → 디지털 2번 핀
- 버튼 다른쪽 → GND
- 풀업 저항은 내부에서 자동 연결됨 (외부 저항 불필요)
- LED +극 → 디지털 4번 핀
- LED -극 → 330Ω 저항 → GND
작동 원리
- 버튼을 누르지 않으면 → 내부 풀업 → HIGH
- 버튼을 누르면 → GND에 연결 → LOW → LED 켜짐
코드
const int buttonPin = 2;
const int ledPin = 4;
int buttonState = 0;
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // 내부 풀업 사용
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
if (buttonState == LOW) {
digitalWrite(ledPin, HIGH); // 버튼 누르면 LED 켬
} else {
digitalWrite(ledPin, LOW); // 버튼 안 누르면 LED 끔
}
delay(100);
}
참고
- 풀다운 회로에서는 버튼을 누르면 HIGH → 조건문에서 buttonState == HIGH
- 풀업 회로에서는 버튼을 누르면 LOW → 조건문에서 buttonState == LOW
- 풀업 회로에서 외부 저항이 필요 없는 이유이 덕분에 별도로 외부 저항(10kΩ 같은 것)을 연결하지 않아도,
버튼이 눌리지 않았을 때 입력 핀은 안정적으로 HIGH 상태를 유지할 수 있습니다. - 아두이노에서 pinMode(pin, INPUT_PULLUP)을 설정하면
해당 입력 핀에 **내부 풀업 저항(약 20~50kΩ)**이 자동으로 연결됩니다. - 풀다운 회로를 사용하려면 외부에 저항(보통 10kΩ)을 직접 연결해야 합니다.
아두이노는 내부 풀다운 저항을 제공하지 않기 때문이에요.
'아두이노' 카테고리의 다른 글
아두이노 서보모터 제어 - 라이브러리 없이 PWM 직접 만들기 (Tinkercad 한계 포함) (0) | 2025.04.22 |
---|---|
아두이노 버튼 풀업(Pull-up), 풀다운(Pull-down) 회로 예제 (0) | 2025.04.21 |
아두이노로 DC 모터 제어하기! L298N 모듈 완벽 가이드 (0) | 2025.04.18 |