콘텐츠로 이동

미니 프로젝트 - 완성과 발표

🎯 이 장에서 배우는 것

  • [ ] 프로젝트를 완성하고 테스트할 수 있다
  • [ ] 1분 시연 발표를 할 수 있다
  • [ ] 동료의 프로젝트를 평가하고 피드백할 수 있다
  • [ ] 프로젝트 과정을 돌아보고 개선점을 찾을 수 있다

💡 왜 이걸 배우나요?

지난 시간에 설계하고 시작한 프로젝트를 오늘 마무리해! 그런데 단순히 "완성"하는 게 끝이 아니야.

실제 개발자들은 어떻게 할까? - 코드를 작성한 후 충분히 테스트해 - 다른 사람에게 설명하고 시연해 - 동료들의 피드백을 받아 개선해

이 과정이 바로 "진짜 개발"이야. 아무리 좋은 아이디어도 완성하지 못하면 의미가 없고, 완성해도 다른 사람에게 설명하지 못하면 가치를 전달할 수 없거든.

오늘은 마무리하는 힘, 발표하는 능력, 피드백 주고받기를 배워볼 거야. 이 세 가지는 프로그래머뿐만 아니라 어떤 일을 하든 필요한 핵심 역량이야! 🚀


📚 핵심 개념

개념 1: 프로젝트 마무리 (Finishing)

  1. 비유로 시작: "프로젝트 마무리는 마치 영화 촬영 후 편집 작업과 같아요"
  2. 촬영(코딩)이 끝났다고 영화가 완성된 게 아니야
  3. 불필요한 장면 자르고, 음악 넣고, 자막 달고...
  4. 이 마무리 작업이 영화 품질의 50%를 결정해!

  5. 정확한 정의: "프로젝트 마무리란 코드 완성, 버그 수정, 테스트, 문서화를 통해 '사용 가능한 상태'로 만드는 과정입니다"

  6. 예시로 확인:

  7. 자동 야간등을 만들었는데, 밝을 때도 가끔 LED가 켜져 → 임계값 조정
  8. 버튼을 누르면 가끔 두 번 인식됨 → 디바운싱 추가
  9. 다른 사람이 코드를 봐도 이해하도록 → 주석 정리

쉽게 말하면: 90% 완성에서 100%로 가는 마지막 10%가 품질을 결정해!


개념 2: 시연 발표 (Demo Presentation)

  1. 비유로 시작: "시연 발표는 마치 요리 대회에서 음식을 심사위원 앞에서 직접 먹여보는 것과 같아요"
  2. 레시피(코드)만 보여주는 게 아니라
  3. 실제로 작동하는 걸 보여주고
  4. 왜 이 요리(프로젝트)가 좋은지 설명해야 해

  5. 정확한 정의: "시연 발표란 프로젝트가 실제로 작동하는 것을 보여주면서, 만든 의도와 기능을 청중에게 전달하는 것입니다"

  6. 예시로 확인:

    좋은 시연: "손을 가까이 대면... [실제로 손 대기] 
               봐요, LED가 켜졌죠! 거리가 30cm 이하면 반응해요"
    
    나쁜 시연: "이 코드는 초음파 센서로 거리를 측정해서 
               LED를 제어합니다" (말만 하고 안 보여줌)
    

쉽게 말하면: 말로만 하지 말고, 직접 보여줘!


개념 3: 동료 평가 (Peer Review)

  1. 비유로 시작: "동료 평가는 마치 게임의 베타 테스터와 같아요"
  2. 만든 사람은 자기 게임의 버그를 못 찾아
  3. 다른 사람이 플레이하면 "여기 이상한데?" 발견
  4. 좋은 피드백은 더 좋은 게임(프로젝트)을 만들어

  5. 정확한 정의: "동료 평가란 비슷한 수준의 학습자가 서로의 작업물을 검토하고 건설적인 피드백을 주고받는 과정입니다"

  6. 예시로 확인:

    좋은 피드백: "아이디어가 좋아요! 한 가지 제안인데, 
                 버튼을 길게 누르면 모드가 바뀌면 더 편할 것 같아요"
    
    나쁜 피드백: "별로예요" (이유 없음)
                "완벽해요" (구체적이지 않음)
    

