子供と一緒に始める マイコンプログラム Arduino 入門 圧電スピーカー編 Lesson 07

Arduino-lesson07 学習
「子供と一緒に始める マイコンプログラム Arduino 入門 圧電スピーカー編 Lesson 07」

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

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

本日はLesson 07 圧電スピーカー編です。
※パッシブブザーとも呼ばれます。

 

はじめに

圧電スピーカー(パッシブブザー)は、普通のスピーカーと同じで、外部から与えた音声信号に従って音を発生させます。

従って、音程を変えたり、メロディーを流したりする事も可能です。

 

原理は、ONとOFFを繰り返すことによって空気を振動させ音を発生させます。

その振動周波数をPWM制御することで、異なる音を作り出します。

 

Lesson 07では、この圧電スピーカー(パッシブブザー)を利用ます。

PWM制御については下記を参照してください。

 

Lesson 07目標

圧電スピーカー(パッシブブザー)にUNOから電源を供給します。

上記により圧電スピーカー(パッシブブザー)が「オン」「オフ」し音を発することを確認します。

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

Lesson 06の電子ブザー(アクティブブザー)は電圧をかけている間はずーっと音がなっていたのとは異なり、圧電スピーカー(パッシブブザー)はON,OFFのはざまで一瞬だけ音が鳴ります。

それは「PWM制御の周波数を変えることで音程が作り出されている」というのを合わせて理解できればなお良いです。

最後に、メロディーを作って遊ぶことができれば目標達成です。

遊ぶというところが今回一番大事なところです。

 

準備

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

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

 

必要なもの

※今回はブレッドボードを使いません。
使ってももちろんできますが、M-F Jumper wireを使用することでブレッドボードを使わずに組み上げることができます。

 

使用部品説明

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

 

圧電スピーカー(パッシブブザー)

下の写真が、圧電スピーカー(パッシブブザー)です。

今回購入したELEGOO UNO キットに合わせて梱包されています。

圧電スピーカーには「+」、「-」がありますので極性に気を付けましょう。

※電子ブザー(アクティブブザー)のシールを取ってしまうと見た目は変わりません。

Arduino-lesson07-01

 

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

前回Lesson 6でも説明しましたが、おさらいということでもう一度。

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

 

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

Arduino-buzzer

 

M-F Jumper wire(配線)

こちらも、おさらいです。

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

M-M Jumper wireとの違いは

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

arduino-wire

ブザーから足がでていますので、オスーメスのwireを使用することでブレッドボードが不要となります。

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

 

Jumper wireセット

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

 

「pitches.h」ライブラリ

「pitches.h」ライブラリには音階に必要な周波数が定義されています。

このライブラリを使用すれば、自分で記述を書かずに定義された変数を使用するだけです。

サンプルコード1では使用しませんが、手間を省くためににサンプルコード2では「pitches.h」ライブラリを使用します。

参考のため、下記に「pitches.h」ライブラリの一部を抜粋して記載しておきます。

/*************************************************
* Public Constants
*************************************************/

#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
---以下変数と周波数の羅列が続く---

 

ライブラリの使用方法については以下の記事を参考にしてください。

 

音階と周波数

音階と周波数の関係を表にまとめておきます。

メロディを作る際の参考にしてください。

周波数が高くなるほど音が高くなります。

ファ
131147165175196220247
262294330349392440494
523587659698784880988

他にも#音なども出すことができます。

 

音階周波数について興味のある方は下記のサイトを参考にしてみてください。

 

実践 かえるのうた を作る

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

 

接続

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

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

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

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

今回もこれだけです。

Arduino-lesson07-02

 

 

コードの書き込み

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

今回も理解を深めるために、本記事のコードをコピーして使用することをお勧めします。

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

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

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

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

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

 

コマンド説明

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

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

コマンド説明
tone(pin, frequency, duration)指定した周波数の矩形波(50%デューティ)を生成します。
pin: トーンを出力するピン
frequency: 周波数(Hz)
duration: 出力する時間をミリ秒で指定

tone(12,262,300);
12番ポートに262HzのPWM信号を0.3秒出力
配列
int myXXX[6];  //myXXXという配列のmyXXX[0]~myXXX[6]を初期化
int myXXX[0,2,4,6,8,10];  //初期化せずにmxXXXを配列宣言、配列myXXX[0]~myXXX[5]には、0,2,4,6,8,10の値が入る

 

サンプルコード1(ドレミファソラシド)

まずは、「ドレミファソラシド」を確かめるコードです。

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

//ドレミファソラシドを繰り返す
int duration = 300 ;   // 音の長さを指定
int pin = 8 ;   // 圧電スピーカを接続したピン番号

