공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
피에조 부저에 대하여
파이에조 부저는 소리, 비프음 또는 멜로디를 생성하는 데 사용됩니다.
시장에서 사용할 수 있는 3V-24V 액티브 부저는 3-5V 액티브 부저 기능과 고전압 부저 기능(12V 이상)을 겸비하고 있습니다. 아두이노 핀에 직접 연결할 경우, 이 부저는 표준 소리를 내어 키패드 소리와 같은 응용 프로그램에 적합합니다. 반면, 릴레이를 통해 고전압 소스에 연결할 경우 큰 소리를 내어 경고 신호로 이상적입니다.
피에조 부저 핀배열
Piezo Buzzer는 보통 두 개의 핀을 가지고 있습니다:
음극(-) 핀은 GND(0V)에 연결되어야 합니다.
양극(+) 핀은 ESP8266으로부터 제어 신호를 받습니다(직접적으로, 혹은 릴레이를 통해 간접적으로).
#include"pitches.h"constint BUZZZER_PIN = D8; // ESP8266 핀이 파이조 부저에 연결되어 있음// notes in the melody:int melody[] = {NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4};// note durations: 4 = quarter note, 8 = eighth note, etc.:int noteDurations[] = { 4, 8, 8, 4, 4, 4, 4, 4};voidsetup() {// iterate over the notes of the melody:for (int thisNote = 0; thisNote < 8; thisNote++) {// to calculate the note duration, take one second divided by the note type.//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.int noteDuration = 1000 / noteDurations[thisNote];tone(BUZZZER_PIN, melody[thisNote], noteDuration);// to distinguish the notes, set a minimum time between them.// The note's duration + 30% seems to work well:int pauseBetweenNotes = noteDuration * 1.30;delay(pauseBetweenNotes);// stop the tone playing:noTone(BUZZZER_PIN); }}voidloop() {// no need to repeat the melody.}
Arduino IDE에서 Upload 버튼을 클릭하여 코드를 컴파일하고 ESP8266 보드에 업로드하세요.
멜로디를 들어보세요.
ESP8266 코드 수정하기
이제, "징글 벨" 노래를 재생하기 위해 코드를 수정할 것입니다.
두 배열의 값을 변경해야 합니다: int melody[]와 int noteDurations[].
/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-piezo-buzzer */#include"pitches.h"constint BUZZZER_PIN = D8; // ESP8266 핀이 파이조 부저에 연결됨// 멜로디의 노트들:int melody[] = {NOTE_E5, NOTE_E5, NOTE_E5,NOTE_E5, NOTE_E5, NOTE_E5,NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5,NOTE_E5,NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5,NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5,NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5,NOTE_D5, NOTE_G5};// 노트 지속 시간: 4 = 4분 음표, 8 = 8분 음표 등, 템포라고도 함:int noteDurations[] = { 8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 4, 4};voidsetup() {// 멜로디의 노트들을 반복한다:intsize = sizeof(noteDurations) / sizeof(int);for (int thisNote = 0; thisNote < size; thisNote++) {// 노트 지속 시간을 계산하려면, 노트 유형으로 1초를 나눈다.//예: 4분 음표 = 1000 / 4, 8분 음표 = 1000/8 등.int noteDuration = 1000 / noteDurations[thisNote];tone(BUZZZER_PIN, melody[thisNote], noteDuration);// 노트를 구별하기 위해, 그들 사이에 최소한의 시간을 설정한다.// 노트의 지속 시간 + 30%가 잘 작동하는 것으로 보인다:int pauseBetweenNotes = noteDuration * 1.30;delay(pauseBetweenNotes);// 톤 재생을 멈춘다:noTone(BUZZZER_PIN); }}voidloop() {// 멜로디를 반복할 필요가 없다.}
※ 주의:
위의 코드는 delay() 함수를 사용합니다. 이것은 멜로디가 재생되는 동안 다른 코드가 차단되도록 합니다. 이를 우회하기 위해, ezBuzzer 라이브러리를 대신 사용할 수 있습니다. 이 라이브러리는 버저가 다른 코드를 차단하지 않고 비프 소리를 내거나 멜로디를 재생할 수 있도록 특별히 설계되었습니다.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
도전하세요
피에조 부저를 사용하여 좋아하는 노래를 연주하세요.
귀중한 물건에 누군가가 접근하면 자동으로 알람이 울리도록 설정하세요. 참조: ESP8266 - 모션 센서에서 더 자세한 정보를 확인하세요.