回答編集履歴

2

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

2021/06/15 06:57

投稿

WoodenHamlet
WoodenHamlet

スコア306

test CHANGED
@@ -21,3 +21,17 @@
21
21
 
22
22
 
23
23
  while (SwSerial.available() > 0){...} の上にさらにループが必要だと分かっていただけましたか?つまり何が言いたいかというと、loop関数を使ってあげてねということです
24
+
25
+
26
+
27
+ ----
28
+
29
+
30
+
31
+ 現在setup内で行っている、deep_sleepする処理を、どういうときにさせたいのかを考えれば、どこに書けばいいのかわかると思います。
32
+
33
+ 「どういうときにsleepさせたいの?」
34
+
35
+ 「その処理を行っているのはどこなの?」
36
+
37
+ を考えてください

1

情報の追記

2021/06/15 06:57

投稿

WoodenHamlet
WoodenHamlet

スコア306

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