- 🎮 10주차 과제: RC 기반 LED 제어 시스템 (R9DS + Arduino + 조종기 AT9)
- ✋ 4주차 과제: 손 제시쳐 기반 인터랙트티브 캔버스 UI
- 🚦 3주차 과제: 핸드포즈로 신호드 제어하기
- 🚦 2주차 과제: 신호드 제어 시스템-Arduino--p5js
🎮 10주차 과제 내용 포표
🎮 RC 기반 LED 제어 시스템 (R9DS + Arduino + 조종기 AT9)이 프로젝트는 RadioLink AT9 조종기 + R9DS 수신기 + Arduino를 사용하여
PWM 신호를 통해 3가지 LED 동작을 무선으로 실시간 제어하는 시스템입니다.
- RC 조종기의 채널 입력값을 해석하여,
- 모드 스위치(PWM)로 LED 동작을 선택하고,
- 3가지 기능을 각각 수행
| 항목 | 모델 | 설명 |
|---|---|---|
| 조종기 | RadioLink AT9 | CH3, CH5, CH6, CH9 채널 사용 |
| 수신기 | RadioLink R9DS | 9채널 PWM 출력 수신기 |
| 마이크로컨트롤러 | Arduino Uno | |
| LED 1 | 빨간색 단색 LED | On/Off 전용 |
| LED 2 | 노란색 단색 LED | 밝기 제어용 |
| LED 3 | RGB 공통 음극 모듈 | 색상 제어용 |
| 저항 | LED 보호용 | |
| 점퍼선 | 연결용 |
| 수신기 채널 | 용도 | Arduino 핀 |
|---|---|---|
| CH3 (Signal) | 제어 입력 값 | A0 |
| CH5 (Signal) | On/Off 모드 | A1 |
| CH6 (Signal) | 밝기 제어 모드 | A2 |
| CH9 (Signal) | 색상 제어 모드 | A3 |
| CH3 (VCC) | 전원 공유 | 5V |
| CH3 (GND) | 공통 GND | GND |
| Arduino 핀 | 연결 대상 | 설명 |
|---|---|---|
| D3 | 빨간 LED + 저항 | On/Off |
| D5 | 노란 LED + 저항 | 밝기 PWM |
| D6 | RGB 모듈 R핀 + 저항 | 색상 제어 |
| D9 | RGB 모듈 G핀 + 저항 | 색상 제어 |
| D10 | RGB 모듈 B핀 + 저항 | 색상 제어 |
| 기능 | 조종기 채널 | 작동 조건 | 설명 |
|---|---|---|---|
| 🔴 빨간 LED On/Off | Ch5 (모드), Ch3 (입력값) | Ch5 > 1500 → Ch3 > 1500이면 ON | 단순 ON/OFF 제어 |
| 🟡 노란 LED 밝기 조절 | Ch6 (모드), Ch3 (입력값) | Ch6 > 1500 | Ch3(1000 |
| 🌈 RGB 색상 제어 | Ch9 (모드), Ch3 (입력값) | Ch9 > 1500 | Ch3(1000 |
- 조종기 조작 → 수신기 PWM 출력 (CH3, CH5, CH6, CH9)
- 아두이노가 PinChangeInterrupt로 모든 PWM 신호 실시간 수신
- CH5/CH6/CH9 각각의 모드가 ON일 때만 CH3의 제어값을 적용
- 각 LED에 맞는 출력 방식으로 제어 수행
- 모드가 꺼지면 해당 LED 즉시 OFF
-
3개의 기능이 완전히 독립적으로 동작
→ On/Off, 밝기 조절, 색상 전환이 동시에 가능 -
하나의 조종기 다이얼로 3가지 기능을 모두 제어 가능
→ 입력 채널(CH3) 재사용으로 자원 효율 극대화 -
실시간 반응 속도
→ PinChangeInterrupt 기반으로 polling 없이 정확한 PWM 처리 -
모드 스위치를 통한 명확한 제어 분리
→ 의도하지 않은 작동 방지 + 디버깅 편리
- 115200bps로 설정 시 아래와 같이 정보 출력됨:
✋ 4주차 과제 내용 포표
✋[임베디드통신 - 4주차 과제] 손 제스처 기반 인터랙티브 캔버스 UI본 프로젝트는 P5.js와 ml5.js의 handPose 모델을 활용하여 손 제스처로 드로잉 및 UI 제어가 가능한 인터랙티브 웹 애플리케이션입니다.
- P5.js: 그래픽 및 인터페이스 구현
- ml5.js (handPose): 실시간 손 인식 및 제스처 분석
- HTML/CSS/JS: UI 및 이미지 업로드 처리
| 위치 | 크기 | 설명 |
|---|---|---|
| 상단 (640x480) | 웹캠 영상 + 손 인식 + 모드 버튼 | 제스처 기반 인터랙션 |
| 하단 (640x120) | 색상 슬라이더 + 이미지 업로드 버튼 | 드로잉 색상 및 이미지 삽입 |
- 화면 상단 중앙에
good,sad,ok,image모드 버튼 배치 - 오른손 검지로 버튼 클릭 시 모드 활성화
- 활성화된 박스는 파란색(blue), 비활성화는 회색(gray)
- 활성화된 박스는 2초 뒤 비활성화 (image 모드 제외)
| 모드 | 설명 |
|---|---|
👍 good |
이모지(👍) 다수 생성, 화면 위에서 아래로 낙하하며 흔들림 효과 |
😢 sad |
이모지(😢) 다수 생성, 낙하 효과 |
👌 ok |
이모지(👌) 다수 생성, 낙하 효과 |
🖼️ image |
보자기 제스처(모든 손가락 펼침) 시 손바닥 위에 업로드된 이미지 표시 (양손 가능능) |
- 오른손 엄지 + 검지 접촉 → 실시간 드로잉
- 접촉 해제 시 → 그리기 종료 및 경로 저장
- 선 색상: 현재 선택된 HSL 색상 - 삼각형 및 색상 미리보기 존재
- 선 두께: 왼손 엄지+검지 거리로 실시간 조절
- 오른손 엄지 + 중지 접촉 → 접촉 지점 근처의 그림 일부 삭제
- 반경 20px 내 그림만 제거
- 지우는 중에는 원 표시
- 오른손 락앤롤 제스처
(엄지와 새끼손가락만 펼침, 나머지 손가락 접힘) - 전체 그림 즉시 삭제
- 왼손 엄지 + 검지 간 거리에 따라
2px ~ 20px로 실시간 조절 - 그림을 그리고 있을 때만 두께를 시각적으로 원형으로 표시
- 오른손 엄지 + 약지 접촉 시 색상 슬라이더 제어 모드 활성화
- 약지의 x좌표에 따라 색상(hue) 값 변경
- 현재 색상은 엄지 위에 원으로 미리보기 표시
- 이미지 업로드 버튼 클릭 → 로컬 이미지 업로드
image모드 클릭 + 보자기 제스처 → 손바닥에 이미지 표시- 이미지 크기는 자동으로 축소되어 표시됨 (최대 400px)
| 제스처 | 손 위치 | 기능 |
|---|---|---|
| 검지로 박스 클릭 | 오른손 | 모드 선택 |
| 엄지 + 검지 접촉 | 오른손 | 그림 그리기 |
| 엄지 + 중지 접촉 | 오른손 | 일부 지우기 |
| 락앤롤 포즈 | 오른손 | 전체 그림 삭제 |
| 엄지 + 검지 거리 | 왼손 | 선 두께 조절 |
| 엄지 + 약지 접촉 | 오른손 | 색상 조절 (슬라이더 이동) |
| 보자기 제스처 | 한 손 또는 양손 | 손바닥에 이미지 표시 |
- 이미지 업로드 없이
image모드 클릭 시 → 화면 중앙에 텍스트: "업로드 된 이미지가 없습니다"
🚦 3주차 과제 내용 포표
🚦 [임베디드통신 - 3주차 과제] 핸드포즈로 신호등 제어하기기존 아두이노 LED 신호 제어 시스템에 손동작(핸드포즈) 기반 UI를 추가하여,
마우스나 키보드 없이도 체스처로도 LED 신호등을 단계별 제어할 수 있게 만든 프로젝트입니다.
참고 사항: 아두이노 코드는 변경 사항이 없고 UI 디자인 코드에 변경사항이 있습니다.
| 기능 | 설명 |
|---|---|
| ✋ 핸드포즈 기반 UI 제어 | 손 제스처만으로 선택/조작 가능 |
| 🤖 단계별 질문 인터페이스 | 선택지 형태의 질문 UI와 연동된 제스처 선택 시스템 |
| 🎨 슬라이더 → 제스처 치환 | 기존의 밝기 슬라이더 조정을 제스처로도 가능 |
| 🔄 동기화된 제어 방식 | 버튼 클릭/제스처 입력 모두 동일하게 작동되도록 완벽 동기화 |
| ↩️ 락앤롤 포즈로 '뒤로가기' | 언제든 손동작으로 이전 단계로 이동 가능 |
| 🖐️ 양손 지원(각 손마다 독립) | 좌우 손 제스처 모두 인식 → 편의성 향상 |
| 🔁 프레임 간 변화 감지 기반 작동 | 손 제스처를 유지하더라도, 처음 인식된 순간에만 한 번만 동작하도록 구현 (오작동 방지) |
| 🎯 LED 사이클 제어 | 3가지 LED 밝기를 제스처로 직접 조정 가능 |
- 🤖 질문이 UI에 표시됨
- ✋ 사용자가 해당 질문에 맞는 손 제스처로 응답
- ✅ 선택된 항목에 배경 강조
- 🔄 슬라이더 조정, 색상 선택 등 모든 제어가 제스처로 수행
- 🤘 락앤롤 포즈로 언제든 이전 단계로 복귀 가능
| 제스처 | 기능 설명 | 적용 단계 |
|---|---|---|
| 🖐️ 보자기 | 버튼 모드 선택 / 버튼1 / 빨강 선택 | 기능 / 버튼 / 색상 |
| ✌️ 브이 | 슬라이더 모드 선택 / 버튼2 / 노랑 선택 | 기능 / 버튼 / 색상 |
| 👌 오케이 | 버튼3 / 초록 선택 | 버튼 / 색상 |
| ☝️ 검지 위 | 슬라이더 값 증가 | 신호 지속 시간 조절 |
| 👇 검지 아래 | 슬라이더 값 감소 | 신호 지속 시간 조절 |
| 🤘 락앤롤 | 뒤로 가기 | 모든 단계에서 사용 가능 |
- 화면에는 질문과 선택지가 순서대로 출력됨
- 선택한 항목은 배경 강조로 시각적 피드백 제공
- 우측 상단에는 현재 인식된 손동작 이모지가 출력되어 실시간 반응 확인 가능
🚦 2주차 과제 내용 포표
🚦 [임베디드통신 - 2주주차 과제] 신호등 제어 시스템 (Arduino + p5.js)이 프로젝트는 아두이노(Arduino)와 p5.js를 활용하여 신호등을 제어하는 시스템입니다.
사용자는 버튼 입력 및 웹 인터페이스를 통해 신호등을 조작할 수 있으며,
LED 밝기 및 지속 시간을 조절할 수 있습니다.
- 아두이노에서 각 LED(Red, Yellow, Green)의 상태를 p5.js에 실시간 전송
- 가변저항(Potentiometer) 값을 읽어 LED 밝기를 조절
- p5.js에서는 투명도(alpha 값)를 이용하여 LED 밝기 표현
- 웹에서 슬라이더를 사용하여 각 LED(빨강, 노랑, 초록)의 지속 시간(0~4초) 설정 가능
- 설정된 값은 시리얼 통신을 통해 아두이노에 전송
- 아두이노에서 전달받은 지속 시간에 따라 LED 점등 시간 변경
- 아두이노 버튼 또는 p5.js의 버튼 UI를 통해 신호등 모드 변경
- 총 4가지 모드 지원
- Normal Mode (기본 신호등 동작)
- Button 1 Mode (빨간불 고정)
- Button 2 Mode (모든 LED 깜빡임)
- Button 3 Mode (LED OFF)
- p5.js에서 모드 버튼 클릭 시 Arduino에도 실시간 반영 (양방향 통신)
- 가변저항(Potentiometer) 값(0
1023)을 0255로 매핑하여 LED 밝기 조절 - p5.js에서 원형 게이지(arc)를 사용하여 밝기 표시
- 사용자가 가변저항을 조작하면 실시간으로 밝기 게이지 업데이트
- 아두이노처럼 모드 버튼을 다시 누르면 원래 상태(Normal)로 복귀하는 기능 구현
- 토글 방식 지원
- 첫 번째 클릭: 해당 모드 활성화
- 두 번째 클릭: 원래 상태 (Normal)로 복귀
- Arduino Uno
- LED x3 (빨강, 노랑, 초록)
- 푸시 버튼 x3
- 가변저항 (Potentiometer) x1
- 저항 (330Ω ~ 1kΩ) x3
- 브레드보드 & 점퍼 와이어
- Arduino C++ (TaskScheduler 활용)
- p5.js (Web Serial API 사용)
- HTML / JavaScript
| 부품 | 아두이노 핀 번호 |
|---|---|
| 버튼 1 (Button1) | D2 |
| 버튼 2 (Button2) | D3 |
| 버튼 3 (Button3) | D4 |
| 빨간 LED (Red LED) | D9 |
| 노란 LED (Yellow LED) | D10 |
| 초록 LED (Green LED) | D11 |
| 가변저항 (Potentiometer) | A0 (아날로그 입력) |
- 왼쪽 핀 →
GND연결 - 오른쪽 핀 →
5V연결 - 가운데 핀 →
A0(아날로그 입력) 연결
- LED (+) 핀 → 아두이노
D9,D10,D11연결 - LED (-) 핀 → 330Ω ~ 1kΩ 저항을 거쳐 GND 연결
- 버튼의 한쪽(+) →
D2, D3, D4(각 버튼별) - 버튼의 반대쪽(-) →
GND연결
- 아두이노
5V→ 회로 내 부품(가변저항, 버튼, 센서 등)에 전원 공급 - 아두이노
GND→ 모든 부품과 연결하여 회로 완성








