#include <M5StickCPlus.h>
int f[28] = { 262, 294, 330, 349, 392, 440, 494 }; // 配列のサイズは4オクターブ分
void setup() {
Serial.begin(115200);
M5.begin();
M5.Lcd.setRotation(3);
for (int i = 0; i < 7; i++) {
f[i + 7] = f[i] * 2;
f[i + 14] = f[i] * 4;
f[i + 21] = f[i] * 8;
}
// setBeep( Hz, ms) でビープ音を設定して、beep()で鳴らす。
M5.Beep.setBeep(523, 500); M5.Beep.beep(); delay(500);
// tone( Hz, ms ) で鳴らす方法
M5.Beep.tone(1046, 500); delay(500);
// msを省略し、tone( Hz ) で鳴らす(結局、delayが必要になるので)
M5.Beep.tone(2092); delay(500);
// ここはmsを指定するとよい (loopのM5.Beep.updateが停めてくれるので、delayを省略できる)
M5.Beep.tone(2092 * 2, 1000);
}
void loop() {
M5.Beep.update(); //tone()やsetBeep()で指定した時間を過ぎていたら音を止める。
// 参考:M5.Beep.mute() を実行すると、すぐに停止する。
while (Serial.available()) {
char c = Serial.read();
if (c < 'c' || 'z' < c) continue; // c〜zの文字以外なら、以降のwhile内処理をスキップ
M5.Beep.tone( f[c - 'c'] , 1000); // 1秒鳴らす
Serial.println( f[c - 'c'] );
}
delay(50);
}