obniz 電子工作 電気の話

obnizで圧電ブザーを鳴らそう!【obniz講座第6回】

サンダー
今回はobnizで圧電ブザーを鳴らしたいと思います。

ドレミファソラシドのソフトウェアボタンを用意し、圧電ブザーで音階を表現します。

前回の講座はこちらです。

第5回
obnizでフルカラーLEDをグラデーション点灯しよう【obniz講座第5回】

今回はこの動画のようにフルカラーLEDをグラデーション点灯させてみます。   これまでの記事はこちらです。 記事 内容 obnizでIoT電子工作を始めよう!【obniz講座第1回】 obn ...

続きを見る

 

準備するもの

今回準備するものはこちらです。

 

準備するもの

  • obniz本体 ×1個
  • マイクロUSBケーブル(obniz付属品) ×1本
  • 圧電ブザー(EB3105A) ×1個

 

 

圧電ブザーは5Vが入力できる「自励式」のブザーであれば何でも結構ですが、私はFDK㈱の「EB3105A-30C140-12V」を用意しました。

 

 千石電商ネット通販の商品ページ

 

obnizと圧電ブザーの接続

obnizと圧電ブザーの接続

obnizと圧電ブザーは上図のように接続します。

圧電ブザー「EB3105A」の赤い線を0番ポートに、黒い線を1番ポートに接続します。

 

この接続は「obniz.js」で用意されている関数で指定する事が可能です。

obniz.wired("Speaker", {signal:0 , gnd:1 });

 

signalやgndのの後の数字が、それぞれobnizのポート番号を指定しています。

今回使用する圧電ブザーの「EB3105A」は赤い線が信号線(signal)、黒い線がGND線のため、上記の指定では赤い線を0番、黒い線を1番としています。

 

圧電ブザーの仕組みと音階を変える方法

圧電ブザーについて

圧電ブザーは電圧をかけると振動する板と、その振動板に金属などが合わせて振動する事で音を鳴らします。

圧電ブザーは、発振回路を内蔵しており、一定の電圧をかけるだけで音が鳴ります。

今回は「obniz」の端子に直接接続して使用したいので、圧電ブザーを用意します。

用意したのはFDK㈱の「EB3105A-30C140-12V」です。

 千石電商ネット通販の商品ページ

 

圧電ブザーで音階を変える仕組み

圧電ブザーは電圧をかけるだけで音が鳴りますが、一定の電圧をかけているだけでは「ピー」といった単一の音しかなりません。

そこで、周波数を変更して、ドレミファソラシドの音階を表現します。

 

周波数は1秒間に何回振動するかを表した値となります。

例えば、10Hzの場合、1秒間に10回振動するという意味です。

圧電ブザーの仕組みや、周波数の変更方法についてはこちらの記事もご覧ください。

 

合わせて読みたい
圧電ブザーアイキャッチ
圧電ブザー(圧電サウンダ)の原理/仕組みと使い方(マイコンで音を鳴らす)

サンダー今回はマイコンでちょっとした音を鳴らすのに便利な圧電ブザーについて説明します 圧電ブザーは一定の電圧をかけると事で音が鳴るので、マイコンの端子に直接接続して使用するときに重宝します。 その圧電 ...

続きを見る

 

「obniz.js」には周波数を指定するだけで、その周波数の音を鳴らしてくれる関数があるので、今回はそちらを使用します。

 

サンプルプログラム

サンプルプログラムはこちらです

onbiz.jsは常に最新にしてください

下記のoniz.jsを読み込む際のバージョンは常に最新バージョンへ書き換えてください

<script src="https://unpkg.com/obniz@【ここの部分】/obniz.js" crossorigin="anonymous"></script>

<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script
  src="https://code.jquery.com/jquery-3.3.1.js"
  integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
  crossorigin="anonymous">
  </script>  

  <script src="https://unpkg.com/obniz@2.0.1/obniz.js" crossorigin="anonymous"></script>
