2025. 2. 11. 13:38ㆍ프로그래밍/시스템
입력(센서, 버튼) vs 출력(LED, 모터) 개념
GPIO 핀은 기본적으로 입력(Input) 모드와 출력(Output) 모드로 설정된다.
각 모드는 하드웨어와의 연결 방식이 다르며, 입력은 센서나 버튼의 상태를 읽는 역할, 출력은 LED나 모터를 제어하는 역할을 한다.
📌 1. 입력 (Input)
GPIO를 입력 모드로 설정하면 외부 장치에서 신호를 받아들이는 역할을 한다.
이때, GPIO 핀은 0(LOW) 또는 1(HIGH)의 값을 감지할 수 있으며, 센서나 버튼과 같은 입력 장치의 상태를 읽을 때 사용된다.
✔ 입력 모드의 특징
✅ GPIO가 외부 신호(버튼, 센서 등)를 감지할 때 사용됨.
✅ HIGH(1) 또는 LOW(0) 값만 읽을 수 있음.
✅ 내부 풀업(Pull-up), 풀다운(Pull-down) 저항을 설정하여 안정적인 신호 감지가 가능함.
💡 입력 장치의 예시
✅ 버튼 스위치 → 버튼이 눌렸는지 감지 (HIGH 또는 LOW 상태)
✅ 적외선 센서 → 물체 감지 여부 확인
✅ 온습도 센서(DHT11 등) → 특정 신호를 받아 데이터 읽기
🔧 버튼 입력 감지 예제 (C++)
아래 코드는 GPIO 핀을 입력 모드로 설정하고, 버튼이 눌렸을 때 신호를 감지하는 코드이다.
#include <wiringPi.h>
#include <stdio.h>
#define BUTTON_PIN 2 // GPIO 2번 핀
int main() {
wiringPiSetup();
pinMode(BUTTON_PIN, INPUT); // GPIO 2번을 입력 모드로 설정
pullUpDnControl(BUTTON_PIN, PUD_UP); // 풀업 저항 설정 (기본 HIGH 유지)
while (1) {
int buttonState = digitalRead(BUTTON_PIN); // 버튼 상태 읽기
if (buttonState == LOW) { // 버튼이 눌리면 LOW
printf("버튼이 눌렸습니다!\n");
}
delay(100); // 0.1초 간격으로 확인
}
return 0;
}
🔹 동작 방식
- pinMode(2, INPUT); → GPIO 2번 핀을 입력 모드로 설정.
- pullUpDnControl(2, PUD_UP); → 풀업 저항을 활성화하여 버튼이 눌리지 않았을 때 HIGH로 유지.
- digitalRead(2); → 버튼이 눌리면 LOW(0), 떼면 HIGH(1) 감지.
- 버튼을 누를 때마다 "버튼이 눌렸습니다!" 메시지가 출력됨.
📌 2. 출력 (Output)
GPIO를 출력 모드로 설정하면 외부 장치(LED, 모터 등)에 신호를 보낼 수 있다.
GPIO 핀이 HIGH(1) 상태일 때 전압(3.3V 또는 5V)을 출력하고, LOW(0) 상태일 때 전압을 제거하여 동작을 제어한다.
✔ 출력 모드의 특징
✅ HIGH(1) → 전압 출력 (LED ON, 모터 작동)
✅ LOW(0) → 전압 제거 (LED OFF, 모터 정지)
✅ GPIO 핀을 통해 직접 전원을 공급할 수 있지만, 전류 제한이 있어 릴레이, 트랜지스터, 드라이버 사용이 필요할 수 있음.
💡 출력 장치의 예시
✅ LED → GPIO 신호로 ON/OFF 제어
✅ 모터 → GPIO 신호를 이용해 회전 또는 정지
✅ 릴레이 → GPIO 신호로 높은 전압(220V 등) 장비 ON/OFF
🔧 LED 제어 예제 (C++)
아래 코드는 GPIO 핀을 출력 모드로 설정하고, LED를 깜빡이게 하는 코드이다.
#include <wiringPi.h>
#include <stdio.h>
#define LED_PIN 3 // GPIO 3번 핀
int main() {
wiringPiSetup();
pinMode(LED_PIN, OUTPUT); // GPIO 3번 핀을 출력 모드로 설정
while (1) {
digitalWrite(LED_PIN, HIGH); // LED ON
printf("LED ON\n");
delay(1000); // 1초 대기
digitalWrite(LED_PIN, LOW); // LED OFF
printf("LED OFF\n");
delay(1000); // 1초 대기
}
return 0;
}
🔹 동작 방식
- pinMode(3, OUTPUT); → GPIO 3번 핀을 출력 모드로 설정.
- digitalWrite(3, HIGH); → GPIO 3번 핀에 전압을 인가(LED ON).
- delay(1000); → 1초 동안 대기.
- digitalWrite(3, LOW); → GPIO 3번 핀의 전압 제거(LED OFF).
- 1초 간격으로 LED가 깜빡이는 동작 수행.
📌 입력 vs 출력 비교
기능 | 입력 (Input) | 출력 (Output) |
역할 | 외부 신호 감지 | 외부 장치 제어 |
사용 예시 | 버튼, 센서(온도, 조도, 초음파 등) | LED, 모터, 릴레이 |
읽기/쓰기 | digitalRead(pin) 사용 | digitalWrite(pin, HIGH/LOW) 사용 |
초기 설정 | pinMode(pin, INPUT) | pinMode(pin, OUTPUT) |
결론
- 입력 모드 (Input Mode): 버튼, 센서의 데이터를 읽어 신호 감지.
- 출력 모드 (Output Mode): LED, 모터 등을 ON/OFF하는 제어 기능 수행.
- 디지털 입력/출력을 적절히 사용하면 다양한 임베디드 프로젝트를 구현할 수 있음. 🚀
'프로그래밍 > 시스템' 카테고리의 다른 글
임베디드 시스템 파일 시스템 (0) | 2025.02.21 |
---|---|
GPIO 기본 개념 - 3. 풀업 저항과 풀다운 저항 개념 (0) | 2025.02.11 |
GPIO 기본 개념 - 1. 디지털 신호와 아날로그 신호의 차이 (0) | 2025.02.11 |
GPIO 개요 - 3. GPIO가 사용되는 대표적인 플랫폼 (0) | 2025.02.11 |
GPIO 개요 - 2. GPIO의 주요 역할 및 활용 사례 (0) | 2025.02.11 |