[아두이노] 디지털 입출력 (풀다운)
아두이노 Digital I/O
아두이노의 디지털 입력을 받아서 LED를 구동시켜 보겠습니다.
실습 하드웨어 구성은 아래와 같습니다.
- 아두이노 우노 보드
- 스위치
- 10kΩ 저항
- 220Ω 저항
- LED
우선 코드는 아래와 같습니다.
int pushButton = 2; //스위치 입력핀
int led = 8; //LED 출력핀
void setup() {
pinMode(pushButton, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
int buttonState = digitalRead(pushButton); //스위치 상태 읽기
if (buttonState) {
digitalWrite(led, HIGH); //스위치가 눌렸으면 LED 켜기
} else {
digitalWrite(led, LOW); // LED 끄기
}
delay(30); //스위치 상태 안정화를 위한 딜레이
}
동작결과는 아래와 같습니다.
회로를 보면 아두이노의 5V핀에서 나온 선이 스위치를 거쳐 2번 핀으로 연결됨과 동시에, 10kΩ 저항을 거쳐 GND로 연결됨을 알 수 있습니다. 스위치가 ON되면 5V 전압의 전류는 2번 입력핀으로 흐르게 되며, 스위치가 OFF되면 2번핀에 있던 전자들이 10kΩ=>GND 라인을 통해 열로 소비되면서 2번핀의 상태를 0V로 만들게 됩니다. 이렇게 스위치가 OFF된 경우 0V로 만들기 위해 사용하는 저항을 풀다운(pull-down) 저항이라고 합니다. 또는 반대로 스위치가 OFF된 경우 5V로 유지시키는 방법도 있으며 풀업(pull-up)이라고 하며 여기서는 다루지 않습니다.
위 예에서 풀다운 저항을 사용하지 않으면, 스위치를 ON한 뒤에 OFF 하는 경우 ON-OFF가 불확실해지는 상태가 되고 결과적으로 스위치가 OFF임에도 발광이 될 수 있습니다. 이러한 경우 스위치와 연결된 2번 핀이 플로팅(floating) 상태라 합니다.
끝.
댓글
댓글 쓰기