この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
車輪開発大好きおたいがです。こんにちは。( 挨拶 )
今回は 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
サンプルコードの作成
index.js
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
…
正直、あまり美しい音とは思えません…が、ブザー装置の習作としてはアリかなと。