質問: ### 前提・実現したいこと 以下のソースコードに示すように、本文loop()の中でカウントが11になってから関数sendData()を呼び、関数sendData()の中を実行したいです。(関数sendData()の中にもシリアルモニタに出力する内容の文が書かれています) (※関数sendData()の実行中は、本文loop()の実行を止めたい。というより通常止まっているはずだという認識です。) ところが、以下のシリアルモニタ上の表示結果に示すように、本文loop()の内容をずっと繰り返し、関数sendData()の内容を一向に実行しないので、これを以下のように直したいです。 「関数sendData()が呼ばれると、関数sendData()の中身を実行し、本文loop()の実行は関数の実行文が完了するまで止まる。」 イメージと実際の挙動が大きく異なるため、何かアイデアや解決案などございましたらご教授お願いいたします。 ### シリアルモニタ上の表示 ``` 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 ``` ### 該当のソースコード ``` void loop() { i++; delay(1000); Serial.println(i); if(i>10){ sendData(); i=0; } } void sendData(){ 実行文;//(120行くらい) } ``` ### 補足情報(言語/FW/ツール等のバージョンなど) Arduino IDE 1.8.0 Arduino M0 Pro
回答: こんにちは。 loop()以外の場所で変数iの値を変更していない限り、sendData()は呼ばれている筈です。 sendData()関数内の処理が分からないのでなんとも言えませんが、sendData()の中でシリアル・データを出力していることは間違いないですか? 試しにsendData()の先頭でSerial.println(123);のようなことをやってみるとどうなりますか?