void setup() {  //初期設定箇所 toneを使用する場合はpinMode関数で出力指定は必要なし
}
void loop() {  //ループ関数
     tone(pin,262,duration) ;  // ド
     delay(duration) ;  // 音がなっている間待つ
     tone(pin,294,duration) ;  // レ
     delay(duration) ; // 音がなっている間待つ
     tone(pin,330,duration) ;  // ミ
     delay(duration) ; // 音がなっている間待つ
     tone(pin,349,duration) ;  // ファ
     delay(duration) ; // 音がなっている間待つ
     tone(pin,392,duration) ;  // ソ
     delay(duration) ; // 音がなっている間待つ
     tone(pin,440,duration) ;  // ラ
     delay(duration) ; // 音がなっている間待つ
     tone(pin,494,duration) ;  // シ
     delay(duration) ; // 音がなっている間待つ
     tone(pin,523,duration) ;  // ド
     delay(5000) ;           // 5秒待って繰り返す
}

いかがでしょうか。「ドレミファソラシド」を奏でることはできましたでしょうか?

 

では次に、「かえるのうた」を作ってみましょう。

ドレミファソラシドを定義しておけばいつでも呼び出して使うことができます。

今回は、自分でコードを書く手間を省くために「pitches.h」ライブラリを使用します。

ついでにライブラリの使用の仕方も思い出しましょう。

 

サンプルコード2(かえるのうた)

このサンプルでは「かえるのうた」を奏でられるようになっています。

// カエルの歌
#include "pitches.h"  //音階が記載されているpitches.hを呼び出す。

int duration = 200 ; // 音の長さを指定
int pin = 8 ;  // 圧電スピーカを接続したピン番号

//かえるのうたの音階を記載
int melody[] = {  //配列を定義 melodyという変数に下記64個の値を格納、0は周波数0ということ音がでない
 NOTE_C5,  0, NOTE_D5,  0, NOTE_E5,  0, NOTE_F5,  0, NOTE_E5,  0, NOTE_D5,  0, NOTE_C5,  0,  0,  0,
 NOTE_E5,  0, NOTE_F5,  0, NOTE_G5,  0, NOTE_A5,  0, NOTE_G5,  0, NOTE_F5,  0, NOTE_E5,  0,  0,  0,
 NOTE_C5,  0,  0,  0, NOTE_C5,  0,  0,  0, NOTE_C5,  0,  0,  0, NOTE_C5,  0,  0,  0,
 NOTE_C5, NOTE_C5, NOTE_D5, NOTE_D5, NOTE_E5, NOTE_E5, NOTE_F5, NOTE_F5, NOTE_E5,  0, NOTE_D5,  0, NOTE_C5,  0,  0,  0 };

void setup() {  //初期設定箇所 toneを使用する場合はpinMode関数で出力指定は必要なし
}

void loop() {  //ループ関数
  for (int i = 0; i < 64; i++) {  //0~63まで繰り返す。64になったらfor文を抜ける
    tone( pin, melody[i], duration );  //ポートの8番に配列melodyの周波数で、0.2秒
    delay(duration);  //音がなっている間待つ
  }
}

いかがでしょうか。

「かえるのうた」になっていましたでしょうか。

 

メロディーっぽくするには、音と音の間に区切りを設ける調整が必要です。

音と音の間に周波数「0」を入れることで音の出ない期間を設けることで調整しています。

「pitches.h」ライブラリには他にも音階が定義されていますので、ぜひ色々と遊んでみてください。

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

 

まとめ

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

特に項目4の遊ぶことが一番の目標でした。

1.圧電スピーカー(パッシブブザー)にUNOから電源を供給する。
2.圧電スピーカー(パッシブブザー)が「オン」「オフ」し音を発することを確認する。
3.「オン」「オフ」の周期を変えることで、発する音の音程が変わることを理解する。
4.メロディーを作って遊ぶ。

 

いかがだったでしょうか。

Lesson 07 圧電スピーカー(パッシブブザー)編はここまで。

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

 

次回、Lesson 08は「チルトスイッチ編」です。

スイッチを傾けることで、ON、OFFの切り替えが可能です。

何かが倒れた時などの検知に使えそうです。

何に使うか考えるのも1つの楽しみです。

子供と一緒に始める マイコンプログラム Arduino 入門 チルトスイッチ編 Lesson 08
本日はLesson 08 チルトスイッチ編です。Tilt Switch(チルトスイッチ)またはTilt Sensor(チルトセンサー)と呼ばれる部品です。チルトスイッチを傾けたり、戻したりすることでLEDが消灯、点灯する回路を作ります。

 

本Lessonで使用しているUNOはAmazonにて購入可能です。

Amazon ベストセラーNo.1
ELEGOO UNO キット レベルアップ  チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用

 

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

ELEGOO Arduino用UNO R3 最終版スタータキット UNOチュートリアル付 (63 Items)

コメント