TIL/Embedded
[임베디드] 디지털 입출력 예시
masacorgi
2025. 6. 10. 08:11
오늘은 이전에 배운 ADC(아날로그 입력) 값을 활용해서 디지털 출력 장치(LED, 릴레이, 부저 등)를 제어하는 실전 로직을 알아보는 날이다.
가장 기본이면서도 실무에 반드시 필요한 조건 제어의 첫 개념이라고 한다.
1. 개요: 아날로그 입력 → 디지털 출력
1.1 흐름도
[LM35 온도센서] → A0 → [아날로그값 → 온도 계산] → [온도 30도 이상이면 LED ON]
2. 구성 부품
- LM35 (온도센서, 10mV/°C)
- LED 또는 릴레이 모듈
- 아두이노 (UNO/Nano 등)
- A0, D2 핀 사용
3. 회로 연결
- LM35 센서:
- VCC → 5V
- GND → GND
- OUT → A0
- LED:
- (+) → D2 (Arduino 디지털 출력)
- (–) → 220Ω 저항 → GND
4. 코드 예제 (Arduino)
const int tempPin = A0; // LM35 연결 핀
const int ledPin = 2; // LED 출력 핀
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
int raw = analogRead(tempPin);
float voltage = raw * (5.0 / 1023.0);
float tempC = voltage * 100.0; // 10mV = 1°C
Serial.print("Temp: "); Serial.print(tempC); Serial.println(" °C");
if (tempC >= 30.0) {
digitalWrite(ledPin, HIGH); // 온도 30도 이상 → LED ON
} else {
digitalWrite(ledPin, LOW); // 이하 → OFF
}
delay(1000);
}
5. 포인트 정리
5.1 입력: analogRead()
- 0 ~ 1023 정수값
- 기준 전압에 따라 해석 달라짐
5.2 출력: digitalWrite()
- HIGH: 5V 출력 → LED ON
- LOW: 0V 출력 → OFF
6. 실제 시나리오 응용
- 온도 제어기: 30°C 이상이면 팬 작동
- 스마트 히터: 20°C 이하이면 릴레이 작동
- 습도 센서 + 경광등: 일정 습도 이하에서 경고등 점멸
7. 참고자료