부저(Buzzer): 두 판 사이의 차이
편집 요약 없음 |
|||
8번째 줄: | 8번째 줄: | ||
* buzzer | * buzzer | ||
* Arduino | * [[아두이노(Arduino)|아두이노 보드]] | ||
* [https://gongzipsa.com/shop/1699939289 점퍼케이블] | |||
* | |||
== '''연결''' == | == '''연결''' == | ||
160번째 줄: | 158번째 줄: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== '''고등학교 정보교과서(씨마스) 예제''' == | |||
=== P. 213 스스로 해결하기② (악보 연주) === | |||
본 예제는 교과서 내용에 따라 엔트리파이선을 사용합니다. | |||
[[아두이노 사용 방법]] 문서에서 엔트리파이선을 활용 방법을 참고하세요. | |||
[[파일:씨마스 p213 예제.png|654x654픽셀]] | |||
==== 연결 ==== | |||
[[파일:씨마스 p213 회로.png|622x622픽셀]] | |||
==== 예제 코드 ==== | |||
정확하지 않습니다. 수정 예정<syntaxhighlight lang="python3" line="1"> | |||
import Entry | |||
import Arduino | |||
i = 0 | |||
duration = 1 | |||
melody = ["E", "E", "E", "C", "E", "G", "G", "C", "G", "E", "A", "B", "B", "A", "G", "E", "G", "A", "F", "G", "E", "C", "D", "B"] | |||
octave = [4, 4, 4, 4, 4, 4, 3, 4, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3] | |||
noteDuration = [8, 8, 8, 16, 8, 8, 8, 8, 12, 8, 12, 12, 16, 8, 16, 16, 16, 8, 16, 16, 12, 16, 16, 16] | |||
def when_start(): | |||
while (i < 24): | |||
duration = (1 / noteDuration[i]) | |||
Arduino.tone(6, melody[i], octave[i], duration) | |||
Entry.wait_for_sec((duration * 1.3)) | |||
i = (i + 1) | |||
</syntaxhighlight> | |||
== '''구매링크''' == | == '''구매링크''' == | ||
[https://smartstore.naver.com/gongzipsa/products/7401232126 공집사몰] | [https://smartstore.naver.com/gongzipsa/products/7401232126 공집사몰] |
2023년 12월 9일 (토) 18:14 판
원하는 주파수 값을 인가하여 소리를 나게 하는 소자입니다.
3.3V ~ 5V 에서 작동합니다.
필요 하드웨어
연결
극성이 존재하기 때문에 +, - 단자를 잘 확인해야 합니다.
D11 대신 다른 디지털 핀에 연결해도 무방합니다.
buzzer | Arduino UNO |
+단자 | D11(변경 가능) |
-단자 | GND |
예제 코드
참고자료 : 옥타브 및 음계별 표준 주파수
예제1. 음계 테스트
#define buzzer 11
int numTones = 8;
//순서대로 (4옥도,4옥레,4옥미,4옥파,4옥솔,4옥라,4옥시,5옥도)
double tones[] = { 261.6256, 293.6648, 329.6276, 349.2282, 391.9954, 440, 493.8833, 523.2511 };
int cnt = 0;
void setup()
{
}
void loop()
{
if (cnt == 0)
{
for (int i = 0; i < numTones; i++)
{
//tone(핀번호, 주파수)로 사용합니다.
tone(buzzer, tones[i]);
delay(500);
}
//noTone함수를 사용하지 않을 시 이전에 입력된 tone함수가 계속 실행이 되므로
//noTone함수로 소리를 꺼줍니다.
noTone(buzzer);
delay(500);
cnt++;
}
else
{
}
}
예제2. 간단한 멜로디
#define buzzer 11
int numTones = 8;
double g_tones[] = { 195.9977, 220, 246.9417, 261.6256, 293.6648, 329.6276, 349.2282, 391.9954 };
//솔0,라1,시2,도3,레4,미5,파6,솔7
int cnt = 0;
void setup()
{
}
void loop()
{
if (cnt == 0)
{
tone(buzzer, g_tones[0]);
delay(250 * 2);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250 * 2);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250 * 2);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[6]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[1]);
delay(250 * 2);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250 * 2);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(250 * 2);
noTone(buzzer);
tone(buzzer, g_tones[1]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(125 * 2);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250 * 4);
noTone(buzzer);
cnt++;
}else
{
}
}
고등학교 정보교과서(씨마스) 예제
P. 213 스스로 해결하기② (악보 연주)
본 예제는 교과서 내용에 따라 엔트리파이선을 사용합니다.
아두이노 사용 방법 문서에서 엔트리파이선을 활용 방법을 참고하세요.
연결
예제 코드
정확하지 않습니다. 수정 예정
import Entry
import Arduino
i = 0
duration = 1
melody = ["E", "E", "E", "C", "E", "G", "G", "C", "G", "E", "A", "B", "B", "A", "G", "E", "G", "A", "F", "G", "E", "C", "D", "B"]
octave = [4, 4, 4, 4, 4, 4, 3, 4, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3]
noteDuration = [8, 8, 8, 16, 8, 8, 8, 8, 12, 8, 12, 12, 16, 8, 16, 16, 16, 8, 16, 16, 12, 16, 16, 16]
def when_start():
while (i < 24):
duration = (1 / noteDuration[i])
Arduino.tone(6, melody[i], octave[i], duration)
Entry.wait_for_sec((duration * 1.3))
i = (i + 1)