라즈베리파이 부저 노래 - lajeubelipai bujeo nolae

다리 2개 - (+) 핀과 (-) 핀.

▶ [실습 1. 부저 기본 소리 제어]

- 회로 구성

- 소스 코드 : 직접 타이핑

int speakerpin =8; //스피커가 연결된 디지털핀 설정 int note = 1000; // 소리의 주파수 int note_time = 500; // 소리 출력 시간 void setup() { /* setup 에는 코드 읍따 */ } void loop() { tone(speakerpin,note,note_time); delay(750); }

 -> note : 소리의 주파수 ex) 1000 -> 1000 HZ 소리

 -> note_time : 소리 출력 시간(밀리 세컨드) ex) 500 -> 0.5초

1000 hz 소리를 직접 들어 보자.

[★도전과제 1 ★]
주파수별 옥타브별 음계와 음악기호를 보고 accel.(아첼레탄도)로 도레미파솔라시도를 tone() 함수를 활용하여 부저로 소리 출력을 해보세요.

- 주파수별 옥타브 음계

- 빠르게를 나타내는 음악 기호

[★ 도전과제 2 ★]
배열의 구조를 활용하여 도레미파솔라시도 를 ritardando(리타르단토)로 출력하시오.

- 배열의 구조

출처 : C언어 코딩 도장

 메모리 구조

출처 : TCP 스쿨

- 소스 코드 : 아래 코드를 복붙 한뒤, int note_time[] 을 생성하여 음의 길이를 조절하는 코드를 작성하시오.

int speakerpin =8; //스피커가 연결된 디지털핀 설정 int note[] = {2093,2349,2637,2793,3136,3520,3951,4186}; //도레미파솔라시도 void setup() { } void loop() { int elementCount = sizeof(note) / sizeof(int); for (int i=0; i < elementCount; i++) //note를 play { tone(speakerpin,note[i],500); delay(750); } }

▶ [실습 2. 부저 악보 연주]

 - 학교종 악보

- 학교종 연주 소스코드

- 복붙 후 코드 실행

#define C 262 // 도 #define D 294 // 레 #define E 330 // 미 #define F 349 // 파 #define G 392 // 솔 #define A 440 // 라 #define B 494 // 시 int piezoPin = 8; // 부저의 ⊕극을 아두이노 8번에 연결 int tempo[] = {200, 300, 200, 300, 200, 300, 200, 300, 200, 300, 200, 300, 200, 300, 200, 300, 200, 300, 200, 300, 200, 300, 200, 300}; // duration 옵션 값 설정 int notes[] = { G, G, A, A, G, G, E, G, G, E, E, D, G, G, A, A, G, G, E, G, E, D, E, C }; void setup() { pinMode (piezoPin, OUTPUT); } void loop() { for (int i = 0; i < 12; i++) { tone (piezoPin, notes[ i ], tempo[ i ]); delay (tempo[ i ]); } delay(100); // 멜로디 중간에 짧게 멈추는 용도 for (int i = 12; i < 25; i++) { tone (piezoPin, notes[ i ], tempo[ i ]); delay(tempo[ i ]); } }
[★ 도전과제 3 ★]
구글에서 여러분이 좋아하는 노래의 악보 검색 후, 부저로 연주하는 코드를 작성해 보세요.

- 예시) 생일축하 노래

▶ [실습 3. 전자 피아노 만들기]

- 아두이노 회로 

- 소스코드

- 코드 복붙후 /* 직접 코드를 작성해 주세요 */ 부분 직접 코딩 후 동작.

void setup() { pinMode(3, OUTPUT); // 디지털 3번핀을 출력모드로 설정. pinMode(6, INPUT); // 디지털 6번핀을 입력모드로 설정. pinMode(7, INPUT); // 디지털 7번핀을 입력모드로 설정. pinMode(8, INPUT); // 디지털 8번핀을 입력모드로 설정. /* 직접 코드를 작성해 주세요 */ // 디지털 9번핀을 입력모드로 설정. /* 직접 코드를 작성해 주세요 */ // 디지털 10번핀을 입력모드로 설정. /* 직접 코드를 작성해 주세요 */ // 디지털 11번핀을 입력모드로 설정. /* 직접 코드를 작성해 주세요 */ // 디지털 12번핀을 입력모드로 설정. /* 직접 코드를 작성해 주세요 */ // 디지털 13번핀을 입력모드로 설정. } void loop() { if (digitalRead(13) == HIGH) { // 만약 13번핀에 HIGH신호가 입력되면 tone (3, 262); // 3번핀에 주파수 신호 361.6을 출력 } /* 직접 코드를 작성해 주세요 */ // 그게아니라 12번에 HIGH 신호가 입력되면 /* 직접 코드를 작성해 주세요 */ // 3번핀에 주파수 신호 393.7을 출력 } else if (digitalRead(11) == HIGH) { // 이하 생략 tone (3, 329.6); } else if (digitalRead(10) == HIGH) { tone (3, 349.2); } else if (digitalRead(9) == HIGH) { tone (3, 392.0); } else if (digitalRead(8) == HIGH) { tone (3, 440.0); } else if (digitalRead(7) == HIGH) { tone (3, 493.9); } else if (digitalRead(6) == HIGH) { tone (3, 523.0); } else{ noTone(3); } }

Toplist

최신 우편물

태그