쉽게 말하면: 친구의 프로젝트를 "더 좋게 만들어주는" 의견을 주자!


🔨 따라하기

오늘의 전체 흐름

flowchart LR A[🔧 마무리<br/>15분] --> B[📝 준비<br/>5분] --> C[🎤 발표<br/>25분] --> D[⭐ 평가<br/>5분] style A fill:#e3f2fd,stroke:#1976d2 style B fill:#fff3e0,stroke:#f57c00 style C fill:#e8f5e9,stroke:#388e3c style D fill:#fce4ec,stroke:#c2185b

Step 1: 프로젝트 마무리 (15분)

목표: 남은 버그를 수정하고 완성도를 높이자

마무리 체크리스트

시작 전에 이 목록을 확인해봐:

📋 마무리 체크리스트
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🔌 하드웨어
[ ] 모든 센서/출력장치가 연결되어 있나?
[ ] 케이블이 빠지지 않게 정리했나?
[ ] 전원을 껐다 켜도 작동하나?

💻 소프트웨어  
[ ] 코드가 에러 없이 실행되나?
[ ] 핵심 기능이 모두 작동하나?
[ ] 예외 상황에서도 멈추지 않나?

📝 코드 정리
[ ] 주석이 충분한가?
[ ] 쓸모없는 코드(print 디버깅 등)를 지웠나?
[ ] 변수/함수 이름이 이해하기 쉬운가?

🎯 완성도
[ ] 처음 의도한 기능을 구현했나?
[ ] 시연할 때 보여줄 순서를 정했나?

빠른 버그 수정 가이드

증상별 해결법:

# === 자주 발생하는 버그와 해결법 ===

# 🐛 버그 1: 센서 값이 튀어요
# 해결: 평균값 사용
def get_stable_reading(sensor, count=5):
    """여러 번 읽어서 평균 내기"""
    total = 0
    for i in range(count):
        total += sensor.read_u16()
        time.sleep(0.01)
    return total // count

# 🐛 버그 2: 버튼 한 번 눌렀는데 여러 번 인식돼요
# 해결: 디바운싱
last_press = 0
def is_button_pressed(button):
    """디바운싱 적용된 버튼 체크"""
    global last_press
    if button.value() == 1:
        current = time.ticks_ms()
        if time.ticks_diff(current, last_press) > 200:  # 200ms 간격
            last_press = current
            return True
    return False

# 🐛 버그 3: 조건 경계에서 깜빡거려요 (예: 밝기 500 기준)
# 해결: 히스테리시스 (여유 범위 두기)
led_on = False
def check_with_hysteresis(value, on_threshold=450, off_threshold=550):
    """경계에서 안정적으로 전환"""
    global led_on
    if value < on_threshold:
        led_on = True
    elif value > off_threshold:
        led_on = False
    return led_on

시간이 부족할 때 우선순위

flowchart TD A[⏰ 남은 시간?] --> B{10분 이상?} B -->|Yes| C[🎯 추가 기능<br/>구현해도 OK] B -->|No| D{5분 이상?} D -->|Yes| E[🔧 버그 수정에<br/>집중!] D -->|No| F[📝 있는 그대로<br/>발표 준비!] style A fill:#fff3e0,stroke:#f57c00 style C fill:#e8f5e9,stroke:#388e3c style E fill:#e3f2fd,stroke:#1976d2 style F fill:#fce4ec,stroke:#c2185b

여기서 잠깐! 🤔

완벽하지 않아도 괜찮아!

80% 완성된 프로젝트 + 잘 설명하는 발표

100% 완성 + 못 보여주는 발표

지금 가진 것으로 최선의 발표를 준비하자!


Step 2: 발표 준비 (5분)

목표: 1분 시연 발표 내용을 정리하자

1분 발표 구성 (황금 비율)

pie title 1분 발표 시간 배분 "소개 (10초)" : 10 "시연 (35초)" : 35 "마무리 (15초)" : 15

발표 스크립트 템플릿

