중급⏱ 예상 시간: 40분📝 5단계
DC모터 선풍기
가변저항으로 DC모터의 속도를 제어하고, LCD에 현재 풍량 단계를 표시하는 미니 선풍기를 만듭니다.
🧩 필요한 모듈
Arduino Uno
브레드보드
DC 모터
점퍼 와이어
LCD 디스플레이 (I2C 16x2)
모터 드라이버 (L298N)
가변 저항 (포텐셔미터)
저항 (220Ω / 10kΩ)
📖 단계별 설명서
1단계준비물 확인
다음 부품들을 준비해주세요:
- Arduino Uno 1개
- 브레드보드 1개
- 점퍼 와이어 12개
- DC 모터 1개
- 모터 드라이버 (L298N) 1개
- 가변저항 1개
- I2C LCD 디스플레이 1개
- 저항 (필요시)
💡 팁: DC 모터는 아두이노 핀으로 직접 구동하면 안 됩니다. 반드시 모터 드라이버를 사용해주세요!
2단계회로 연결하기
- L298N의 IN1을 D5(PWM), IN2를 D4에 연결합니다.
- L298N의 ENA를 D6(PWM)에 연결합니다 (점퍼 제거).
- DC 모터를 L298N의 OUT1, OUT2에 연결합니다.
- L298N의 12V에 외부 전원 또는 Vin, GND를 GND에 연결합니다.
- 가변저항을 A0에 연결합니다.
- LCD의 SDA를 A4, SCL을 A5에 연결합니다.
📐 회로도
회로도 이미지
/images/projects/dc-fan-circuit.png
3단계코드 작성하기
code.ino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int ENA = 6;
const int IN1 = 5;
const int IN2 = 4;
const int POT = A0;
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
// 정방향 회전 설정
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Mini Fan Control");
}
void loop() {
int potValue = analogRead(POT);
int speed = map(potValue, 0, 1023, 0, 255);
int level = map(speed, 0, 255, 0, 5);
analogWrite(ENA, speed);
lcd.setCursor(0, 1);
lcd.print("Speed: ");
// 막대 그래프 표시
for (int i = 0; i < 5; i++) {
lcd.print(i < level ? (char)0xFF : '_');
}
lcd.print(" Lv");
lcd.print(level);
lcd.print(" ");
delay(100);
}+26 줄 더 보기
4단계업로드 및 테스트
- 코드를 업로드합니다.
- 가변저항을 돌려 모터 속도가 변하는지 확인합니다.
- LCD에 현재 풍량 단계가 표시되는지 확인합니다.
- 가변저항을 최소로 돌리면 모터가 정지합니다.
💡 팁: 모터에 종이 프로펠러를 붙이면 실제 선풍기처럼 바람이 납니다. 모터가 돌지 않으면 L298N의 전원 공급을 확인하세요.
5단계심화 — 온도 기반 자동 조절
온도 센서를 추가하면 실내 온도에 따라 자동으로 풍량을 조절하는 스마트 선풍기를 만들 수 있습니다.