質問: now; ++value; snprintf (msg, 75, "hello world #%ld", value); serial.print("publish message: "); serial.println(msg); //mqttclient.publish("msg/comment", msg); serial.print("mqttloop() area02: "); } } void loop() { mqttloop(); } void loop() という関数を宣言して、それをmqttloop() 関数内で ”mqttclient.loop();” これを置くと、mqttloop関数が無限ループ状態になっているのですが、これはarduinoの無限ループの特殊なやり方なのでしょうか? 自分がやっているc言語の無限ループだと while(1){.........} これが普通のやり方だと思うのですが、どうぞご教示の程よろしくお願い致します。
回答: パソコンだと プロンプト に戻ってきています そのため 今どきの言語だと 戻り値があり 終了しますが arduino の ハードに近いものだと ループ してます そうしないと暴走状態です 正確に言うと パソコンでも ループ状態で キーボードやマウスの入力を監視してます 初期のパソコンとアセンブラをやってるとわかります z80ですが https://books.google.co.jp/books?id=naosqzsobtgc&pg=pa190&lpg=pa190&dq=%e3%83%9e%e3%82%b7%e3%83%b3%e8%aa%9e%e3%80%80%e3%83%96%e3%83%bc%e3%83%88&source=bl&ots=thrs7dy8lw&sig=acfu3u3cyqkmnhrtpd4hxat2dliaer3bxw&hl=ja&sa=x&ved=2ahukewid34kp2jdgahwivbwkhrq9cr4q6aewchoecaaqaq#v=onepage&q=%e3%83%9e%e3%82%b7%e3%83%b3%e8%aa%9e%e3%80%80%e3%83%96%e3%83%bc%e3%83%88&f=false この辺の書籍を読むとわかります プログラムの流れがハード的に書いてある