Menu
CoddyTech

내부 풀업

Coddy Arduino 여정의 입력 섹션에 포함된 레슨. 22개 중 3번째.

Read a Button 이후로 INPUT_PULLUP을 사용했습니다. 이 설정은 보드 내부의 20k~50k옴 저항을 핀과 5V 사이에 연결합니다. 이전 수업의 풀다운을 반대로 한 것이며, 추가 부품은 필요하지 않습니다. 버튼은 핀을 GND에만 연결합니다.

문제는 논리가 뒤집혀 있다는 것입니다. 버튼을 누르지 않으면 HIGH를 읽고, 누르면 LOW를 읽습니다. 스케치 곳곳에 있는 == LOW는 쉽게 반대로 이해할 수 있습니다. digitalRead(2) == LOW와 같은 비교식 자체는 true 또는 false이며, bool은 true 또는 false를 담는 변수입니다. 의미를 나타내는 이름으로 저장하세요.

bool pressed = digitalRead(2) == LOW;

if (pressed) {
  // 버튼이 눌려 있다
}

이제부터 코드를 올바른 방향으로 읽을 수 있습니다. bool을 출력하면 true는 1로, false는 0으로 표시됩니다.

challenge icon

챌린지

쉬움

버튼은 핀 2를 GND에 연결하고, LED는 핀 13에 있습니다:

  • 핀 2를 INPUT_PULLUP으로 설정합니다
  • digitalRead(buttonPin) == LOW를 pressed라는 bool 변수에 저장합니다
  • pressed를 출력하고, 값이 true인 동안 LED를 켠 다음 100 ms 기다립니다

버튼을 누르고 있는 동안에는 Check가 1을, 버튼을 놓으면 0을 예상합니다. Run을 누르고 버튼을 누른 상태로 유지한 다음 Check를 누르세요.

직접 해보기

const int buttonPin = 2;
const int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  // 버튼 핀의 풀업을 활성화하세요
}

void loop() {
  // bool pressed = ...
  // 값을 출력하고, true인 동안 LED를 켠 다음 100 ms 기다리세요
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

입력의 모든 레슨

직접 연습해 보세요: Arduino 플레이그라운드