아래 글은 보장할 수 없는 영어 실력으로 공식 문서를 읽고 작성한 것으로, 오류가 있을 수 있습니다. 또한 제조사마다 세부 설정이 다를 수 있습니다.
아두이노에서 디지털 핀은 세가지 모드로 설정할 수 있다.
INPUT
INPUT_PULLUP
OUTPUT
각각의 모드일 때 내부 저항이 어떻게 되는지에 대해 간단히 정리해보려고 한다.
INPUT
모드일 때pinMode()
로 따로 설정해주지 않았을 때도 기본적으로 핀은 input 모드로 설정되어 있다.INPUT
으로 선언되었을 때, 내부는 high-impedence state
로 설정된다. 임피던스는 저항 역할이라고 생각하면 되는데, 따라서 내부에 높은 저항을 걸어서 매우 적은 전류를 이용해 상태를 LOW에서 HIGH로 바꿀 수 있게 한다.따라서 실제 사용하지 않는 핀을 INPUT으로 선언할 경우, 주변의 노이즈로 인해 0, 1이 랜덤으로 출력될 수 있다.
추가로 입력값이 없는 경우를 아는 상태 (HIGH, LOW)로 바꿔야 할 수 있다. 기본 상태가 high-impedence
이기 때문에 입력이 없는 경우는 pullup, 혹으 pulldown 저항을 연결해주어야 하는데, 이 때 적당한 저항 값은 10K정도라고 한다.
2. INPUT_PULLUP
pinMode()
를 INPUT_PULLUP
로 설정해주면 아두이노 내부에 내장된 pullup 저항을 사용할 수 있다. 이렇게 하면 연결된 센서가 켜지면 (스위치의 경우 on) LOW, 센서가 꺼지면 HIGH로 인식한다. 이 때 내부 Pullup 저항 값은 보드마다 다르지만, 대부분 20k옴 ~ 50k옴 정도다.
추가로, 13번 핀은 buit-in LED와 연결되어 있기 때문에 내부 pull-up 저항을 사용하기 힘들다. 따라서 필요시 외부 pulldown 저항을 연결하는 것을 추천한다.
OUTPUT
OUTPUT
으로 설정하면 내부는 high-impedence
상태가 된다. 따라서 내부 저항이 작기 때문에 작은 전압으로 충분한 전류를 공급할 수 있게 된다. 기본적으로 최대 40mA의 전류를 출력할 수 있으니 적장한 저항이 필요하다.