#include <M5Unified.h> int f[28] = { 262, 294, 330, 349, 392, 440, 494 }; // 配列のサイズは4オクターブ分確保する void setup() { auto cfg = M5.config(); cfg.serial_baudrate = 115200; M5.begin(cfg); M5.Display.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; } M5.Display.setFont(&fonts::lgfxJapanGothic_16); M5.Display.println("サウンドテスト (tone関数)"); M5.Display.setTextScroll(true); tone(GPIO_NUM_2, f[0], 200); tone(GPIO_NUM_2, f[2], 200); tone(GPIO_NUM_2, f[4], 200); tone(GPIO_NUM_2, f[7], 400); M5.Display.setBrightness(255); } void loop() { while (Serial.available()) { char c = Serial.read(); if (c < 'c' || 'z' < c) continue; // c〜zの文字以外なら、以降のwhile内処理をスキップ tone(GPIO_NUM_2, f[c - 'c'], 500); // 0.5秒鳴らす M5.Display.setBrightness(255); Serial.printf(" chr=%c %d Hz\n", c, f[c - 'c']); M5.Display.printf(" chr=%c %d Hz\n", c, f[c - 'c']); } M5.delay(50); }