최신 Arduino에서는 pinMode를 세 가지 상태 중 하나로 설정할 수 있습니다. OUTPUT
, INPUT
및 INPUT_PULLUP
.
이 페이지 내용 :
Arduino의 Atmega 칩에는 액세스 할 수있는 내부 풀업 저항 (내부적으로 전원에 연결되는 저항)이 있습니다. 외부 풀다운 저항 대신 이러한 저항을 사용하려면 pinMode ()에서 INPUT_PULLUP 인수를 사용할 수 있습니다. 이렇게하면 동작이 효과적으로 반전됩니다. 여기서 HIGH는 센서가 꺼져 있고 LOW는 센서가 켜져 있음을 의미합니다.
나는 오히려 동작을 반전시키는 것이 확실합니다. 하지만 그것이하는 유일한 일은 아닙니다.
INPUT_PULLUP
는 무엇을합니까? INPUT
와 다른 점은 무엇이며 어떤 것을 사용할지 어떻게 결정하나요?
댓글
- INPUT_PULLUP은 IDE 1.0.1에 추가되었습니다. 사용하는 Arduino 보드와는 무관하며 모두 PULLUP을 지원합니다.
Answer
기본값은 INPUT
는 핀을 INPUT
로 설정합니다. 핀이 완전히 분리 된 경우 무작위로 HIGH
및 LOW
를 읽습니다. + 5V 또는 0V에 연결하면 분명히 HIGH
또는 LOW
로 표시됩니다.
Arduino 내부의 Atmega 칩에는 약 20k ohm 값의 내부 풀업 저항이 있습니다. (자세한 내용은 DigitalPins 문서 참조)이 저항은 INPUT_PULLUP
를 사용하여 내부적으로 선택적으로 연결할 수 있습니다. 이것은 기능적으로 (및 전기적으로) 핀과 + 5V 사이에 ~ 20k ohm 저항을 연결하는 것과 동일하며, 유일한 차이점은 외부 구성 요소가 필요하지 않으며 프로그램 실행 중에 소프트웨어에서 켜고 끌 수 있다는 것입니다.
그러면 왜 풀다운이 아닌 풀업입니까? 몇 가지 이유가있을 수 있지만, 버튼이나 스위치 또는 “정상적으로 열려있는”항목을 배선 할 때 접지에 연결하기 만하면되며 + 5V를 출력 할 필요가 없습니다. 대부분의 보드는 어쨌든 차폐를 위해 큰 그라운드 타설로 설계 되었기 때문에 그라운드에 묶는 것이 실질적인 이유입니다.
ARM 칩과 같은 더 많은 기능을 갖춘 IC에는 풀업과 풀다운이 모두 있지만 8 비트 AVR 라인에는 풀만 제공됩니다. -ups. HIGH
는 “open”이고 LOW
는 “closed”임을 기억해야합니다.
설명
- Upvote. 참고로 문서에 따르면 내부 풀업은 20K이며 50K와 크게 다르지 않습니다. arduino.cc/en/Tutorial/DigitalPins
답변
이전 1.0.1까지 digitalWrite()
를 사용하여 풀업을 켤 수 있습니다. 그래도 가능합니다.
코드 :
이것은 INPUT_PULLUP
가 당연히 풀업 저항을 켜기 때문에 중요한 차이점입니다. 그러나 덜 분명한 것은 1.0.1부터 INPUT
를 호출하기 만하면 풀업이 강제로 꺼진다는 것입니다. (이전에는 풀업 상태가 동일하게 유지되었습니다).
풀업이 있거나없는 핀이 어떻게 작동하는지 확인하려면 다음 동영상을 시청하세요.
오실로스코프의 플로팅 핀 : http://www.youtube.com/watch?v=dBIBFLYCjMM
풀업 활성화 : http://www.youtube.com/watch?v=SAIw7LLVl-U
풀업에 대한 전체 자습서 비디오 (INPUT_PULLUP이 Arduino 라이브러리에 추가되기 전에 만들었습니다) : http://www.youtube.com/watch?&v=jJnD6LdGmUo
댓글
- 매우 영리합니다. 이 글을 써 주셔서 감사합니다. 찬성.