🎤 1분 발표 스크립트
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📌 소개 (10초)
"안녕하세요, 저는 [이름]이고, 
 오늘 보여드릴 프로젝트는 [프로젝트 이름]입니다.
 [한 문장으로 뭐하는 건지]"

예시: "안녕하세요, 저는 민수고요,
      오늘 보여드릴 프로젝트는 '스마트 무드등'입니다.
      어두워지면 자동으로 켜지는 조명이에요."

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🎬 시연 (35초)
"자, 지금 [현재 상태]인데요,
 [동작 1]을 하면... [결과 1]
 [동작 2]을 하면... [결과 2]
 이게 이 프로젝트의 핵심 기능이에요."

예시: "자, 지금 밝은 상태인데요,
      제가 손으로 조도 센서를 가리면...
      봐요, LED가 켜졌죠!
      다시 손을 떼면... 꺼집니다.
      버튼을 누르면 색상이 바뀌어요. 빨강, 초록, 파랑!"

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🏁 마무리 (15초)
"이 프로젝트를 만들면서 [배운 점/어려웠던 점]이 있었고,
 다음엔 [개선하고 싶은 점]을 해보고 싶어요.
 감사합니다!"

예시: "만들면서 센서 값이 튀는 문제가 있었는데,
      평균값을 쓰니까 해결됐어요.
      다음엔 음악에 맞춰 색이 바뀌게 하고 싶어요.
      감사합니다!"

발표 전 체크

✅ 발표 직전 체크리스트
━━━━━━━━━━━━━━━━━━━━━━━━

[ ] 코드가 실행 중인가?
[ ] 시연 순서를 외웠나?
[ ] 목소리 크기는 적당한가?
[ ] 청중을 보면서 말할 수 있나?

여기서 잠깐! 🤔

발표 꿀팁: 시연할 때 "마법 같은" 순간을 만들어! - ❌ "버튼 누르면 LED 켜져요" (말하고 → 누름) - ✅ "자, 제가 버튼을 누르면..." (누름) "짠! 불이 들어왔죠?"

결과를 먼저 말하지 말고, 기대감을 주고 보여줘!


Step 3: 발표 진행 (25분)

목표: 모든 조가 돌아가며 1분 시연 발표

발표 순서와 역할

flowchart LR A[🎤 발표자] --> B[👀 청중] B --> C[📝 평가자] C --> A style A fill:#e8f5e9,stroke:#388e3c style B fill:#e3f2fd,stroke:#1976d2 style C fill:#fff3e0,stroke:#f57c00
  • 발표자: 1분 시연 + 질문 답변 (30초)
  • 청중: 집중해서 보고, 배울 점 찾기
  • 평가자: 동료 평가지 작성

좋은 청중 되기

👂 청중 에티켓
━━━━━━━━━━━━━━━━━━━━━━━━

✅ 해야 할 것
- 발표자를 바라보기
- 고개 끄덕이며 반응하기
- 시연 성공하면 박수!
- 궁금한 점 질문하기

❌ 하지 말아야 할 것
- 자기 코드 만지작거리기
- 친구랑 잡담하기
- 부정적 반응 보이기

질문 예시

발표 후 질문할 게 생각 안 나면: - "가장 어려웠던 부분은 뭐였어요?" - "이 기능 아이디어는 어디서 얻었어요?" - "다음에 추가하고 싶은 기능이 있어요?" - "이 센서 말고 다른 센서 써볼 생각도 있어요?"


Step 4: 동료 평가 (5분)

목표: 건설적인 피드백을 작성하고 공유하자

동료 평가지

📋 동료 평가지
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

평가자: ________________  발표자: ________________

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1️⃣ 아이디어 (창의성)
   ○ 매우 좋음  ○ 좋음  ○ 보통  ○ 아쉬움

2️⃣ 완성도 (기능 작동)
   ○ 매우 좋음  ○ 좋음  ○ 보통  ○ 아쉬움

3️⃣ 발표 (설명, 시연)
   ○ 매우 좋음  ○ 좋음  ○ 보통  ○ 아쉬움

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

💚 가장 좋았던 점:
_________________________________________________
_________________________________________________

💡 이렇게 하면 더 좋을 것 같아요:
_________________________________________________
_________________________________________________

