가장 기본적인 주변장치다. 핀 하나를 출력(내가 전압을 만든다) 또는 입력(외부 전압을 읽는다) 으로 설정한다.
이 프로젝트에서 쓰이는 곳
입력 도어 스위치 · 윈도우 스위치 · 도어 개폐 감지
출력 H-브리지 게이트 · 릴레이 · 상태 LED
입력에는 풀업·풀다운이 필요하다
스위치가 안 눌린 상태에서 핀이 어디에도 연결되지 않으면 전압이 뜬다(floating). 주변 노이즈에 따라 0 과 1 을 오간다.
풀업 저항 평소 1, 눌리면 0 ← 스위치를 GND 로 연결
풀다운 저항 평소 0, 눌리면 1
MCU 내부에 풀업/풀다운이 있어 레지스터로 켜면 된다.
채터링을 걸러야 한다
기계식 스위치는 접점이 붙을 때 수 ms 동안 수십 번 튄다. 그대로 읽으면 한 번 누른 게 여러 번으로 잡힌다. 소프트웨어 디바운스(일정 시간 같은 값이 유지될 때만 인정)나 RC 필터가 필요하다.
윈도우 스위치가 이 문제에 직접 걸린다 — 채터링을 안 거르면 §6.2.1 의 멱등성 요구를 만족시켜도 요청이 여러 번 생성된다.