[Genuino 101][Johnny-Five] ボタン式圧電ブザー
車輪開発大好きおたいがです。こんにちは。( 挨拶 )
今回は Genuino 101 ( 以下 Genuino ) を使用した、ボタン式圧電ブザー を作ってみました。Johnny-Five で実装しています。
動作環境・道具など
- Genuino 101
- USB ケーブル
- ブレッドボード
- ジャンパーワイヤ
- 抵抗
- タクトスイッチ ( 2 本足 )
- 圧電スピーカー ( 圧電サウンダ ) SPT08
- Windows 7 Pro (64bit)
- Arduino IDE 1.6.9 ( セットアップ記事を参考にしてください )
- Node.js v4.4.7
回路図
電源とアナログ入力 A0 ピンをタクトスイッチで結び、アナログ入力ピン側に負荷抵抗を添えています。圧電スピーカーは、デジタル PWM の 3 ピンと GND に接続します。
サンプルスケッチ ( プログラム ) をボードに書き込む
Genuino に StandardFirmata スケッチを書き込みます。
( 参照 : https://dev.classmethod.jp/hardware/johnny-five-genuino-101-debut/#toc--- )
Johnny-Five 実行用のサンプルプロジェクト作成および実行
Johnny-Five の導入および実行するためのプロジェクトを用意します。任意のプロジェクトディレクトリを作成して移動したあとに、下記コマンドを入力します。
package.json の初期化
$npm init
Johnny-Five のダウンロード
$npm install johnny-five
サンプルコードの作成
var five = require('johnny-five'); // Genuino が接続されているポート番号 ( `/dev/tty*` (Mac/Linux) or `COM*` (Windows) ) var board = new five.Board({ 'port': 'COM8' }); board.on('ready', function() { var c = 0; var s = ['C','D','E','F','G', 'A', 'B']; //音階 var button = new five.Button('A0'); var piezo = new five.Piezo(3); //PWM button.on('press', function() { var song = s[c++%s.length]; console.log('song : ', song); piezo.play({ 'song' : song, 'beats' : 1/8, 'tempo' : 20 }); }); });
実行
$node index
Genuino のアナログ入力 A0 ピンをコントロールする Button クラスのインスタンスを作成することで、タクトスイッチのプレス ('press') とリリース ('release') のイベントをハンドリングすることが可能です。上記コードでは、タクトスイッチのプレスのイベントのタイミングで、デジタル PWM の 3 ピンをコントロールする Piezo クラスのインスタンスが音を鳴らすようハンドリングしています。( 圧電スピーカーが音を鳴らします ) ついでに、スイッチを押すたびに音階が変わるようにしてみました。
ちなみに、Piezo とは Piezoelectric ( 圧電 ) の略称から由来しているものと思われます。
結果
上記コードを実行すると、ブザー音と一緒に再生中の音階が表示されます。
$ node index 1470278275343 Connected COM8 1470278280396 Repl Initialized >> song : C song : D song : E song : F song : G song : A song : B song : C …
正直、あまり美しい音とは思えません…が、ブザー装置の習作としてはアリかなと。