PSC #define BUZZER_CCR TIM1->CCR1 extern uint8_t songNote_1[]; // 똑같아요 extern uint8_t songLength_1[]; extern uint8_t songNote_1_Len; extern uint8_t songNote_2[]; // 엘리제를 위하여 extern uint8_t songLength_2[]; extern uint8_t songNote_2_Len; extern uint8_t songNote_3[]; // 이웃집 토토로 OST 산책? extern uint8_t songLength_3[]; extern uint8_t songNote_3_Len; extern uint8_t songNote_4[]; // 하울의 움직이는 성 OST 인생의 회전목마? extern uint8_t songLength_4[]; extern uint8_t songNote_4_Len; void buzzerStart(uint8_t index, uint16_t volumn); #endif /* INC_BUZZER_H_ */"> PSC #define BUZZER_CCR TIM1->CCR1 extern uint8_t songNote_1[]; // 똑같아요 extern uint8_t songLength_1[]; extern uint8_t songNote_1_Len; extern uint8_t songNote_2[]; // 엘리제를 위하여 extern uint8_t songLength_2[]; extern uint8_t songNote_2_Len; extern uint8_t songNote_3[]; // 이웃집 토토로 OST 산책? extern uint8_t songLength_3[]; extern uint8_t songNote_3_Len; extern uint8_t songNote_4[]; // 하울의 움직이는 성 OST 인생의 회전목마? extern uint8_t songLength_4[]; extern uint8_t songNote_4_Len; void buzzerStart(uint8_t index, uint16_t volumn); #endif /* INC_BUZZER_H_ */"> PSC #define BUZZER_CCR TIM1->CCR1 extern uint8_t songNote_1[]; // 똑같아요 extern uint8_t songLength_1[]; extern uint8_t songNote_1_Len; extern uint8_t songNote_2[]; // 엘리제를 위하여 extern uint8_t songLength_2[]; extern uint8_t songNote_2_Len; extern uint8_t songNote_3[]; // 이웃집 토토로 OST 산책? extern uint8_t songLength_3[]; extern uint8_t songNote_3_Len; extern uint8_t songNote_4[]; // 하울의 움직이는 성 OST 인생의 회전목마? extern uint8_t songLength_4[]; extern uint8_t songNote_4_Len; void buzzerStart(uint8_t index, uint16_t volumn); #endif /* INC_BUZZER_H_ */">
#ifndef INC_BUZZER_H_
#define INC_BUZZER_H_
#include "main.h"
#define BUZZER_PSC TIM1->PSC
#define BUZZER_CCR TIM1->CCR1
extern uint8_t songNote_1[]; // 똑같아요
extern uint8_t songLength_1[];
extern uint8_t songNote_1_Len;
extern uint8_t songNote_2[]; // 엘리제를 위하여
extern uint8_t songLength_2[];
extern uint8_t songNote_2_Len;
extern uint8_t songNote_3[]; // 이웃집 토토로 OST 산책?
extern uint8_t songLength_3[];
extern uint8_t songNote_3_Len;
extern uint8_t songNote_4[]; // 하울의 움직이는 성 OST 인생의 회전목마?
extern uint8_t songLength_4[];
extern uint8_t songNote_4_Len;
void buzzerStart(uint8_t index, uint16_t volumn);
#endif /* INC_BUZZER_H_ */
// buzzer.c
#include "buzzer.h"
// 음계 도 C, C#, 레 D, D#, 미 E, 파 F, F#, 솔 G, G#, 라 A, A#, 시 B
uint16_t buzzerNote[] = {
// 2옥타브 - 0도, 1도#, 2레, 3레#, 4미, 5파, 6파#, 7솔, 8솔#, 9라, 10라#, 11시
1529, 1445, 1362, 1287, 1213, 1145, 1082, 1021, 963, 909, 858, 810,
// 3옥타브 - 12도, 13도#, 14레, 15레#, 16미, 17파, 18파#, 19솔, 20솔#, 21라, 22라#, 23시
764, 722, 681, 643, 606, 572, 540, 510, 481, 454, 429, 405,
// 4옥타브 - 24도, 25도#, 26레, 27레#, 28미, 29파, 30파#, 31솔, 32솔#, 33라, 34라#, 35시
382, 360, 340, 321, 303, 286, 270, 255, 240, 227, 214, 202,
// 5옥타브 - 36도, 37도#, 38레, 39레#, 40미, 41파, 42파#, 43솔, 44솔#, 45라, 46라#, 47시
191, 180, 170, 160, 151, 143, 135, 127, 120, 113, 107, 101,
// 6옥타브 - 48도, 49도#, 50레, 51레#, 52미, 53파, 54파#, 55솔, 56솔#, 57라, 58라#, 59시
95, 90, 85, 80, 75, 71, 67, 63, 60, 56, 53, 50
};
void buzzerStart(uint8_t index, uint16_t volumn) {
BUZZER_PSC = buzzerNote[index];
BUZZER_CCR = volumn;
}
// 엘리제를 위하여
uint8_t songNote_2[] = {
28, 27, 28, 27, 28, 23, 26, 24, 21, 12, 16, 21, 23, 16, 20, 23, 24,
16, 28, 27, 28, 27, 28, 23, 26, 24, 21, 12, 16, 21, 23, 16, 24, 23, 21,
23, 24, 26, 28, 19, 29, 28, 26, 17, 28, 26, 24, 16, 26, 24, 23,
28, 16, 28, 28, 40, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, 23, 26, 24, 21,
12, 16, 21, 23, 16, 20, 23, 24
};
uint8_t songLength_2[] = {
4, 4, 4, 4, 4, 4, 4, 4, 12, 4, 4, 4, 12, 4, 4, 4, 12,
4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 4, 4, 4, 12, 4, 4, 4, 12,
4, 4, 4, 12, 4, 4, 4, 12, 4, 4, 4, 12, 4, 4, 4, 12,
4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12,
4, 4, 4, 12, 4, 4, 4, 12
};
uint8_t songNote_2_Len = sizeof(songNote_2) / sizeof(songNote_2[0]);
// 하울의 움직이는 성 OST 인생의 회전목마?
uint8_t songNote_4[] = {
// Intro
28, 26, 24, 28, 31, 29, 28, 26, 24, 28, 26, 23, 24, 28, 26, 24,
// A Theme
21, 23, 24, 26, 28, 29, 28, 26, 24, 23, 24, 28, 31, 29, 28, 26, 24,
// A Repeat
21, 23, 24, 26, 28, 29, 28, 26, 24, 23, 24, 28, 29, 28, 26, 24,
// Bridge (전개부)
24, 26, 28, 29, 31, 33, 31, 29, 28, 26, 28, 31, 29, 26, 24,
// C Theme (전조 후)
24, 26, 28, 31, 33, 35, 36, 35, 33, 31, 28, 29, 28, 26, 24,
// Outro
21, 23, 24, 26, 28, 26, 24, 23, 21
};
uint8_t songLength_4[] = {
// Intro
8, 8, 4, 8, 8, 4, 8, 8, 4, 8, 8, 4, 8, 8, 4, 2,
// A Theme
8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 4, 4, 8, 8, 4, 4, 2,
// A Repeat
8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 4, 4, 8, 8, 4, 2,
// Bridge
8, 8, 8, 8, 4, 4, 8, 8, 4, 4, 8, 8, 4, 4, 2,
// C Theme
8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 4, 8, 8, 4, 2,
// Outro
8, 8, 8, 8, 4, 4, 4, 4, 1
};
uint8_t songNote_4_Len = sizeof(songNote_4) / sizeof(songNote_4[0]);