이번 시간에는 아두이노 보드와 부저(스피커)를 이용하여 멜로디를 만들어 보자. 부저는 전기적으로 연결된 전기코일이 작은 떨림판에 붙었다 떨어지면서 소리를 내는 부품이다. 붙거나 떨어지는 시간을 조정하면 소리가 난다. 이 간격이 빠르냐 느리냐에 따라 다양한 소리가 나는데 이것을 적당하게 조작하면 멜로디도 연주 할 수 있다. 먼저 삐~ 소리가 나는지 확인하고, 두번째는 도레미파솔라시도 계이름 소리가 나는지 알아 볼 것이다. 그리고 마지막으로 간단한 동요 멜로디를 연주해 보고 아두이노 보드와 스피커 하나로 멋진 연주도 가능하다는 것을 보일 것이다.
위의 그림과 같이 아두이노 우노 보드의 5번 핀을 스피커의 한선에 연결하고 또 GND에서 한선을 뽑아서 스피커의 다른쪽 선에 연결한다. 그리고 다음과 같이 스케치 프로그램을 작성해서 소리가 나는지 부터 확인한다.
void setup() {
pinMode(5, OUTPUT); //5번핀을 출력으로 설정.
digitalWrite(5, HIGH); //5번핀에 5V를 출력한다.
tone(5, 262); //도음을 낸다.
delay(3000); //3초 정도의 지연시간을 준다.
noTone(5); //음을 소거한다.
digitalWrite(5, LOW); //5번핀에 0V를 출력한다.
}
void loop() {
}
소리가 나는 것을 확인 했다면 '도레미파솔라시도' 소리가 나게 해 보자. 아래 프로그램을 보면 tone이란 명령어를 사용하고 있는데 소리를 내라는 명령이다. 5번 출력핀 옆에 숫자가 표시되어 있는 것을 볼 수 있는데 그 숫자가 음의 높이를 나타내는 숫자이다. 262는 도, 294는 레, 330은 미, 349는 파, 392는 솔, 440은 라, 494는 시, 523은 높은도를 나타낸다.
void setup() {
pinMode(5, OUTPUT);
digitalWrite(5, HIGH);
tone(5, 262); //도음 출력
delay(200);
tone(5, 294); //레
delay(200);
tone(5, 330); //미
delay(200);
tone(5, 349); //파
delay(200);
tone(5, 392); //솔
delay(200);
tone(5, 440); //라
delay(200);
tone(5, 494); //시
delay(200);
tone(5,523); //도
delay(200);
noTone(5);
digitalWrite(5, LOW);
}
void loop() {
}
아래 프로그램은 위의 프로그램을 for 문을 이용해서 간단하게 나타낸 것이다.
int nTones[] = {262, 294, 330, 349, 392, 440, 494, 523}; //도레미파솔라시도
void setup() {
int nMax = 8;
for (int i = 0; i < nMax; i++)
{
tone(5, nTones[i]); //0부터 순서대로 들어간다.
delay(200); //0.2초의 지연시간을 준다.
}
noTone(5);
}
void loop() {
}
도레미파솔라시도 소리가 나는 것을 확인했다면 이제 간단한 멜로디를 연주해 보자.
int nTones[] = {262, 294, 330, 349, 392, 440, 494, 523};
int nMusic[] = {0,2,4,0,2,4,5,5,5,4,4,4,3,3,3,2,2,2,1,1,1,0,0,0}; //멜로디의 음높이를 나타낸다. 도,미,솔,도,미,솔,라....
//음의 길이는 5,5,5등으로 같은 음을 반복해서 겹쳐 나타냄.
void setup() {
int nMax = sizeof(nMusic)/sizeof(int); //음이 몇개인지 확인한다. 세어보면 24개이다.
for(int i = 0; i < nMax; i++)
{
tone(5, nTones[nMusic[i]]); //음높이에 맞는 소리를 출력한다.
delay(200); //한음당 0.2초의 지연시간을 준다.
}
noTone(5);
}
void loop() {
}
이렇게 얼마든지 우리가 원하는 노래를 연주할 수 있다.
'SW 배움터' 카테고리의 다른 글
크롬에서 Flash 오류 문제 해결 (0) | 2017.09.07 |
---|---|
MS의 새 웹 브라우저 엣지에서 홈버튼 불러오기 (0) | 2017.08.23 |
유튜브 다운로드 프로그램 소개 (1) | 2017.07.05 |
IE와 Chrome의 북마크 내보내기 비교 (0) | 2017.06.23 |
프로세싱 언어 맛보기 (0) | 2017.05.11 |