아두이노

아두이노 버튼 입력으로 LED 제어하기 — 디지털 입력 & 토글 제어 실습

게임교수 2025. 4. 18. 07:18
반응형

🔘 아두이노 버튼 입력으로 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 밝기를 조절**하는 실습으로 넘어갑니다! 😊

반응형