| 電子種別 | 電子部品 | 個数 |
| マイコン | Elegoo UNO R3 マイコンボード | 1 |
| USBケーブル | 1 | |
| 能動 | アクティブブザー | 1 |
| パッシブブザー | 1 | |
| 機構 | プッシュボタン | 3 |
| ブレッドボード | 1 | |
| ジャンプワイヤ(赤)[オス-メス] | 1 | |
| ジャンプワイヤ(黒)[オス-メス] | 1 | |
| ジャンプワイヤ(青)[オス-オス] | 1 | |
| ジャンプワイヤ(黄)[オス-オス] | 1 | |
| ジャンプワイヤ(緑)[オス-オス] | 1 | |
| ジャンプワイヤ(黒)[オス-オス] | 4 |
- 電子ブザーはDC電源で集積回路を備えている。
- PCやプリンタ、アラームや電子玩具、車載電子機器、電話機、タイマ及び音声デバイス用の電子製品に広く使用されている
- ピンを上に向けて、黒色のテープで囲まれているのがアクティブ(能動的)ブザー、緑色の回路基板を持つのがパッシブ(受動的)ブザー
- アクティブブザーは発振器内臓で、決まった直流電圧を掛けると決まった音程のブザー音(BEEP音)が鳴る。また周波数(2k~5k)にて音程を変えたり、メロディーを流すことも可能
- パッシブブザーは周波数にて音程を変えたり、メロディーを流すことができる
- 【pitches】音階の周波数を宣言
/*****************************************/
/* 【 Elegoo: 6-7 】 ブザー */
/* 電子音・音階・メロディを鳴らす */
/*****************************************/
// pitchesライブラリ:音階の周波数(Hz)を宣言
#include "pitches.h"
// ピンの定義
#define BUZZER 5 // D5 : BUZZER
#define SW_BEEP 7 // D7 : Switch 電子音(BEEP)
#define SW_TONE 8 // D8 : Switch 音階
#define SW_MELODY 9 // D9 : Switch メロディ
/*-------------------------*/
/* 音階 */
/* "pitches.h"より */
/*-------------------------*/
int aryFrequency[] = {
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
};
/*-------------------------*/
/* メロディ : きらきらぼし */
/* "pitches.h"より */
/*-------------------------*/
int aryMelody[] = {
NOTE_C4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4,
NOTE_F4, NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_C4,
NOTE_G4, NOTE_G4, NOTE_F4, NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4,
NOTE_G4, NOTE_G4, NOTE_F4, NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4,
NOTE_C4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4,
NOTE_F4, NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_C4
};
// 音の長さ
int aryMelodyDurations[] = {
4,4,4,4,4,4,2,
4,4,4,4,4,4,2,
4,4,4,4,4,4,2,
4,4,4,4,4,4,2,
4,4,4,4,4,4,2,
4,4,4,4,4,4,2
};
/*-------------------------*/
/* 音階総数 */
/*-------------------------*/
int noteNum;
/*********/
/* setup */
/*********/
void setup(){
// pinの設定
pinMode( BUZZER, OUTPUT ); // BUZZER : 出力用
pinMode( SW_BEEP, INPUT_PULLUP ); // Switch : プルアップ時に発動
pinMode( SW_TONE, INPUT_PULLUP ); // Switch : プルアップ時に発動
pinMode( SW_MELODY, INPUT_PULLUP ); // Switch : プルアップ時に発動
}
/********/
/* loop */
/********/
void loop(){
// --------------------------------------------------
// Switch 電子音(BEEP) ==> BEEP音 出力
// --------------------------------------------------
if( digitalRead( SW_BEEP ) == LOW ) outputBeep();
// --------------------------------------------------
// Switch 音階 ==> 音階 出力
// --------------------------------------------------
if( digitalRead( SW_TONE ) == LOW ) outputTone();
// --------------------------------------------------
// Switch メロディ ==> メロディ 出力
// --------------------------------------------------
if( digitalRead( SW_MELODY ) == LOW ) outputMelody();
}
/********************************/
/* BEEP音 出力 */
/********************************/
void outputBeep(){
int i, j;
// --------------------------------------------------
// 音の長さ
// --------------------------------------------------
for( j = 0; j <= 600; j += 150 ){
// --------------------------------------------------
// 演奏回数
// --------------------------------------------------
for( i = 0; i < 5; i++ ){
digitalWrite( BUZZER, HIGH );
delay( j );
digitalWrite( BUZZER, LOW );
delay( j );
}
}
}
/********************************/
/* 音階 出力 */
/********************************/
void outputTone(){
// --------------------------------------------------
// 音階総数の設定
// --------------------------------------------------
noteNum = sizeof aryFrequency / sizeof aryFrequency[0];
// --------------------------------------------------
// 音階数の周波数を出力する
// --------------------------------------------------
for( int i = 0; i < noteNum; i++ ){
tone( BUZZER, aryFrequency[i] );
delay( 500 ); // 演奏速度
}
// --------------------------------------------------
// 周波数の出力を停止する
// --------------------------------------------------
noTone( BUZZER );
delay( 500 );
}
/********************************/
/* メロディ 出力 */
/********************************/
void outputMelody(){
// --------------------------------------------------
// 音階総数の設定
// --------------------------------------------------
noteNum = sizeof aryMelody / sizeof aryMelody[0];
// --------------------------------------------------
// 音階数の周波数を音の長さだけ出力する
// --------------------------------------------------
for( int i = 0; i < noteNum; i++){
tone( BUZZER, aryMelody[i],( 1000 / aryMelodyDurations[i] ) );
delay( 500 ); //演奏速度
}
// --------------------------------------------------
// 周波数の出力を停止する
// --------------------------------------------------
noTone( BUZZER );
delay( 500 );
}
※ 発振器が内臓されていないため、
電圧を掛けてもブザー音(BEEP音)は鳴らない
電圧を掛けてもブザー音(BEEP音)は鳴らない


0 件のコメント:
コメントを投稿