???? - 3. 누를 것이 필요해! (내부풀업 사용)

 

보통은 스위치에 풀다운 저항을 붙여서 많이 사용하는데, 여기서는 귀차니즘에 굴복하라!는 일일과제 달성을 위하여 내부 풀업 저항을 이용한 방법을 확인해보겠습니다. 이 경우, 출력값이 버튼을 누르지 않았을 때 HIGH, 눌렀을 경우에 LOW로 들어오게 됩니다.

 

 

배선도

 

 

소스

void setup() {
  pinMode(4, INPUT_PULLUP);
}

void loop() {
  int buttonD4 = digitalRead(4);

  if (buttonD4 == LOW) {
    Serial.println("button pressed!");
  }
}

 

실행 결과

  • 위 소스를 테스트해보면 위에서 말한대로 입력이 들어오는 것을 확인할 수 있다.
  • 하지만 실사용의 경우에는 아래와 같이 previous 값 관리를 해야 버튼이 한번 눌릴 때 이벤트 처리가 여러번 되는 것을 방지할 수 있다.
void setup() {
  pinMode(4, INPUT_PULLUP);
}

int buttonD4Prev = HIGH;

void loop() {
  int buttonD4 = digitalRead(4);

  if (buttonD4Prev == HIGH && buttonD4 == LOW) {
    Serial.println("button pressed!");
  }
  buttonD4Prev = buttonD4;
}

 

,