- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Arduinoのプログラムのループ文)
Arduinoのプログラムのループ文についての疑問
このQ&Aのポイント
- Arduinoのプログラムにおけるループ文について疑問があります。
- ESP-wroom-32のプログラムでループ文を使用する際に、特殊な書き方があるようです。
- C言語の無限ループとArduinoの無限ループの違いについて教えてください。
- みんなの回答 (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 この辺の書籍を読むとわかります プログラムの流れがハード的に書いてある
お礼
回答頂きありがとうございます。 プログラミングとかニワカでやってても、この辺はハードウェアとかアセンブラ的な知識が必要そうな話のようですね。 void mqttLoop() 関数内で mqttClient.loop();という文を書いていることの意味みたいなのがよくわからず、永久ループさせるために必要かなと思ったのですが、わざとこの文をコメントアウトさせて動作させても、永久ループは実行されることを確認しました。 なのでvoid loop() という関数内は永久ループすると考えればいいと感じました。 ただ、 mqttのデータを送信させるパブリッシュ動作では特に問題がなかったのですが、amazonのawsなどのブローカーサーバからデータを受信させるためのサブスクライブをやってみようと Nefry BT(ESP32)でMQTTを使ってみよう Subscribe編 | dotstudio https://dotstud.io/blog/nefry-bt-connect-mqtt/ #dotstudio こちらのサイトなどを参考にした際に、 void mqttLoop() 関数内で mqttClient.loop();を記述していないと受信ができないことがわかりました。 なんとなくなのですが、サブスクライブを行うために書いた mqttClient.subscribe(TOPIC, QOS); Serial.println("Subscribed."); というのはプログラム上の記述以外のところで動いてる割り込みとかハンドラ?みたいなやつらしいので、mqttClient.loop();というのはそれに関係しているような気がしています。 助かります。