 #define PORT 1024                           // 受信ポート番号
 #define DEVICE "voice_1,"                   // デバイス名(5文字+"_"+番号+",")
 
-int LED=0;                                  // LEDの出力状態
 signal voice(PIN_AIN);                      // 音声入力の有効化
 char phoneme[17];                           // 音声データ用の変数
-int phoneme_i=0;                            // 音声データ数
-int t=0;                                    // 待ち時間カウント用の変数
+int phoneme_i=0,t=0,LED=0;                  // 音声データ数,待ち時間,LED状態保持
 
 void setup(){
+    WiFi.mode(WIFI_OFF); btStop();          // 無線LANとBluetoothをOFFに設定する
     pinMode(PIN_LED, OUTPUT);               // LEDを接続したポートを出力に
     digitalWrite(PIN_LED,HIGH);             // LEDを点灯する(起動を知らせる)
     voice.f_enabled = true;                 // f音の検出を行う

    voice.vconstant = 3;                    // v音の閾値設定
    voice.shconstant = 4;                   // sh音の閾値設定
    voice.calibrate();                      // マイク入力のDC値の設定
    Serial.begin(115200);                   // 動作確認のためのシリアル出力開始
    Serial.println("esp32 18 voice");       // 「esp32 18 voice」をシリアル出力
    memset(phoneme,0,17);                   // 音声データ用の変数の初期化
    WiFi.mode(WIFI_OFF);                    // 無線LANをOFFに設定する
    btStop();                               // BluetoothをOFFに設定する
}

void loop(){

        else led=1;                         // なければONと判定し変数ledを1へ
    }
    if(led>=0) digitalWrite(PIN_LED,led);   // 判定結果でLEDを制御
      else strcpy(vr,",ERR");               // 結果無し時は文字列変数へERRを代入
    if(led==0) strcpy(vr,",OFF");           // led=0のとき文字列変数へOFFを代入
      else if(led==1) strcpy(vr,",ON");     // led=1のとき文字列変数へONを代入
    Serial.println(vr);                     // 文字列変数をシリアル出力表示
    t=0; phoneme_i=0; memset(phoneme,0,17); // 時間、音声データ用の変数の初期化
    if(led==LED || led<0) return;           // LED状態に変化がないときに戻る
    LED=led;                                // LED状態を保持する変数LEDの更新
    WiFi.mode(WIFI_STA);                    // 無線LANをSTAモードに設定
    WiFi.begin(SSID,PASS);                  // 無線LANアクセスポイントへ接続
    while(WiFi.status() != WL_CONNECTED){   // 接続に成功するまで待つ
        digitalWrite(PIN_LED,!digitalRead(PIN_LED));            // LEDの点滅
        delay(100);                         // 待ち時間
    } Serial.println(WiFi.localIP());       // 本機のIPアドレスをシリアル出力
    WiFiUDP udp;                            // UDP通信用のインスタンスを定義
    udp.beginPacket(SENDTO, PORT);          // UDP送信先を設定
    udp.print(DEVICE);                      // デバイス名を送信
    udp.print(LED);                         // ON=1、OFF=0を送信
    udp.println(vr);                        // 認識結果の文字列vrを送信
    udp.endPacket(); delay(10);             // UDP送信の終了(実際に送信する)
    WiFi.disconnect(true);                  // WiFiアクセスポイントを切断する
    WiFi.mode(WIFI_OFF);                    // 無線LANをOFFに設定する
}
