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, 로봇 등의 다양한 프로젝트에서 활용 가능. 🚀
'프로그래밍 > 시스템' 카테고리의 다른 글
U-Boot 포팅 (1. U-Boot 개요 및 기본 개념 / U-Boot의 구조) (0) | 2025.02.26 |
---|---|
U-Boot 포팅 (1. U-Boot 개요 및 기본 개념 / U-Boot란?) (0) | 2025.02.26 |
GPIO 프로그래밍 개요 - 3. 라이브러리 활용 (wiringPi, pigpio 등) (0) | 2025.02.25 |
GPIO 프로그래밍 개요 - 2. 직접 제어 방식 (sysfs 인터페이스 활용) (0) | 2025.02.25 |
GPIO 프로그래밍 개요 - 1. GPIO 접근 방식 개요 (0) | 2025.02.25 |