#include <M5StickCPlus.h> int f[28] = { 262, 294, 330, 349, 392, 440, 494 }; // 配列のサイズは4オクターブ分 void setup() { M5.begin(115200); 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); Serial.println("Input [c] -- [z] character."); } 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.printf( "%d Hz\n", f[c - 'c'] ); } delay(50); }