広告 obniz 電子工作 電気の話

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

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

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

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

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

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

続きを見る

 

準備するもの

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

 

準備するもの

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

 

[st_af id="3013"]

 

圧電ブザーは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 ...

続きを見る

 

[st_af id="3013"]

 

【講座のまとめ】

記事内容
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)の違いについて知りたい 直流(DC)の交流(AC)について、それぞれ特徴を知りたい   電気の流れる向き・電流・電圧が変わるの ...

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

    オペアンプの反転増幅回路 オペアンプの反転増幅回路は下図のようになります。 反転増幅回路の入力電圧をVi、出力電圧をVoとすると下記の式で表されます。   オペア ...

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

  LEDのアノードとカソードについてとその見分け方 「アノードコモン」と「カソードコモン」について説明する前に、LEDのアノードとカソードについて説明します。   LEDは正しい ...

4

という問題が起きているようですね。 アフィリエイトが発生しないというのは死活問題ですね。   原因はどうやら、アンカーリンク内のtarget="_blank"が関係しているようだと。でも正確 ...

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

  MyLinkBoxで商品紹介できる広告主一覧 MyLinkBoxで商品紹介できる広告主一覧は下記の通りです。 カテゴリー 広告主一覧 モール(物販) Yahoo!ショッピング/楽天市場/ ...

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

      私もよく情報を整理するためにマインドマップを作成しています。 何か思いついたときにメモ代わりとして使用する事もあり、常に携帯しているスマホでマインドマップを作 ...

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

アメリカのシリコンバレー発のオンライン学習サイトで、日本ではベネッセが運営しています。 私自身もWeb開発やPythonなどのコースを購入しています。プログラミングだけでなく、動画編集や写真撮影など様 ...

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

  こんな方におすすめ ブレッドボードの使い方を知りたい ブレッドボードの使い方:ブレッドボードとは?ブレッドボードの仕組みについて   ブレッドボードは電子部品の足を差し込むだけ ...

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

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

LED抵抗計算機 10

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

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