回答編集履歴
2
質問の更新に対するレスポンス
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
情報の追記
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関数を使ってあげてねということです
|