</head>

  <body>

  <div id="obniz-debug"></div>
  <button id="do">ド</button>
  <button id="re">レ</button>
  <button id="mi">ミ</button>
  <button id="fa">ファ</button>
  <button id="so">ソ</button>
  <button id="ra">ラ</button>
  <button id="shi">シ</button>
  <button id="do_up">ド</button>
    
<script>
var obniz = new Obniz("OBNIZ_ID_HERE");

  obniz.onconnect = async function () {

  var speaker = obniz.wired("Speaker", {signal:0 , gnd:1 });

  async function obnizSpeaker(frq,str)
  {
    speaker.play(frq);
    obniz.display.clear();
    obniz.display.print(str);
    await obniz.wait(300);
    speaker.stop();
  }
  
    var frq = [261.626,293.665,329.628,349.228,391.995,440,493.883,523.251];
    var str = ["ド","レ","ミ","ファ","ソ","ラ","シ","ド(C5)"];
  
  $('#do').click(async function () {
    obnizSpeaker(frq[0],str[0]);
  });

  $('#re').click(async function () {
    obnizSpeaker(frq[1],str[1]);
  });
  
  $('#mi').click(async function () {
    obnizSpeaker(frq[2],str[2]);
  });
  
    $('#fa').click(async function () {
    obnizSpeaker(frq[3],str[3]);
  });
  
    $('#so').click(async function () {
    obnizSpeaker(frq[4],str[4]);
  });
  
      $('#ra').click(async function () {
    obnizSpeaker(frq[5],str[5]);
  });
  
      $('#shi').click(async function () {
    obnizSpeaker(frq[6],str[6]);
  });

      $('#do_up').click(async function () {
    obnizSpeaker(frq[7],str[7]);
  });
}

</script>
</body>
</html>

 

 

既出部分の概略

これまでに説明した部分は該当記事を紹介するのみとし、新たな部分のみ説明致します。

 

コード説明参照講座
<meta charset="utf-8">文字コード(UTF-8)の設定obnizでLEDを光らせよう【第2回】
<meta name ~(省略)>横幅を端末に合わせ、表示倍率を1倍に設定 obnizでLEDを光らせよう【第2回】
<script src="https://code.jquery.com~(省略)>jQueryをCDNから読み込んで利用obnizのPWM制御でLEDを調光しよう【第4回】
<script src="https://unpkg.com/obniz(省略)>obnizを制御するための関数などを読み込んで利用obnizでIoT電子工作を始めよう【第1回】
<div id="obniz-debug"></div>obnizのデバッグ表示obnizでIoT電子工作を始めよう【第1回】
<button ~(省略)>HTMLでボタンを作成し、id名を設定ソフトウェアボタンでobnizのLEDをON/OFFしよう【第3回】
var obniz = new Obniz("OBNIZ_ID_HERE");設定したobnizのIDを「obniz」変数として宣言obnizでIoT電子工作を始めよう【第1回】
obniz.display.clear();/obniz.display.print("");obnizのディスプレイクリア/文字を表示obnizでIoT電子工作を始めよう【第1回】

 

var speaker = obniz.wired("Speaker", {signal:0 , gnd:1 });はブザーやスピーカーから音を鳴らすために用意された関数

下記のコードについて説明します。

var speaker = obniz.wired("Speaker", {signal:0 , gnd:1 });

 

まず、「speaker」と変数を宣言しています。

そして、var speaker = obniz.wired("Speaker", {signal:0 , gnd:1 });はブザーやスピーカーの信号線とGND線を指定して制御するための関数で、「obniz.js」で定義されています。

 

最初に"Speaker”を代入し、ブザーやスピーカーの制御であることを示します。

"signal"はスピーカー(ブザー)の信号線、”gnd”はスピーカー(ブザー)のGND線を表し、それぞれの数字がobnizのポート番号を示しています。

