코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
아두이노 수동부저모듈 소스에 대해 질문합니다.
임창준 | 2016-12-06
|
|
---|---|
아두이노를 입문해서 공부하고 있는데, 오픈소스를 보고 따라하는 수준이라 소스를 이해 하려고 소스에 주석을 달며 공부하고있습니다.
아두이노 떳다떳다 비행기 코드를 해석하려고 하는데 어려워서 질문을 남깁니다. 주석을 달았는데 부족한부분은 수정해주시고 없는 부분은 설명 부탁드립니다.
< 수동 부저 센서>
int Buzzer = 9; // 핀 번호 int length = 25; // 음의 개수 char notes[] = "edcdeeedddeggedcdeeeddedc"; //음 연주 순서 int beats[] = {3,1,2,2,2,2,4,2,2,4,2,2,4,3,1,2,2,2,2,4,2,2,3,1,8}; // 음의 길이 1/16 기준 int tempo = 100; // 연주속도
void playTone(int tone, int duration) // 플레이 톤함수(tone, duration) 톤과 시간을 입력받음 { for (long i = 0; i < duration * 1000L; i += tone * 2) // i는 0부터 i가 연주시간*1000보다 커질때까지 // i = i + tone *2
{ digitalWrite(Buzzer, HIGH); //디지털핀(8)의 출력은 HIGH delayMicroseconds(tone); // 마이크로초 동안 딜레이 (tone)만큼 digitalWrite(Buzzer, LOW); // 디지털핀 8의 출력은 LOW delayMicroseconds(tone); // 마이크로초 동안 딜레이 (tone)만큼 } } void playNote(char note, int duration) { // 플레이 톤함수(tone, duration) 톤과 시간을 입력받음 char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; // 도 레 미 파 솔 라 시 도 순서입니다.
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // tone 함수는 음을 연주할 수 있습니다. //도 = 956, 레 = 1014 ~ 높은 도 = 1915로 역순입니다.
for (int i = 0; i < 8; i++) { if (names[i] == note) { playTone(tones[i], duration); } } } void setup() { pinMode(Buzzer, OUTPUT); } void loop() { for (int i = 0; i < length; i++) { if (notes[i] == ' ') { delay(beats[i] * tempo); } else { playNote(notes[i], beats[i] * tempo); } delay(tempo / 2); } } |
|
이전글 | 브레드 보드 -버스, +버스 활용법 | 2016-12-04 |
다음글 | 아두이노 온/습도 센서 질문합니다. | 2016-12-06 |