質問するログイン新規登録

回答編集履歴

2

質問の更新に対するレスポンス

2021/06/15 06:57

投稿

WoodenHamlet
WoodenHamlet

スコア306

answer CHANGED
@@ -9,4 +9,11 @@
9
9
  つまり、while (SwSerial.available() > 0){...}は、「シリアルポートに何か入力が入っている場合は{...}ブロックの中身を実行し、シリアルポートに何かが入った状態でなくなったら、抜ける」処理となります。
10
10
  さて、SerialをSerial.beginした直後のタイミングで、シリアルポートに何か入っている(相手から何かデータが送られている)でしょうか?送られていませんね。その結果、whileのブロックの中の処理は全く行わず、そのままdeep_sleep処理に入っているということです。
11
11
 
12
- while (SwSerial.available() > 0){...} の上にさらにループが必要だと分かっていただけましたか?つまり何が言いたいかというと、loop関数を使ってあげてねということです
12
+ while (SwSerial.available() > 0){...} の上にさらにループが必要だと分かっていただけましたか?つまり何が言いたいかというと、loop関数を使ってあげてねということです
13
+
14
+ ----
15
+
16
+ 現在setup内で行っている、deep_sleepする処理を、どういうときにさせたいのかを考えれば、どこに書けばいいのかわかると思います。
17
+ 「どういうときにsleepさせたいの?」
18
+ 「その処理を行っているのはどこなの?」
19
+ を考えてください

1

情報の追記

2021/06/15 06:57

投稿

WoodenHamlet
WoodenHamlet

スコア306

answer CHANGED
@@ -1,3 +1,12 @@
1
1
  setupでやるべき仕事とloopでやるべき仕事が分離できていないように思います。
2
2
  最初に while (SwSerial.available() > 0) に到達した時、SwSerial.available() の値がどうなると思われますか?
3
- つまり、起動直後にシリアルにデータが入ってきていることがあるかどうかということですが
3
+ つまり、起動直後にシリアルにデータが入ってきていることがあるかどうかということですが
4
+
5
+ ------
6
+ https://garretlab.web.fc2.com/arduino_reference/language/functions/communication/serial/available.html
7
+
8
+ Serial.available()は、「シリアルポートから読み取り可能なバイト数(文字数)を取得する。これは、すでにArduinoボードに到着していて、シリアル通信用の受信バッファに格納されているデータである。シリアル通信用の受信バッファは64バイトまで格納することができる。」関数です。
9
+ つまり、while (SwSerial.available() > 0){...}は、「シリアルポートに何か入力が入っている場合は{...}ブロックの中身を実行し、シリアルポートに何かが入った状態でなくなったら、抜ける」処理となります。
10
+ さて、SerialをSerial.beginした直後のタイミングで、シリアルポートに何か入っている(相手から何かデータが送られている)でしょうか?送られていませんね。その結果、whileのブロックの中の処理は全く行わず、そのままdeep_sleep処理に入っているということです。
11
+
12
+ while (SwSerial.available() > 0){...} の上にさらにループが必要だと分かっていただけましたか?つまり何が言いたいかというと、loop関数を使ってあげてねということです