obnizと圧電ブザーの接続

 

async function obnizSpeaker(frq,str){ }は自作関数

下記のコードについて説明します。

async function obnizSpeaker(frq,str)
  {
    speaker.play(frq);
    obniz.display.clear();
    obniz.display.print(str);
    await obniz.wait(300);
    speaker.stop();
  }

 

これは複数の命令をまとめた自作関数で、関数名を「obnizSpeaker」とし、第1引数として周波数の"frq"、第2引数としてobnizのディスプレイに表示させる文字の"str"を必要としています。

上の命令から順に概略を説明します。

 

obnizSpeaker内の命令説明
speaker.play(frq);指定された周波数でスピーカーを鳴らす(obniz.jsで定義)
obniz.display.clear();obnizのディスプレイ表示をクリア(obniz.jsで定義)
obniz.display.print(str);指定された文字列をobnizのディスプレイに表示させる(obniz.jsで定義)
await obniz.wait(300);300ミリ秒(=0.3秒)obnizを停止させます(obniz.jsで定義)
speaker.stop();スピーカーの音を止めます(obniz.jsで定義)

 

配列で音階毎の周波数と文字列(ドやミ)を格納

こちらのコードについて説明します。

var frq = [261.626,293.665,329.628,349.228,391.995,440,493.883,523.251];

var str = ["ド","レ","ミ","ファ","ソ","ラ","シ","ド(C5)"];

 

音階毎の周波数を"frq"という配列に、音階の文字列を"str"という配列に格納しました。

ここで、音階には決まった周波数があります。例えばド(C4)ならば、261.626Hzです。

 

音階(ドレミファソラシド)毎の周波数

それぞれの音階と周波数の表は下記の通りとなります。

この周波数と音階名をそれぞれ"frq"と"str"の配列に格納しています。

 

音階名周波数(Hz)
ド(C4)261.626
レ(D4)293.665
ミ(E4)329.628
ファ(F)349.228
ソ(G4)391.995
ラ(A4)440.000
シ(B4)493.883
ド(C5)523.251

 

自作したobnizSpeaker関数へ、周波数と音階名を引数として渡す

最後にこちらのコードについて説明します。

 

  $('#do').click(async function () {
    obnizSpeaker(frq[0],str[0]);
  });

 

これは低い方の「ド」のソフトウェアボタンをクリックしたときの処理となります。

最初の$(ドル)マークはjQueryの関数である事を示しています。

「ド」のソフトウェアボタンのid名は「do」としました。

id名の指定は先頭に#(シャープ)を付けます。

 

そして、「async function obnizSpeaker(frq,str){ }は自作関数」で説明した関数へそれぞれ周波数と、ディスプレイに表示させる文字を引数として渡しています。

frq[]

配列の添え字は0から始まるので、低いドは0、レが1、…高いドが7となります。

これらを音階のボタン毎に添え字を変えれば、配列に順次格納した値で音が鳴ります。

 

応用編(ピアノ)

今回のプログラムを応用して、このようなピアノなども作成が可能です。

是非チャレンジしてみてください。

 

【前回の講座】

前回の講座
obnizでフルカラーLEDをグラデーション点灯しよう【obniz講座第5回】

今回はこの動画のようにフルカラーLEDをグラデーション点灯させてみます。   これまでの記事はこちらです。 記事 内容 obnizでIoT電子工作を始めよう!【obniz講座第1回】 obn ...

続きを見る

【次回の講座】

次回の講座
obnizでミニ四駆をラジコン化しよう
obnizでミニ4駆をラジコン化しよう!【obniz講座第7回】

今回は下の動画のように、タミヤの4輪駆動車工作基本セット(以下、ミニ四駆と呼びます)をobnizでコントロールしてラジコンにする説明をします。   obnizを使った電子工作をYoutube ...

続きを見る

 

 

【講座のまとめ】

