갈릴레오 보드에서 기본 예제들을 이용하여 테스트를 수행하였다.
1. LED Control
지난 번 시작하기 예제에서 마지막 Blink 예제가 바로 13번 핀을 Output 모드로 설정하여 on-board 에 있는 LED를 컨트롤 한다.
2. 진동센서 Control
진동 센서를 이용하여 미디출력 테스트를 해 보았다.
기본 도음의 주파수는 261.63 Hz 인데, 3.822 msec 주기로 진동센서를 High Low 를 설정해주면 된다.
즉
DigitalWrite(pin, High)
delayMicroseconds(3882)
DigitalWrite(pin, Low)
delayMicroseconds(3882)
를 일정 시간 동안 반복하면 도 음을 들을 수 있다.
즉 아래와 같이 1~8 의 key 값을 도 ~ 높은도로, tempo는 1을 16분음표로 설정하는 note 함수를 만들었다.
-
/*
-
tempo
-
1 : 1/16
-
2 : 1/8
-
3 : 1/8 + 1/16
-
4 : 1/4
-
8 : 1/2
-
*/
-
void note(int key, int tempo)
-
{
-
long time = 1000000/8*tempo;
-
long dur;
-
-
switch(key)
-
{
-
case 1: dur = 3822; break; // do
-
case 2: dur = 3405; break; // re
-
case 3: dur = 3034; break; // mi
-
case 4: dur = 2863; break; // fa
-
case 5: dur = 2551; break; // sol
-
case 6: dur = 2273; break; // ra
-
case 7: dur = 2025; break; // si
-
case 8: dur = 1910; break; // do
-
default: dur = 3822; break;
-
}
-
for(long i=0; i<time; i=i+dur*2)
-
{
-
digitalWrite(vib, HIGH);
-
delayMicroseconds(dur);
-
digitalWrite(vib, LOW);
-
delayMicroseconds(dur);
-
}
-
}
이 함수를 이용하여 4분음표 도레미파솔라시도 를 출력하려면 아래와 같이 코딩하면 된다.
note(1, 4);
note(2, 4);
note(3, 4);
note(4, 4);
note(5, 4);
note(6, 4);
note(7, 4);
note(8, 4);
학창시절에 불렀던 도레미송을 기본8개의 음으로 재생해 보았다.
스위치를 연결하여 스위치가 눌러졌을 경우 도레미 송을 끝까지 재생하는 코드 이다.
-
// Pin 12 has an Vibrator connected on most Arduino boards.
-
int vib = 12;
-
int pushButton = 2;
-
-
// the setup routine runs once when you press reset:
-
void setup() {
-
// initialize the digital pin as an output.
-
pinMode(vib, OUTPUT);
-
pinMode(pushButton, INPUT);
-
}
-
-
void loop() {
-
if(digitalRead(pushButton)==1)
-
{
-
note(1, 6);
-
note(2, 2);
-
note(3, 6);
-
note(1, 2);
-
note(3, 4);
-
note(1, 4);
-
note(3, 8);
-
-
note(2, 6);
-
note(3, 2);
-
note(4, 2);
-
note(4, 2);
-
note(3, 2);
-
note(2, 2);
-
note(4, 12);
-
delay(500);
-
-
note(3, 6);
-
note(4, 2);
-
note(5, 6);
-
note(3, 2);
-
note(5, 4);
-
note(3, 4);
-
note(5, 8);
-
-
note(4, 6);
-
note(5, 2);
-
note(6, 2);
-
note(6, 2);
-
note(5, 2);
-
note(4, 2);
-
note(6, 12);
-
delay(500);
-
-
note(5, 6);
-
note(1, 2);
-
note(2, 2);
-
note(3, 2);
-
note(4, 2);
-
note(5, 2);
-
note(6, 12);
-
delay(500);
-
-
note(6, 6);
-
note(2, 2);
-
note(3, 2);
-
note(4, 2);
-
note(5, 2);
-
note(6, 2);
-
note(7, 12);
-
delay(500);
-
-
note(7, 6);
-
note(3, 2);
-
note(4, 2);
-
note(5, 2);
-
note(6, 2);
-
note(7, 2);
-
note(8, 12);
-
delay(500);
-
-
note(8, 2);
-
note(7, 2);
-
note(6, 4);
-
note(4, 4);
-
note(7, 4);
-
note(5, 4);
-
note(8, 12);
-
delay(500);
-
-
note(1, 2);
-
note(2, 2);
-
note(3, 2);
-
note(4, 2);
-
note(5, 2);
-
note(6, 2);
-
note(7, 2);
-
note(8, 4);
-
note(5, 4);
-
note(8, 4);
-
delay(500);
-
}
-
-
delay(100);
-
}