⭐ 한 줄 응원:
_________________________________________________

좋은 피드백 작성법

flowchart TD A[💬 피드백 작성] --> B[1️⃣ 구체적으로] A --> C[2️⃣ 긍정 먼저] A --> D[3️⃣ 제안 형태로] B --> B1["❌ 좋아요<br/>✅ RGB LED 색상 전환이<br/>부드러워서 좋았어요"] C --> C1["❌ 이거 고쳐야 해요<br/>✅ 아이디어 좋아요!<br/>여기 이렇게 하면 더 좋을듯"] D --> D1["❌ 버그 있어요<br/>✅ 버튼 반응이 가끔 늦는데,<br/>디바운싱 써보면 어때요?"] style A fill:#e8f5e9,stroke:#388e3c style B fill:#e3f2fd,stroke:#1976d2 style C fill:#fff3e0,stroke:#f57c00 style D fill:#fce4ec,stroke:#c2185b

피드백 문장 공식:

"[좋았던 점] + 근데/그리고 + [개선 제안] + 하면 어떨까요?"

예시:
"조도 센서로 자동 켜지는 거 진짜 좋았어요.
 근데 완전 어두울 때 LED가 더 밝아지면 더 좋을 것 같아요!"


📝 프로젝트별 완성 코드 예시

프로젝트 A: 스마트 무드등 완성 코드

# === 스마트 무드등 - 완성 버전 ===
# 조도에 따라 자동으로 켜지고, 버튼으로 색상 변경

# --- 라이브러리 ---
from machine import Pin, ADC, PWM
import time

# --- 핀 설정 ---
# 조도 센서 (A0 포트)
light_sensor = ADC(26)

# RGB LED (D18 포트 - PWM 사용)
red = PWM(Pin(18))
green = PWM(Pin(19))
blue = PWM(Pin(20))
red.freq(1000)
green.freq(1000)
blue.freq(1000)

# 버튼 (D20 포트)
button = Pin(20, Pin.IN, Pin.PULL_DOWN)

# --- 설정값 ---
DARK_THRESHOLD = 30000  # 이 값보다 어두우면 LED 켜기
colors = [
    (65535, 0, 0),       # 빨강
    (0, 65535, 0),       # 초록
    (0, 0, 65535),       # 파랑
    (65535, 65535, 0),   # 노랑
    (65535, 0, 65535),   # 보라
    (65535, 30000, 0),   # 주황 (따뜻한 조명)
]
current_color = 5  # 기본: 주황

# --- 함수 정의 ---
def get_light_level():
    """조도 센서 값 읽기 (평균)"""
    total = 0
    for _ in range(5):
        total += light_sensor.read_u16()
        time.sleep(0.01)
    return total // 5

def set_color(r, g, b):
    """RGB LED 색상 설정"""
    red.duty_u16(r)
    green.duty_u16(g)
    blue.duty_u16(b)

def turn_off():
    """LED 끄기"""
    set_color(0, 0, 0)

def is_pressed():
    """버튼 눌림 감지 (디바운싱)"""
    if button.value() == 1:
        time.sleep(0.05)  # 디바운싱
        if button.value() == 1:
            while button.value() == 1:  # 손 뗄 때까지 대기
                time.sleep(0.01)
            return True
    return False

# --- 메인 루프 ---
print("🌙 스마트 무드등 시작!")
print("버튼을 눌러 색상을 바꿔보세요")

while True:
    # 조도 측정
    light = get_light_level()

    # 버튼으로 색상 변경
    if is_pressed():
        current_color = (current_color + 1) % len(colors)
        print(f"색상 변경: {current_color + 1}번")

    # 어두우면 LED 켜기
    if light > DARK_THRESHOLD:  # ADC는 어두울수록 값이 큼
        r, g, b = colors[current_color]
        set_color(r, g, b)
    else:
        turn_off()

    time.sleep(0.1)

프로젝트 B: 반응형 알람 완성 코드

# === 반응형 알람 - 완성 버전 ===
# 온도가 임계값 넘으면 부저와 LED로 알림

# --- 라이브러리 ---
from machine import Pin, PWM
import time
import dht

