\ Amazon 冬支度セール 11/4(月)~11/12/(火) /

Arduino 入門 Lesson 06 【電子ブザー編】

Arduino-lesson06 Arduino入門編
記事に広告(アフィリエイト広告)が含まれています。
スポンサーリンク
子供と一緒に始める マイコンプログラム
Arduino 入門
Lesson 06
【電子ブザー編】

「Arduino」を使ったマイコンのプログラミングを子供と一緒に学習するブログ。

少しずつ、子供と一緒に楽しみながら気長にアップしてく予定です。

本日はLesson 06 【電子ブザー編】です。
※アクティブブザーとも呼ばれます。

 

Arduino入門編の解説にて使用しているArduinoは互換品です。

互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。

 

Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)

 

 

スポンサーリンク

はじめに

DC(直流)電圧で動く電子ブザー(アクティブブザー)は、コンピュータ、プリンタ、複写機、電子玩具、タイマなど様々な機器の電子音源として使われています。

Lesson 06では、この電子ブザー(アクティブブザー)を利用ます。

電子ブザー(アクティブブザー)は、電圧を掛けるだけで決まった音程のブザー音を出すことができます。

 

本記事ではdigitalWrite関数、delay関数を利用します。

その関数を利用することで、周期的にブザーのON時間、OFF時間を制御し音が変わることを楽しみます。

ブザーのON/OFFをPWM制御することによって音を変えていると考えても良いかもしれません。

PWM制御については下記にて詳細を説明しています。

 

Lesson 06目標

電子ブザー(アクティブブザー)にUNOから電源を供給します。

上記により電子ブザー(アクティブスイッチ)が「オン」「オフ」し音を発することを確認します。

また、「オン」「オフ」の周期を変え、発する音が変化することを理解する。

これが本Lessonの一番の目標です。

 

電子ブザー(アクティブスイッチ)は、電圧を与えている間、一定の音程を発するだけと思っていませんか。

実は、オン、オフの時間を変えることで音に変化を出すことが可能です。

ぜひ、試してみてほしいです。

今回も楽しんで学習しましょう。

 

準備

今回のLessonの準備に取り掛かりましょう。

今回は部品も少なく、すぐに実践に移ることができるLessonです。

 

必要なもの

 

今回はブレッドボードを使いません。

使ってももちろんできます。

ただし、M-F Jumper wireを使用することでブレッドボードを使わずに組み上げることができます。

 

使用部品説明

本Lessonで新たに登場した部品について説明していきます。

 

電子ブザー(アクティブブザー)

下の写真が、電子ブザー(アクティブブザー)です。

電子ブザーには「+」、「-」がありますので極性に気を付けましょう。

Arduino-buzzer

 

ELEGOO UNO キットを購入された方は合わせて梱包されています。

 

手持ちがない方はAmazonで購入が可能です。

 

電子ブザーと圧電スピーカー違い

ちょうど良い機会です。

次回Lesson 07で使用する圧電スピーカー(パッシブブザー)について、電子ブザーとの違いを説明しておきます。

 

電子ブザー(アクティブブザー)
内部に発振回路が入っていて、決まった直流電圧を掛けるだけで決まった音程のブザー音が鳴ります。
圧電スピーカー(パッシブブザー)
普通のスピーカーと同じで、外部から与えた音声信号に従って発音します。従って、音程を変えたり、メロディーを流したりする事も可能です。

 

下に示す裏が黒いものが電子ブザー、裏に緑の基板が見えるものが圧電スピーカーです。

Arduino-buzzer

 

次回Lesson 07はメロディーに挑戦です。

子供が喜ぶこと間違いなし⁉。

楽しみにしてください。

 

M-F Jumper wire(配線)

下に示すのが、M-F Jumper wireです。

これまで使用したものはM-M Jumper wireです。

違いは、両端が「オスーオス」、「オスーメス」なのかの違いです。

arduino-wire

 

ブザーから足がでています。

オスーメスのwireを使用することでブレッドボードが不要となります。

オスーオスしかもっていない場合はブレッドボードを使用してください。

 

Jumper wire、抵抗は今後も頻繁に利用します。

Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。

短めが使いやすい場合も。

 

抵抗も単品で揃えるよりはセットをおすすめします。

 

抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!

という方は、「電子工作基本部品セット」が使い勝手が良い。

 

実践 電子ブザーをならす

さっそく、部品を接続しコードを読み込んでいきましょう。

 

接続

下図に示すように、wireを使用してUNOとブザーを接続しましょう。

使用するポートは、Digital IOの「12」と「GND」です。

穴に挿入しづらいときは、ラジオペンチなどを使用すると良いかもしれません。

ブザーの「+極」を12番ポートへ、「-極」をGNDへ接続します。

今回はこれだけです。

Arduino-connection

 

コードの書き込み

接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。

今回は音程をわかりやすくするために本記事のコードをコピーして使用することをお勧めします。

 

もしELEGOOのキッドを購入されていて、メーカーのチュートリアルに梱包されているコードを利用したい場合は下記を参照ください。

チュートリアルの入手は、Arduino 入門 購入編を参照ください。

ロードの仕方などの詳細はLesson 02を参照ください。

ファイル名は「active.ino」です。

開いたら、編集しても良いように「ファイル」⇒「名前を付けて保存」で別名で保存しておきましょう。

 

コマンド説明

コードの説明をしていきたいと思います。

これまでのLessonにでてきていないコードについて説明します。

