본문 바로가기
카테고리 없음

pinMode 함수 완전 이해하기

by AI 세상, 2025. 4. 19.

 

 

pinMode 함수 정말 이해하기

아두이노 코드를 작성하다 보면 꼭 등장하는 함수가 있어요. 바로 pinMode()입니다. 지난 시간에 배운 digitalWrite()digitalRead()를 사용하기 전에 핀의 역할을 먼저 정해주는 함수예요.

이번 글에서는 pinMode 함수가 정확히 무슨 일을 하는지, 왜 꼭 필요한지, 그리고 INPUT_PULLUP 모드까지 쉽게 설명해드릴게요!

pinMode 함수란?

pinMode()는 아두이노 보드의 디지털 핀의 모드(역할)를 설정하는 함수예요.

pinMode(핀번호, 모드);

이렇게 쓰면 해당 핀을 입력으로 쓸지, 출력으로 쓸지, 또는 입력 + 풀업 저항으로 쓸지 설정할 수 있어요.

모드 종류

  • OUTPUT : 출력용 (LED, 부저 등)
  • INPUT : 입력용 (버튼, 센서 등)
  • INPUT_PULLUP : 입력 + 내부 풀업 저항 사용

OUTPUT 모드 예제

int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT); // 13번 핀을 출력으로 설정
}

void loop() {
  digitalWrite(ledPin, HIGH); // LED 켜기
  delay(500);
  digitalWrite(ledPin, LOW);  // LED 끄기
  delay(500);
}

OUTPUT 모드로 설정하면 그 핀에서 전기를 보내거나 끊을 수 있어요. 주로 LED, 부저, 릴레이 등에 사용돼요.

INPUT 모드 예제

int buttonPin = 2;

void setup() {
  pinMode(buttonPin, INPUT); // 2번 핀을 입력으로 설정
}

void loop() {
  int value = digitalRead(buttonPin); // 버튼 상태 읽기
  Serial.println(value);
}

INPUT 모드에서는 핀에 연결된 버튼이나 센서의 상태를 읽을 수 있어요. 단, 이 모드에서는 외부에 풀다운 저항을 연결해 줘야 값이 정확하게 읽혀요.

INPUT_PULLUP 모드란?

아두이노는 내부에 풀업 저항을 내장하고 있어요. INPUT_PULLUP 모드를 사용하면 외부에 저항을 따로 달지 않아도 돼요!

int buttonPin = 2;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP); // 내부 풀업 저항 사용
}

void loop() {
  int state = digitalRead(buttonPin);

  if (state == LOW) {
    Serial.println("버튼 눌림");
  } else {
    Serial.println("버튼 안 눌림");
  }
}

중요: 이 모드에서는 버튼이 눌리면 LOW, 안 눌리면 HIGH가 되기 때문에 값이 반대로 나와요.

pinMode는 꼭 setup() 안에!

pinMode 설정은 보통 setup() 함수 안에 한 번만 해주면 돼요. loop 안에 매번 적을 필요는 없어요!

잘못된 예시

void loop() {
  pinMode(13, OUTPUT);  // 이렇게 loop에 쓰면 매번 다시 설정돼요!
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);
}

이렇게 사용해도 작동은 하지만 불필요하게 반복해서 설정하는 거라 비효율적이에요.

실습 아이디어

  • 버튼을 INPUT_PULLUP 모드로 설정하고 LED 제어하기
  • OUTPUT 핀 3개를 설정해 신호등 만들기
  • INPUT 핀 여러 개 설정해서 키패드 만들기

마무리하며

이제 pinMode 함수가 하는 일을 확실히 알게 되었죠? 아두이노 핀은 입출력을 자유롭게 바꿔서 쓸 수 있지만, 반드시 pinMode로 역할을 먼저 정해줘야 제대로 작동해요.

다음 시간에는 전기의 흐름과 아두이노 보드의 전원 구조에 대해 간단히 알아볼 거예요. 프로젝트를 더 잘 이해하는 데 큰 도움이 될 거예요!