記事内容
obnizでIoT電子工作を始めよう!【obnizでIoT電子工作を始めよう!【obniz講座第1回】obnizのディスプレイに文字を表示させます
obnizでLEDを光らせよう!【obniz講座第2回】obnizにLEDと抵抗を接続してLEDを光らせます
ソフトウェアボタンでLEDをON/OFFしよう!【obniz講座第3回】HTMLで作成したボタンを押して、LEDをON/OFFさせます
obnizのPWM制御でLEDを調光しよう【obniz講座第4回】obnizのPWM機能を使ってLEDを調光させます
obnizでフルカラーLEDをグラデーション点灯しよう【obniz講座第5回】obnizでフルカラーLEDをグラデーション点灯させます
obnizで圧電ブザーを鳴らそう!【obniz講座第6回】obnizで圧電ブザーを鳴らします
obnizでミニ4駆をラジコン化しよう!【obniz講座第7回】obnizでタミヤのミニ四駆をコントロールします
obnizでサーボモータを動かそう!【obniz講座第8回】obnizでサーボモータを動かします







人気の記事

1

サンダー直流(DC)と交流(AC)の違いって分かりますか? かみなりん家庭用のコンセントは交流(AC)だよね。乾電池はなんとなくDC(直流)というイメージです。 サンダー改めて聞かれると、交流と直流の ...

【オペアンプ】 反転増幅回路の回路図アイキャッチ 2

かみなりんオペアンプの反転増幅回路ってどういう特徴があるの? サンダー反転増幅回路は文字通り、入力電圧の符号を反転、増幅する回路になります。 かみなりん反転して、増幅するから反転増幅回路なんだね。じゃ ...

アノードコモンとカソードコモン 3

サンダー「アノードコモン」と「カソードコモン」の違い分かりますか? かみなりんえーっと、アノードがプラス側、カソードがマイナス側で・・・コモンってなんだっけ? サンダー改めて聞かれると、どっちがどうだ ...

4

かみなりんアフィリエイトで成果が発生しない!? という問題が起きているようですね。 アフィリエイトが発生しないというのは死活問題ですね。   原因はどうやら、アンカーリンク内のtarget= ...

旅行やアルバイト等の 紹介にバリューコマースの『MyLinkBox』が超便利!! 5

サンダーバリューコマースから2019年6月5日に『MyLinkBox』がリリースされました! かみなりんその『MyLinkBox』ってなに? サンダー『カエレバ』や『Rinker』はご存知でしょうか? ...

miMind使いかたアイキャッチ 6

サンダーマインドマップはご存知ですか?   放射状に枝が伸びていくアレですよね?   頭の整理をするのに良く使います   私もよく情報を整理するためにマインドマップを作成 ...

Web(ウェブ)開発の学習にオススメなUdemyコース3選 7

サンダー世界最大級のオンライン学習プラットフォームの【Udemy】はご存知ですか? アメリカのシリコンバレー発のオンライン学習サイトで、日本ではベネッセが運営しています。 私自身もWeb開発やPyth ...

ブレッドボード の使い方のアイキャッチ 8

サンダーブレッドボードって知ってる? かみなりん電子工作でハンダ付けせずに、手軽に電子回路が組めるボードだよね? サンダーそう、今回はそのブレッドボードの使い方を紹介します。ブレッドボードを使ってLE ...

箇条書きタグ自動追加ツール 9

【このツールの目的】 箇条書きタグ(ulタグもしくはolタグ)を自動で追加するツールです。 listタグも自動で追加します。 【箇条書きの種類選択】 数字無し箇条書き(ul) ・箇条書き数字有り箇条書 ...

LED抵抗計算機 10

LED抵抗自動計算機 下図のように、LED1個をつなぐとき、LEDに流したい電流から抵抗値を求める計算機です。   LED抵抗計算機 ↓電源電圧【例】5(V) ↓LEDの電圧降下【例】2(V ...

-obniz, 電子工作, 電気の話
-, , , , ,