Arduino/피에조 부저
피에조 부저와 아두이노를 연결해서 여러 음을 출력하기
DesignatedRoom
2020. 10. 29. 17:37
부저와 아두이노의 하드웨어 연결
부저를 자세히 보면, 부저에 (+) 모양이 보인다.
이 (+)모양의 선을 아두이노의 9번핀으로 연결한다.
그 밑에 있는 검은 선은 아두이노의 GND에 연결한다.
부저를 통해 기본 음을 출력해보자.
음의 출력을 위해서는 주파수를 알고 있어야 한다.
소스 코드
#define SORI_PIN 9 // 부저의 핀으로 부저의 (+)를 아두이노의 9번핀으로 연결
// 부저의 주파수로 각 각 "도레미파솔라시도" 이다.
int um[8] = {262, 294, 330, 340, 392, 440, 494, 523};
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 0; i < 8; i++)
{
tone(SORI_PIN, um[i], 200); // 해당 주파수를 200은 길이
delay(500);
// noTone(8);
}
}
소방차 사이렌을 울려보자.
소스 코드
#define SORI_PIN 9 // 부저의 핀으로 부저의 (+)를 아두이노의 9번핀으로 연결
// 소방차 사이렌 만들기
void setup() {
// put your setup code here, to run once:
pinMode(SORI_PIN,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
for (int hz = 300; hz <= 750; hz++)
{
tone(SORI_PIN, hz);
delay(5);
}
for (int hz = 750; hz >= 300; hz--)
{
tone(SORI_PIN, hz);
delay(5);
}
}
이번에는 음악을 출력해보자.
우리가 출력할 음을 하나의 배열로 저장을 한다.
소스 코드
const int BUZZER_PIN = 9; // 부저의 (+)핀을 아두이노의 9번핀에 연결
const int C = 261; // 도
const int D = 294; // 레
const int E = 330; // 미
const int F = 340; // 파
const int G = 392; // 솔
const int A = 440; // 라
const int B = 494; // 시
const int HC = 523; // 도
// 음과 음의 길이를 표현하는 구조체
typedef struct
{
int t; // 음
unsigned long d; // 음의 길이
}TAD;
TAD music[]={
{G,100},{G,100},{A,100},{A,100},{G,100},{G,100},{E,200},
{G,100},{G,100},{E,100},{E,100},{D,200},
{G,100},{G,100},{A,100},{A,100},{G,100},{G,100},{E,200},
{D,100},{E,100},{C,200}
};
int musicLen; // music 배열의 길이
void setup() {
// put your setup code here, to run once:
musicLen = sizeof(music) / sizeof(TAD);
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 0; i < musicLen; i++)
{
tone(BUZZER_PIN,music[i].t);
delay(music[i].d * 5);
delay(30);
}
// 한 곡이 끝나고 1초 쉬자.
delay(1000);
}