답변:
해당 구성에서 버튼이 연결되면 입력이 부동 이라고합니다 . 즉, 0 또는 1이 아닙니다. 버튼을 누르면지면에 연결되어 있으므로 확실히 0이지만, 눌리지 않으면, 우리는 핀의 가치를 모른다.
버튼을 누르지 않을 때 신호를 로직 1로 끌어 올리려면 "풀업"저항을 포함해야합니다.
이것이 의미하는 것은 버튼을 누르지 않을 때 Arduino가 로직 1을 읽습니다. 버튼을 누르면 전류가 저항을 통해 접지로 흐르고 Arduino가 로직 0을 읽습니다.
Arduino에는 내부 풀업 저항도 포함되어 있으므로 회로에 추가 구성 요소를 추가하지 않아도됩니다. 이것을 사용하는 몇 가지 방법이 있습니다.
예전처럼 이렇게해야했습니다 :
pinMode(pin, INPUT); // set pin to input
digitalWrite(pin, HIGH); // turn on pullup resistors
이제 한 줄로 간단하게 수행 할 수 있습니다.
pinMode(pin, INPUT_PULLUP);
이를 통해 해당 핀에서 20k 풀업 저항을 사용할 수 있습니다. 버튼을 누르지 않아도 입력이 더 이상 유동하지 않습니다.
참고 : 이것은 다른 쪽 끝이 접지에 연결된 경우에만 작동합니다.