융합인재 수업(STEAM/프로젝트)

아두이노 디지털 피아노 만들기

종보샘 2018. 11. 7. 14:33

동아리 활동 시간에 아두이노 디지털 피아노를 만들어 보았다.

필요한 재료는 다음과 같다.

아두이노*1

브레드보드*1

점퍼선(female)*20

버튼스위치*8

스피커(피에조)*1


회로는 다음과 같이 연결한다.


코드는 다음과 같다.



void setup() {

pinMode(5, OUTPUT); // 디지털 5번핀을 출력모드로 설정.

pinMode(6, INPUT); // 디지털 6번핀을 입력모드로 설정.

pinMode(7, INPUT); // 디지털 7번핀을 입력모드로 설정.

pinMode(8, INPUT); // 디지털 8번핀을 입력모드로 설정.

pinMode(9, INPUT); // 디지털 9번핀을 입력모드로 설정.

pinMode(10, INPUT); // 디지털 10번핀을 입력모드로 설정.

pinMode(11, INPUT); // 디지털 11번핀을 입력모드로 설정.

pinMode(12, INPUT); // 디지털 12번핀을 입력모드로 설정.

pinMode(13, INPUT); // 디지털 13번핀을 입력모드로 설정.

}


void loop() {

if (digitalRead(13) == HIGH) { // 만약 13번핀에 HIGH신호가 입력되면

tone (5, 523.3); // 5번핀에 주파수 신호 361.6을 출력

}

else if (digitalRead(12) == HIGH) { // 그게아니라 12번에 HIGH가 입력되면

tone (5, 493.9); // 5번핀에 주파수 신호 393.7을 출력

}

else if (digitalRead(11) == HIGH) { // 이하 생략

tone (5, 440.0);

}

else if (digitalRead(10) == HIGH) {

tone (5, 392.0);

}

else if (digitalRead(9) == HIGH) {

tone (5, 349.2);

}

else if (digitalRead(8) == HIGH) {

tone (5, 329.6);

}

else if (digitalRead(7) == HIGH) {

tone (5, 290.1);

}

else if (digitalRead(6) == HIGH) {

tone (5, 261.6);

}

else {

noTone(5);

}

}





이 동영상은 동아리 활동시간에 학생에게 연주를 시켜서 촬영하였습니다.



tone 과 관련된 코드 설명은 다음과 같다.

https://www.arduino.cc/reference/ko/language/functions/advanced-io/tone/

tone()

[고급 입출력]

설명

핀에 특정 주파수(50% 듀티 사이클)의 구형파를 발생시킵니다. 지속 시간을 정할 수 있으며, 따로 정하지 않는다면 noTone()을 부를 때까지 구형파가 지속됩니다. 핀을 피에조 버저 또는 스피커에 연결하여 tone을 연주할 수 있습니다.

한번에 한 tone만 발생시킬 수 있습니다. 다른 핀에서 tone이 이미 연주되고 있으면, tone()을 새로 불러도 아무 일도 일어나지 않을 것입니다. 같은 핀에서 tone이 연주되고 있으면, 주파수가 새로 설정될 것입니다.

tone() 함수의 사용은 (Mega 이외의 보드에서) 3번과 11번 핀에서의 PWM 출력을 방해할 것입니다. 31HZ보다 낮은 tone을 발생시키는 것은 불가능합니다. 기술적인 세부 사항은, Brett Hagman’s notes를 보십시오.

문법

tone(pin, frequency)

tone(pin, frequency, duration)

매개변수

pin: tone을 발생시킬 핀

frequency: tone의 주파수 (Hz 단위) - unsigned int

duration (옵션) : tone 의 지속 시간 (밀리초 단위) - unsigned long

반환

없음

주의와 경고

여러 핀에서 다른 높이의 음을 내려면, 다음 핀에 대해 tone() 을 호출하기 전에 noTone() 을 호출해야 합니다.


여기서 사용된 주파수는 표준음계 주파수를 따라서 하면 된다.

그래서 코드를 보면 5옥타브의 도에서부터 4옥타브의 도까지 되어 있는 것을 확인할 수 있다.