GPIO 프로그래밍 개요 - 4. GPIO 핀 모드 설정 (INPUT, OUTPUT)

2025. 2. 25. 19:49프로그래밍/시스템

4. GPIO 핀 모드 설정 (INPUT, OUTPUT)

GPIO 핀은 입력(Input) 모드 또는 출력(Output) 모드로 설정할 수 있으며, 이 설정에 따라 동작 방식이 달라진다.
입력 모드는 센서나 버튼 등 외부 장치의 상태를 읽을 때 사용되며, 출력 모드는 LED, 모터 등의 장치를 제어할 때 사용된다.

또한, 버튼 입력의 신뢰성을 높이기 위해 풀업 저항(Pull-up Resistor)풀다운 저항(Pull-down Resistor)을 설정할 수 있다.


📌 1. 입력 모드 (Input Mode)

입력 모드는 GPIO가 센서, 버튼 등의 신호를 읽을 때 사용되는 모드이다.
이를 설정하면 GPIO 핀이 HIGH(1) 또는 LOW(0) 값을 읽을 수 있게 된다.

✔ 입력 모드의 특징

외부 신호(센서, 버튼 등)를 감지하는 역할
✅ digitalRead(pin)을 사용하여 HIGH 또는 LOW 값을 읽음
✅ 외부 회로의 상태를 확인할 때 필요

🔧 입력 모드 설정 (버튼 입력 감지)

pinMode(2, INPUT);  // GPIO 2번을 입력 모드로 설정
int buttonState = digitalRead(2);  // 버튼 상태 읽기

버튼이 눌렸는지(LOW) 또는 눌리지 않았는지(HIGH) 감지 가능
센서의 값도 같은 방식으로 읽을 수 있음


📌 2. 출력 모드 (Output Mode)

출력 모드는 GPIO가 LED, 모터 등의 장치를 제어할 때 사용되는 모드이다.
GPIO 핀을 HIGH(1) 또는 LOW(0) 상태로 설정하여 전압을 인가하거나 제거할 수 있다.

✔ 출력 모드의 특징

✅ digitalWrite(pin, HIGH); → 전압 출력 (LED ON, 모터 동작)
✅ digitalWrite(pin, LOW); → 전압 제거 (LED OFF, 모터 정지)
✅ GPIO를 사용하여 직접적인 장치 제어 가능

🔧 출력 모드 설정 (LED 제어)

pinMode(3, OUTPUT);  // GPIO 3번을 출력 모드로 설정
digitalWrite(3, HIGH);  // LED ON

GPIO 핀에 HIGH(1)를 설정하면 LED가 켜짐
LOW(0) 값을 설정하면 LED가 꺼짐


📌 3. 입력 + 풀업 저항 설정 (INPUT_PULLUP)

버튼이 눌리지 않았을 때 기본적으로 HIGH(1) 상태를 유지하도록 설정하는 방식이다.
내장 풀업 저항을 활성화하면 별도의 외부 저항 없이 버튼 신호를 안정적으로 감지할 수 있다.

✔ 풀업 저항(Pull-up Resistor)의 특징

✅ 기본 상태가 HIGH(1)
✅ 버튼이 눌리면 LOW(0) 상태로 변함
✅ 외부 저항 없이 소프트웨어적으로 설정 가능

🔧 풀업 저항 활성화 (버튼 입력 감지)

pinMode(2, INPUT_PULLUP);  // 풀업 저항 활성화

버튼이 눌리지 않으면 HIGH(1), 눌리면 LOW(0) 값이 읽힘
풀업 저항을 사용하면 회로에서 부유 상태(Floating)를 방지 가능


📌 4. 입력 + 풀다운 저항 설정

버튼이 눌리지 않았을 때 기본적으로 LOW(0) 상태를 유지하도록 설정하는 방식이다.
이는 INPUT_PULLUP과 반대 개념으로, 버튼이 눌리면 HIGH(1) 상태로 변한다.

✔ 풀다운 저항(Pull-down Resistor)의 특징

✅ 기본 상태가 LOW(0)
✅ 버튼이 눌리면 HIGH(1) 상태로 변함
✅ 회로에 따라 외부 풀다운 저항(10kΩ 등)을 추가할 수도 있음

🔧 풀다운 저항 활성화 (버튼 입력 감지)

pinMode(2, INPUT);
pullUpDnControl(2, PUD_DOWN);  // 풀다운 저항 활성화

버튼이 눌리지 않으면 LOW(0), 눌리면 HIGH(1) 값이 읽힘
센서 또는 특정 회로에서 기본 LOW 상태 유지가 필요할 때 사용


📌 GPIO 핀 모드 설정 비교

설정 모드 역할  기본 상태 버튼이 눌리면 사용 예시
입력 (INPUT) 외부 신호 감지 Floating (불안정) 신호 변화 감지 센서, 버튼 입력
출력 (OUTPUT) 외부 장치 제어 N/A HIGH(ON), LOW(OFF) LED, 모터 제어
입력 + 풀업 (INPUT_PULLUP) 안정적인 HIGH 유지 HIGH(1) LOW(0) 버튼, I2C 통신
입력 + 풀다운 (INPUT + PUD_DOWN) 안정적인 LOW 유지 LOW(0) HIGH(1) 일부 센서 입력

센서, 버튼 입력 감지에는 INPUT 모드 사용
LED, 모터 제어에는 OUTPUT 모드 사용
버튼 입력 신뢰성을 높이려면 풀업/풀다운 저항 설정을 활용


📌 결론

  • GPIO 핀은 입력(INPUT) 또는 출력(OUTPUT) 모드로 설정 가능하며,
    • 입력 모드는 센서, 버튼 등의 신호를 읽을 때 사용됨.
    • 출력 모드는 LED, 모터 등의 장치를 제어할 때 사용됨.
  • 버튼 입력의 안정성을 위해 풀업 저항(PULLUP) 또는 풀다운 저항(PULLDOWN)을 설정할 수 있음.
  • GPIO 핀을 올바르게 설정하면 임베디드 시스템, IoT, 로봇 등의 다양한 프로젝트에서 활용 가능. 🚀