コマンド 説明
unsigned char 符号無しのデータ型で1バイトのメモリを占有します。
0から255までの値を扱うことができます。
通常はbyte型を使用します。
unsigned char i = 80;
byte i = 80;
上記は同じになります。
こんなデータ型の指定もあるんだなと思ってもらえば良いです。
while while(条件式){
// 実行される文
}
whileは繰り返しの処理に使います。
カッコ内の式がfalseになるまで、処理は無限に繰り返されます。
ループから抜け出すためには、条件式で使われる変数が処理により変化する必要があります。
補足
while<1>とは?
0:偽
0以外:真
と認識されます。
whileの条件式が1と言うことは常に真です。
whileは条件式が常に正しいということになり無限ループになります。

 

サンプルコード1

まずは、ブザーの「オン」「オフ」を確かめるコードです。

下記をコピーしてUNOに書き込んでみてください。

//Lesson 06-01 ブザーのオンオフを繰り返す
//https://omoroya.com/

int buzzer = 12;//12番ポートをブザーに割り当て
void setup()//初期設定するところ
{
 pinMode(buzzer,OUTPUT);//12番ポートをOUTPUTとして設定
}
void loop()//ループ関数
{
 digitalWrite(buzzer,HIGH);//ブザーON
 delay(1000);//1秒間待つ
 digitalWrite(buzzer,LOW);//ブザーOFF
 delay(1000);//1秒間待つ
}

 

ブザーが1秒間ごとにオン、オフを繰り返しているのがわかりましたでしょうか?

次に、オン、オフの時間を変えることで周期を変更します。

 

サンプルコード2

このサンプルではオン、オフの周期を3段階で変更しています。

下記をコピーして、ぜひ試してみてください。

補足:1m秒 =1/1000秒

//Lesson06-02 ブザーの音程を3段階にする
//https://omoroya.com/

int buzzer = 12;//12番ポートをブザーに割り当て
void setup()//初期設定
{
 pinMode(buzzer,OUTPUT);//12番ポートをOUTPUTとして設定
}
void loop()//ループ関数
{
 unsigned char i;//iを0~255のデータ型として定義
 while(1)//無限ループ
 {
  //周期2ms
  for(i=0;i<100;i++)//100回繰り返す
  {
    digitalWrite(buzzer,HIGH);//ブザーON
    delay(1);//1ms待つ
    digitalWrite(buzzer,LOW);//ブザーOFF
    delay(1);//1ms待つ
   }
  //周期4ms
  for(i=0;i<100;i++)//100回繰り返す
  {
    digitalWrite(buzzer,HIGH);//ブザーON
    delay(2);//2ms待つ
    digitalWrite(buzzer,LOW);//ブザーOFF
    delay(2);//2ms待つ
   }
   //周期8ms
   for(i=0;i<100;i++)//100回繰り返す
   {
    digitalWrite(buzzer,HIGH);//ブザーON
    delay(4);//4ms待つ
    digitalWrite(buzzer,LOW);//ブザーOFF
    delay(4);//4ms待つ
    }
  }
}

 

ブザーの音が3段階で変わったのがわかりましたでしょうか。

for文内のdelay関数の時間を変えたり、for文を追加して4段階にしてみたりと色々と試して遊ぶことができます。

ぜひ、コードをいじって遊んでみてください。

遊ぶことが理解に一番近づく方法です。

 

まとめ

今回は以下の内容について理解してもらいました。

特に項目3について理解することが一番の目標でした。

1.電子ブザー(アクティブブザー)にUNOから電源を供給する。
2.電子ブザー(アクティブブザー)が「オン」「オフ」し音を発することを確認する。
  ※電圧を与えている間のみ音がなる。
3.「オン」「オフ」の周期を変えることで、発する音が変化する。
4.楽しんで遊ぶ。

 

Lesson 06 【電子ブザー編】はここまで。

ぜひ、みなさんも子供と一緒にやられてみることをお勧めします。

 

次回、Lesson 07は【圧電スピーカー編】です。

Arduinoでメロディーを奏でて遊びます。

Arduino 入門 Lesson 07 【圧電スピーカー編】
圧電スピーカー(パッシブブザー)は、外部から与えた音声信号に従って音を発生させます。音程を変えたり、メロディーを流したりする事も可能です。ONとOFFを繰り返す(PWM制御)ことによって空気を振動させ音を発生させます。今回は圧電スピーカーで…

 

最後に

疑問点、質問などありましたら気軽にコメントください。

この電子部品の解説をしてほしい!などなどなんでもOKです。

リンク切れ、間違いなどあればコメントいただけると助かります。

 

Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。

 

Arduino入門編Arduino入門編2で使用しているUNOはAmazonにて購入可能です。

Arduino入門編では互換品を使用。

Arduinoはオープンソース。

複製して販売するのもライセンス的に問題なし。

 

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

学習用、遊び用、お試し用には安価な互換品がおすすめです。

 

上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。

 

Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)

 

Amazonでお得に買う方法

Amazonでお得に購入するならAmazon MastercardAmazonギフト券がおすすめです。

時期により異なりますが、様々なキャンペーンを実施しています。

\Amazonギフト券/
Amazonギフトカード キャンペーン

Amazon Mastercard お申込み
Amazon Mastercard 申し込み 

 

いずれの場合もプライム会員である方がお得!!

\Amazon Prime 30日間の無料会員を試す/
無料会員登録 

 

 

 

コメント

  1. 流離のジョー より:

    とてもわかりやすかったです。ありがとうございました。

    • omoroya omoroya より:

      コメントありがとうございます!
      そう言っていただけると、記事を書くモチベーションになります。

タイトルとURLをコピーしました