📗 기초 강좌메뉴
코딩하기 · 기초 강좌

기기 코딩 14 / 31

디지털 입출력: 켜기·끄기와 버튼

디지털은 '켜짐(HIGH)'과 '꺼짐(LOW)' 두 가지뿐이에요. LED를 켜고 끄는 건 출력, 버튼을 읽는 건 입력이에요.

전등 스위치처럼 켜짐과 꺼짐만 있는 것을 디지털이라고 해요. 보드의 핀은 내보낼 수도(출력), 읽을 수도(입력) 있어서, 먼저 어느 쪽으로 쓸지 정해요.

출력과 입력
pinMode(10, OUTPUT);← 10번 핀: 내보내기 (LED, 부저)
pinMode(2, INPUT_PULLUP);← 2번 핀: 읽기 (버튼). 보드 안의 저항을 함께 써요
digitalWrite(10, HIGH);← 켜기 (HIGH = 전기 보냄)
int pressed = digitalRead(2);← 버튼 상태 읽기 → HIGH 또는 LOW
if (pressed == LOW) { … }← INPUT_PULLUP에서는 누르면 LOW예요!

INPUT_PULLUP은 버튼을 안 눌렀을 때 핀을 HIGH로 붙잡아 주는 기능이에요. 버튼을 누르면 핀이 GND와 이어져 LOW가 돼요. 그래서 '누르면 LOW'로 거꾸로 생각해야 해요. 대신 저항을 따로 달 필요가 없어서 연결이 간단해요.

아쉬운 부탁

“pinMode(2, INPUT); → 버튼을 안 누르면 값이 제멋대로 바뀌어요 (떠 있는 상태)”

좋은 부탁

“pinMode(2, INPUT_PULLUP); → 안 누르면 HIGH, 누르면 LOW로 또렷해요”

버튼을 한 번 눌렀는데 여러 번 눌린 것처럼 될 때가 있어요. 버튼 속 금속이 '떨리기' 때문이에요. 눌린 다음 delay(50)으로 잠깐 기다리면 해결돼요.

💬 막히면 도우미에게 물어보세요

오류가 나면 오류 문구를 그대로 붙여 넣으면 더 정확해요. 예: “INPUT_PULLUP에서 버튼을 누르면 왜 LOW가 돼요?”