# --- 핀 설정 ---
# DHT11 온습도 센서 (D16 포트)
sensor = dht.DHT11(Pin(16))

# LED (D18 포트)
led = Pin(18, Pin.OUT)

# 부저 (D20 포트)
buzzer = PWM(Pin(20))

# 버튼 - 알람 끄기용 (내장 버튼 또는 추가 버튼)
button = Pin(21, Pin.IN, Pin.PULL_DOWN)

# --- 설정값 ---
TEMP_THRESHOLD = 28  # 이 온도 이상이면 알람
alarm_active = False

# --- 함수 정의 ---
def read_temperature():
    """온도 읽기 (에러 처리 포함)"""
    try:
        sensor.measure()
        return sensor.temperature()
    except:
        print("센서 읽기 실패, 재시도...")
        time.sleep(1)
        return None

def beep(frequency=1000, duration=0.1):
    """부저 울리기"""
    buzzer.freq(frequency)
    buzzer.duty_u16(32768)
    time.sleep(duration)
    buzzer.duty_u16(0)

def alarm_on():
    """알람 켜기"""
    led.on()
    beep(2000, 0.1)
    led.off()
    time.sleep(0.1)
    led.on()
    beep(1500, 0.1)
    led.off()

def alarm_off():
    """알람 끄기"""
    buzzer.duty_u16(0)
    led.off()

def is_button_pressed():
    """버튼 눌림 감지"""
    return button.value() == 1

# --- 메인 루프 ---
print("🌡️ 반응형 온도 알람 시작!")
print(f"임계 온도: {TEMP_THRESHOLD}°C")

while True:
    # 온도 측정
    temp = read_temperature()

    if temp is not None:
        print(f"현재 온도: {temp}°C")

        # 온도 체크
        if temp >= TEMP_THRESHOLD:
            if not alarm_active:
                print("⚠️ 경고! 온도가 높습니다!")
                alarm_active = True
            alarm_on()
        else:
            if alarm_active:
                print("✅ 온도 정상")
            alarm_active = False
            alarm_off()

    # 버튼으로 알람 일시 정지
    if is_button_pressed() and alarm_active:
        print("🔕 알람 일시 정지 (10초)")
        alarm_off()
        time.sleep(10)

    time.sleep(1)

프로젝트 C: 거리 감지 알림 완성 코드

# === 거리 감지 알림 - 완성 버전 ===
# 초음파 센서로 거리 측정, 가까우면 알림

# --- 라이브러리 ---
from machine import Pin, PWM
import time

# --- 핀 설정 ---
# 초음파 센서 (D18 포트)
trigger = Pin(18, Pin.OUT)
echo = Pin(19, Pin.IN)

# LED (D16 포트)
led = Pin(16, Pin.OUT)

# 부저 (D20 포트)
buzzer = PWM(Pin(20))

# --- 설정값 ---
CLOSE_DISTANCE = 20   # 20cm 이내면 "가까움"
MEDIUM_DISTANCE = 50  # 50cm 이내면 "중간"

# --- 함수 정의 ---
def measure_distance():
    """초음파로 거리 측정 (cm)"""
    # 트리거 신호 보내기
    trigger.off()
    time.sleep_us(2)
    trigger.on()
    time.sleep_us(10)
    trigger.off()

    # 에코 신호 측정
    timeout = 30000  # 타임아웃 (us)
    start = time.ticks_us()

    # 에코 시작 대기
    while echo.value() == 0:
        if time.ticks_diff(time.ticks_us(), start) > timeout:
            return -1  # 타임아웃
    pulse_start = time.ticks_us()

    # 에코 끝 대기
    while echo.value() == 1:
        if time.ticks_diff(time.ticks_us(), start) > timeout:
            return -1  # 타임아웃
    pulse_end = time.ticks_us()

    # 거리 계산 (음속 = 343m/s)
    duration = time.ticks_diff(pulse_end, pulse_start)
    distance = duration * 0.0343 / 2

    return distance

