클릭하면 유튜브 시연 영상으로 이동합니다.
Arduino Mega 2560 기반의 WAV 파일 플레이어입니다.
SD 카드에서 WAV 파일을 읽어 PWM 방식으로 스피커에 출력하며, LCD와 Rotary Encoder를 통해 UI를 구성합니다.
| Arduino 핀 | LCD 신호 |
|---|---|
| A0 (PF0) | D0 |
| A1 (PF1) | D1 |
| A2 (PF2) | D2 |
| A3 (PF3) | D3 |
| A4 (PF4) | D4 |
| A5 (PF5) | D5 |
| A6 (PF6) | D6 |
| A7 (PF7) | D7 |
| 12 | RS |
| 11 | E |
| Arduino 핀 | 신호 |
|---|---|
| 18 (PD3, INT3) | PH_A |
| 19 (PD2) | PH_B |
| 20 (PD1, INT1) | ENC_SW (버튼) |
| Arduino 핀 | 신호 |
|---|---|
| 50 (PB3, MISO) | MISO |
| 51 (PB2, MOSI) | MOSI |
| 52 (PB1, SCK) | SCK |
| 53 (PB0, SS) | SD_CS |
| Arduino 핀 | LED |
|---|---|
| 37 (PC0) | LED1 |
| 36 (PC1) | LED2 |
| 35 (PC2) | LED3 |
| 34 (PC3) | LED4 |
| 33 (PC4) | LED5 |
| 32 (PC5) | LED6 |
| 31 (PC6) | LED7 |
| 30 (PC7) | LED8 |
| Arduino 핀 | 연결 |
|---|---|
| 21 (PD0, INT0) | SW1 (뒤로 이동) |
| 3 (PE5, INT5) | SW2 (앞으로 이동) |
| A9 (PK1, ADC9) | VR1 (가변저항, 이동 시간 조절) |
| Arduino 핀 | 신호 |
|---|---|
| 10 (PB4, OC2A) | PWM_H LEFT |
| 9 (PH6, OC2B) | PWM_L LEFT |
| 6 (PH3, OC4A) | PWM_H RIGHT |
| 7 (PH4, OC4B) | PWM_L RIGHT |
- SD 카드 내 폴더 및 WAV 파일 탐색 (SdFat 라이브러리 사용)
- Rotary Encoder로 곡 선택, 버튼으로 재생/정지
- LCD 1행: 현재 파일/폴더명 표시 (16자 초과 시 스크롤)
- LCD 2행: PLAYING / STOPPED 상태 및 재생 진행률 표시
- 폴더는
[폴더명]형식으로 표시,[<-]로 상위 폴더 이동 - 재생 완료 시 다음 곡 자동 재생
- SW1 / SW2로 지정 시간만큼 앞뒤 이동
- VR1 (가변저항)으로 이동 시간 1~7초 조절, LED로 시간 표시
- 지원 형식: Stereo/Mono, 16-bit/8-bit, 44.1kHz/22.05kHz
- LCD 제어: LiquidCrystal 라이브러리 미사용, 직접 레지스터 제어
- PWM 출력: Timer/Counter 2 (LEFT), Timer/Counter 4 (RIGHT)
- 샘플링 인터럽트: Timer/Counter 3으로 44.1kHz / 22.05kHz 타이머 인터럽트
- 이중 버퍼:
unsigned char buf[2][3000]구조로 끊김 없는 재생 - Rotary Encoder: INT3 인터럽트 활용
- SdFat — 긴 파일명 지원 SD 카드 라이브러리
- SPI.h — Arduino 기본 내장
