콘텐츠로 이동

Chapter 21: 온도에 따른 LED 색상 표시기 만들기

🎯 이 장에서 배우는 것

  • [ ] RGB LED로 다양한 색상을 표현할 수 있다
  • [ ] 온도 범위에 따라 LED 색상을 변경할 수 있다

⏱️ 예상 학습 시간: 약 40분


📚 핵심 개념

개념: RGB LED

비유: RGB LED는 세 가지 물감이 들어있는 팔레트와 같아요!

빨강(R), 초록(G), 파랑(B) 세 가지 빛을 섞어서 다양한 색을 만들어요.

flowchart LR R["🔴 빨강"] --> MIX["🎨 RGB LED"] G["🟢 초록"] --> MIX B["🔵 파랑"] --> MIX MIX --> COLOR["다양한 색상!"]
조합 R G B 결과
빨강 255 0 0 🔴
초록 0 255 0 🟢
파랑 0 0 255 🔵

🔨 따라하기

Step 1: RGB LED 색상 함수 만들기

코드:

import machine
from machine import Pin, PWM

# RGB LED 핀 설정
red = PWM(Pin(13))
green = PWM(Pin(12))
blue = PWM(Pin(14))

def set_color(r, g, b):
    """RGB 색상 설정"""
    red.duty(r * 4)    # 0~255 → 0~1023 변환
    green.duty(g * 4)
    blue.duty(b * 4)

# 테스트: 파란색
set_color(0, 0, 255)

실행 결과:

LED가 파란색으로 켜짐


Step 2: 온도별 색상 표시

코드:

def show_temp_color(temp):
    """온도에 따른 색상 표시"""
    if temp < 18:
        set_color(0, 0, 255)    # 추움: 파랑
    elif temp < 26:
        set_color(0, 255, 0)    # 적당: 초록
    else:
        set_color(255, 0, 0)    # 더움: 빨강

# 테스트
show_temp_color(15)  # 파랑
show_temp_color(22)  # 초록
show_temp_color(30)  # 빨강

flowchart LR T["🌡️ 온도"] --> C1{18℃ 미만?} C1 -->|예| B["🔵 파랑<br/>추워요"] C1 -->|아니오| C2{26℃ 미만?} C2 -->|예| G["🟢 초록<br/>쾌적해요"] C2 -->|아니오| R["🔴 빨강<br/>더워요"]

📝 전체 코드

from machine import Pin, PWM, ADC
import time

# RGB LED 설정
red = PWM(Pin(13))
green = PWM(Pin(12))
blue = PWM(Pin(14))

# 온도 센서
sensor = ADC(0)

def set_color(r, g, b):
    red.duty(r * 4)
    green.duty(g * 4)
    blue.duty(b * 4)

def read_temp():
    value = sensor.read()
    return (value / 1023.0) * 100  # 간단 변환

def show_temp_color(temp):
    if temp < 18:
        set_color(0, 0, 255)    # 파랑
    elif temp < 26:
        set_color(0, 255, 0)    # 초록
    else:
        set_color(255, 0, 0)    # 빨강

# 실행
while True:
    temp = read_temp()
    show_temp_color(temp)
    print(f"온도: {temp:.1f}℃")
    time.sleep(1)

⚠️ 주의할 점

RGB 값 범위: 0~255 사이 값만 사용하세요!

# ❌ 오류
set_color(300, 0, 0)

# ✅ 올바름
set_color(255, 0, 0)


✅ 점검하기

  1. RGB LED에서 노란색을 만들려면 어떤 색을 섞어야 할까요?
정답 확인 빨강 + 초록 = 노랑 → set_color(255, 255, 0)
  1. 온도 기준을 20℃, 28℃로 바꾸려면 어디를 수정할까요?
정답 확인 if temp < 20: 와 elif temp < 28: 으로 숫자만 변경!

🔗 다음 장 미리보기

🎵 다음 장에서는 피에조 부저로 알림음 만들기를 배워요. LED와 소리를 함께 사용해볼까요?