def beep_pattern(distance):
    """거리에 따른 부저 패턴"""
    if distance < CLOSE_DISTANCE:
        # 가까움: 빠르게 비프
        buzzer.freq(2000)
        buzzer.duty_u16(32768)
        time.sleep(0.05)
        buzzer.duty_u16(0)
    elif distance < MEDIUM_DISTANCE:
        # 중간: 느리게 비프
        buzzer.freq(1000)
        buzzer.duty_u16(32768)
        time.sleep(0.1)
        buzzer.duty_u16(0)
    else:
        # 멀리: 소리 없음
        buzzer.duty_u16(0)

def update_led(distance):
    """거리에 따른 LED"""
    if distance < CLOSE_DISTANCE:
        led.on()
    else:
        led.off()

# --- 메인 루프 ---
print("📏 거리 감지 알림 시작!")

while True:
    distance = measure_distance()

    if distance > 0 and distance < 400:  # 유효한 측정값
        print(f"거리: {distance:.1f}cm")

        beep_pattern(distance)
        update_led(distance)
    else:
        print("측정 실패")

    time.sleep(0.2)

⚠️ 자주 하는 실수

실수 1: 시연 중에 코드가 멈춰요

증상: 발표 중 갑자기 프로그램이 멈추거나 에러 발생 원인: 예외 처리가 없어서 센서 읽기 실패 시 프로그램 종료 해결:

# 잘못된 코드
while True:
    temp = sensor.temperature()  # 실패하면 프로그램 종료!
    print(temp)

# 올바른 코드
while True:
    try:
        sensor.measure()
        temp = sensor.temperature()
        print(temp)
    except Exception as e:
        print(f"센서 에러: {e}")
        time.sleep(1)  # 잠시 후 재시도

실수 2: 발표 시간을 초과해요

증상: 1분인데 2-3분 동안 발표 원인: 코드 설명을 너무 길게 함 해결:

❌ 잘못된 발표:
"이 코드를 보시면 먼저 라이브러리를 import하고,
 Pin 객체를 만들고, while 루프 안에서..."
(코드 한 줄씩 설명 → 시간 초과)

✅ 올바른 발표:
"이 프로젝트는 3가지 기능이 있어요.
 첫째, [시연]. 둘째, [시연]. 셋째, [시연].
 이상입니다!"
(기능 중심으로 보여주기 → 1분 내 완료)

실수 3: 피드백이 너무 모호해요

증상: "좋아요", "괜찮아요" 같은 피드백만 작성 원인: 구체적으로 뭘 써야 할지 모름 해결:

❌ 모호한 피드백:
"아이디어가 좋아요"
"잘 만들었어요"

✅ 구체적인 피드백:
"조도 센서로 자동 켜지는 아이디어가 실용적이에요.
 특히 색상 전환이 부드러운 게 좋았어요."

"버튼 반응이 정확하고, LED 밝기 조절도 잘 돼요.
 한 가지, 완전 어두울 때 더 밝아지면 좋겠어요."

📊 평가 기준 (루브릭)

전체 평가 항목

항목 매우 좋음 (A) 좋음 (B) 보통 (C) 노력 필요 (D)
아이디어 창의적이고 실용적 참신하거나 실용적 기본에 충실 아이디어 불분명
완성도 모든 기능 완벽 작동 핵심 기능 작동 일부 기능 미완성 작동 안 함
코드 품질 구조화, 주석 완벽 읽기 쉬움 작동은 함 이해 어려움
발표 명확하고 인상적 잘 설명함 기본적인 설명 준비 부족
협업 적극 참여, 좋은 피드백 참여함 소극적 참여 미참여

점수 계산

총점 = 아이디어(20%) + 완성도(30%) + 코드품질(20%) + 발표(20%) + 협업(10%)

✅ 스스로 점검하기

1. 프로젝트 마무리에서 가장 중요한 것은?

a) 기능을 최대한 많이 넣기
b) 코드를 예쁘게 꾸미기
c) 핵심 기능이 안정적으로 작동하게 하기
d) 남들보다 빨리 끝내기

2. 좋은 시연 발표의 특징이 아닌 것은?

a) 실제로 작동하는 것을 보여준다
b) 코드를 한 줄씩 설명한다
c) 청중과 눈을 맞춘다
d) 시간을 지킨다

