반응형
아두이노 통합 프로젝트 완성 – 버튼으로 LCD 메뉴 전환 + 센서 제어 시스템 만들기
지금까지 배운 모든 아두이노 기술을 하나로!
이번 글에서는 아두이노 기반으로 LCD 메뉴를 전환하고, 센서를 선택 제어하는 종합 프로젝트를 소개합니다.
I2C LCD를 이용해 메뉴를 출력하고, 버튼으로 항목을 전환하면서 DHT11 온습도 센서, 초음파 거리 센서, 서보모터, 부저 등을 선택적으로 동작시킵니다.
📦 구성 요소
- 아두이노 UNO
- I2C LCD (1602)
- 버튼 1~2개 (입력용)
- DHT11 온습도 센서
- HC-SR04 초음파 센서
- SG90 서보모터
- 피에조 부저
📺 메뉴 설계 구조
LCD에 표시되는 메뉴 항목은 다음과 같이 구성합니다:
1. 온습도 보기
2. 거리 측정
3. 서보 제어
4. 알람 테스트
💡 기본 회로 구성 요약
- 버튼 1: 메뉴 전환
- LCD: I2C (A4-SDA, A5-SCL)
- DHT11: D2
- 초음파 센서: Trig-D8, Echo-D9
- 서보모터: D10
- 부저: D11
💻 주요 코드 구조 (간략 예)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(2, DHT11);
Servo servo;
int menu = 0;
int buttonPin = 4;
void setup() {
lcd.begin(); lcd.backlight();
pinMode(buttonPin, INPUT_PULLUP);
servo.attach(10);
dht.begin();
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
menu = (menu + 1) % 4;
delay(300);
}
lcd.clear();
switch (menu) {
case 0:
lcd.print("온습도 측정");
lcd.setCursor(0,1);
lcd.print(dht.readTemperature());
lcd.print("C ");
lcd.print(dht.readHumidity());
lcd.print("%");
break;
case 1:
lcd.print("거리 측정");
// 초음파 거리 측정 코드 삽입
break;
case 2:
lcd.print("서보 90도");
servo.write(90);
break;
case 3:
lcd.print("부저 알림");
tone(11, 1000, 500);
break;
}
delay(1000);
}
🧠 실전 활용 팁
- ⏳ menuTimeout 변수로 자동 초기화 기능 추가 가능
- 📱 블루투스 입력으로 메뉴 전환도 확장 가능
- 🔧 EEPROM에 마지막 메뉴 저장 기능 추가 가능
✅ 마무리
이제 하나의 버튼으로 다양한 기능을 제어할 수 있는 아두이노 종합 시스템을 만들었습니다! LCD 메뉴 기반의 구조는 앞으로 블루투스 제어, IoT 확장에도 큰 도움이 됩니다. 다음 편에서는 전자식 가변저항(SPI 제어 방식)을 다루는 고급 주제로 넘어갑니다!
Arduino 시리즈 18편 | 작성자: YT
반응형
'아두이노' 카테고리의 다른 글
| 아두이노 RFID 카드 인식 시스템 만들기 – RC522 모듈로 출입 인증 구현하기 (3) | 2025.04.19 |
|---|---|
| 아두이노 전자식 가변저항 제어 가이드 – MCP41010 SPI 통신으로 디지털 저항 조절하기 (0) | 2025.04.19 |
| 아두이노 피에조 부저 알람 만들기 – tone() 함수로 소리 제어하는 완벽 가이드 (0) | 2025.04.19 |
| 아두이노 가변저항 입력 완벽 가이드 – Potentiometer로 아날로그 값 읽기와 응용까지 (0) | 2025.04.19 |
| 아두이노 서보모터 제어 완벽 가이드 – SG90으로 각도 제어부터 응용까지 (2) | 2025.04.19 |