2016年8月10日水曜日

Johnny-Fiveでマイコン制御23 - ピエゾ(圧電ブザー)

○Piezoオブジェクトを作成する
 ピエゾ素子(圧電ブザー)を制御するには、Piezoオブジェクトを使います。Piezoオブジェクトは、物理的なボードに接続された単一のピエゾ素子を表すオブジェクトです。Piezoオブジェクトを作成するには、Piezoクラスのコンストラクタを使います。引数には、ピエゾ素子のプラス端子を接続するデジタルピンの番号を指定します。
new five.Piezo(ピン番号);

 オプションの「pin」プロパティでピン番号を指定する場合は、次のように書きます。
new five.Piezo ({
  pin: ピン番号
})


ピエゾ素子で曲を再生する
 ピエゾ素子で曲を再生するには、「play」メソッドを使います。コールバック関数には、曲の再生完了時に実行する関数を指定します。コールバック関数は省略できます。
play(曲のオブジェクト, コールバック関数)
曲のオブジェクトは、「song」プロパティに曲の音符の配列を、「tempo」オプションにテンポを指定します。曲の音符の配列の配列要素「0」にはノート(コード)または周波数を、配列要素「1」にはビートを指定します。指定できるノートは次のとおりです。


ノート
周波数(Hz)
ノート
周波数(Hz)
ノート
周波数(Hz )
null(-)
0
C3
131
C6
1047
C0
16
C#3
139
C#6
1109
C#0
17
D3
147
D6
1175
D0
18
D#3
156
D#6
1245
D#0
19
E3
165
E6
1319
E0
21
F3
175
F6
1397
F0
22
F#3
185
F#6
1480
F#0
23
G3
196
G6
1568
G0
25
G#3
208
G#6
1661
G#0
26
A3
220
A6
1760
A0
28
A#3
233
A#6
1865
B0
31
B3
247
B6
1976
C1
33
C4
262
C7
2093
C#1
35
C#4
277
C#7
2217
D1
37
D4
294
D7
2349
D#1
39
D#4
311
D#7
2489
E1
41
E4
330
E7
2637
F1
44
F4
349
F7
2794
F#1
47
F#4
370
F#7
2960
G1
49
G4
392
G7
3136
G#1
52
G#4
415
G#7
3322
A1
55
A4
440
A7
3560
A#1
58
A#4
466
A#7
3729
B1
62
B4
494
B7
3951
C2
65
C5
523
C8
4186
C#2
69
C#5
554
C#8
4435
D2
73
D5
587
D8
4699
D#2
78
D#5
622
D#8
4987
E2
82
E5
659
E8
5274
F2
87
F5
698
F8
5588
F#2
93
F#5
740
F#8
5920
G2
98
G5
784
G8
6272
G#2
104
G#5
831
G#8
6645
A2
110
A5
880
A8
7040
A#2
117
A#5
932
A#8
7459
B2
124
B5
988
B8
7902

たとえば、「C4」を1/4ビート、「D4」を1/2ビート、「null」を1ビート、「F4」を1ビートの順に、テンポ100で再生するには、次のように書きます。
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // Piezoオブジェクトを作成
  // (3ピンを信号出力用に設定)
  var piezo = new five.Piezo(3);

  // 曲を再生
  piezo.play({
    // 曲の配列(1引数:コード、第2引数:ビート)
    song: [
      ["C4", 1 / 4],
      ["D4", 1 / 2],
      [null, 1],
      ["F4", 1]
    ],
    tempo: 100
  });
});

 「song」プロパティの曲は、文字列で指定することもできます。この場合、ノートの文字列をスペースで区切って記述します。1つのノートは、「beats」プロパティに指定したビート長で再生されます。つまり、「beats」プロパティに「1 / 4」に指定したときに、D4を「1 / 2」ビートで再生したい場合「D4 D4」、F41ビートで再生した場合は、「F4 F4 F4 F4」と書きます。
  // 文字列表現で曲を設定
  piezo.play({
    song: "C4 D4 D4 - - - - F4 F4 F4 F4",
    beats: 1 / 4,
    tempo: 100
  });

・配線図

ピエゾ素子で指定の周波数・長さで音を再生するには
 ピエゾ素子で指定の周波数、長さで音を再生するには、「frequency」メソッドを使います。周波数はHz単位、持続時間はミリ秒単位で指定します。
frequency(周波数, 持続時間)

 たとえば、「587Hz(D5)1(1000ミリ秒)間再生するには、次のように書きます
var five = require("johnny-five");
var board = new five.Board();

board.on("ready", function() {
  // Piezoオブジェクトを作成
  // (3ピンを信号出力用に設定)
  var piezo = new five.Piezo(3);

  // D41秒間再生
  piezo.frequency(587, 1000);
});


0 件のコメント:

コメントを投稿