다리 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(리타르단토)로 출력하시오.
- 배열의 구조
메모리 구조
- 소스 코드 : 아래 코드를 복붙 한뒤, 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);
}
}
'메이커 프로젝트 > 아두이노 +' 카테고리의 다른 글
아두이노 블루투스 제어 (0) | 2021.09.03 |
---|---|
아두이노 DC 모터 제어하기 (0) | 2021.09.03 |
[ 모듈 1-5 ] 아두이노 초음파 센서 제어하기(feat. processing 아두이노 시각화) (2) | 2020.09.22 |
[모듈 1-4] 아두이노 시리얼통신 제어(Feat. 로봇팔 만들기) (3) | 2020.09.08 |
[모듈 1-3] 아두이노 서보모터 제어하기 (feat. For 구문) (19) | 2020.09.06 |