3. 건설적인 피드백의 예시로 적절한 것은?

a) "별로예요"
b) "완벽해요!"
c) "아이디어가 좋은데, 버튼 반응이 느린 것 같아요. 디바운싱 시간을 줄여보면 어떨까요?"
d) "저랑 비슷하네요"

정답 확인 1. **c) 핵심 기능이 안정적으로 작동하게 하기** - 기능이 많아도 작동 안 하면 의미 없어. 적더라도 확실하게! 2. **b) 코드를 한 줄씩 설명한다** - 시연은 "보여주는" 거야. 코드 설명은 질문 받았을 때! 3. **c) "아이디어가 좋은데, 버튼 반응이 느린 것 같아요. 디바운싱 시간을 줄여보면 어떨까요?"** - 좋은 점 언급 + 구체적 문제 + 해결 제안 = 완벽한 피드백!

🚀 더 해보기

도전 1: 발표 영상 만들기 📹

자신의 프로젝트 시연 영상을 1분으로 촬영해서 공유해봐! - 스마트폰으로 촬영 - 자막 넣으면 더 좋아 - YouTube나 학교 플랫폼에 업로드

도전 2: README 파일 작성하기 📄

GitHub에 올릴 수 있는 프로젝트 설명서를 작성해봐!

# 프로젝트 이름

## 소개
[한 줄 설명]

## 기능
- 기능 1
- 기능 2

## 필요한 부품
- Pico 2W
- [센서들]

## 회로 연결
[연결 설명]

## 사용법
[실행 방법]

## 만든 사람
[이름]

도전 3: 친구 프로젝트 개선해주기 ⭐

동료 평가에서 피드백 준 내용을 직접 구현해서 친구에게 공유해봐! - 친구 코드 fork하기 - 개선 사항 적용 - Pull Request 또는 직접 전달


🏆 오늘의 우수 프로젝트

선생님이 발표 중 특별히 좋았던 프로젝트를 여기에 기록해주세요!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🥇 최고 아이디어상: _________________
   프로젝트: _________________
   선정 이유: _________________

🥈 최고 완성도상: _________________
   프로젝트: _________________
   선정 이유: _________________

🥉 최고 발표상: _________________
   프로젝트: _________________
   선정 이유: _________________

⭐ 숨은 노력상: _________________
   프로젝트: _________________
   선정 이유: _________________
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🔗 다음 장으로

축하해! 🎉 첫 번째 미니 프로젝트를 완성하고 발표까지 마쳤어!

오늘 배운 것: - 프로젝트 마무리의 중요성 (80%→100%) - 1분 시연 발표 구성법 - 건설적인 동료 피드백 주고받기

다음 시간 예고: OLED 디스플레이 📺

지금까지는 LED, 부저, 서보모터로 출력했어. 다음 시간에는 작은 화면(OLED)에 글자와 그림을 표시해볼 거야!

센서 값을 숫자로 보여주고, 이모지도 그리고, 나중에는 시계나 대시보드도 만들 수 있어.

┌─────────────────┐
│ 🌡️ 온도: 24°C   │
│ 💧 습도: 65%    │
│ ☀️ 밝음        │
└─────────────────┘

이런 화면을 직접 만들어볼 준비됐지? 다음 시간에 만나! 👋


📎 부록: 빈 양식 모음

발표 스크립트 양식

🎤 나의 1분 발표 스크립트
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📌 소개 (10초):
_________________________________________________
_________________________________________________

🎬 시연 (35초):
- 동작 1: _______________________________________
- 동작 2: _______________________________________
- 동작 3: _______________________________________

🏁 마무리 (15초):
_________________________________________________
_________________________________________________

자기 평가 양식

📋 프로젝트 자기 평가
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

이름: ________________  프로젝트명: ________________

1️⃣ 아이디어 점수: ___/10
   이유: _________________________________________

2️⃣ 완성도 점수: ___/10
   이유: _________________________________________

3️⃣ 발표 점수: ___/10
   이유: _________________________________________

💪 잘한 점:
_________________________________________________

🔧 아쉬운 점:
_________________________________________________

🎯 다음에 하고 싶은 것:
_________________________________________________