回答編集履歴

5

質問の追記を受けて更に追記

2018/04/19 03:34

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -99,3 +99,25 @@
99
99
 
100
100
 
101
101
  ご提示のコードですと`Serial.println`を実行したときに出力されるべき文字列の先頭の方がデータが欠けている様子なので、シリアル出力の立ち上がりに問題が出ているようにも思えます。通信速度を下げると改善するかも、です。(これもあくまで「可能性としてあるかも?」程度の思い付きの意見です)
102
+
103
+
104
+
105
+ ---
106
+
107
+ **質問の追記2を受けて更に追記:**2018/04/19 12:34
108
+
109
+
110
+
111
+ ローカル変数の領域が残り882バイトですと、スタック領域としてかなり切迫していると思います。
112
+
113
+ (まぁ、RAMが2048バイトなら仕方が無いですが)
114
+
115
+
116
+
117
+ どこか、自作のコード部分でメモリを破壊している可能性が高いように思います。
118
+
119
+ `String`オブジェクトのメモリリークと言うよりは、`String`オブジェクトは恐らく被害者かと。
120
+
121
+
122
+
123
+ 自作の関数の呼び出しが深くなっていないか、自作の関数の中でローカル(auto)変数を無駄に多く使っていないかなどをチェックして、スタックをなるべく使わないよう工夫してみてください。

4

脱字修正

2018/04/19 03:34

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- 下のコードは、自作の`printOneByOne`関数で`String`オブジェクトの文字列をひとつずつ出力する例です。通信速度は9.600bpsにして、1文字ずつ、`Serial.flush`して100ミリ秒待機もさせています。これくらいやればくらなんでも通信用チップの送信用FIFOバッファがあふれるようなことも無いでしょう。
21
+ 下のコードは、自作の`printOneByOne`関数で`String`オブジェクトの文字列をひとつずつ出力する例です。通信速度は9.600bpsにして、1文字ずつ、`Serial.flush`して100ミリ秒待機もさせています。これくらいやればくらなんでも通信用チップの送信用FIFOバッファがあふれるようなことも無いでしょう。
22
22
 
23
23
  ```C++
24
24
 

3

表示がおかしいので修正

2018/04/18 03:03

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -86,6 +86,8 @@
86
86
 
87
87
  ご参考まで。
88
88
 
89
+
90
+
89
91
  ---
90
92
 
91
93
  **追記しました:** 2018/04/18 11:24

2

補足を追記

2018/04/18 02:25

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -85,3 +85,15 @@
85
85
 
86
86
 
87
87
  ご参考まで。
88
+
89
+ ---
90
+
91
+ **追記しました:** 2018/04/18 11:24
92
+
93
+
94
+
95
+ 回答した後に質問を見直して気がつきましたが、お使いのものは「Arduino pro mini 3.3V 8MHz」とのことで低電圧で電源供給能力が少し弱いのかもしれません。周辺のハードウェアを色々付けていると影響が無いとも言えません。
96
+
97
+
98
+
99
+ ご提示のコードですと`Serial.println`を実行したときに出力されるべき文字列の先頭の方がデータが欠けている様子なので、シリアル出力の立ち上がりに問題が出ているようにも思えます。通信速度を下げると改善するかも、です。(これもあくまで「可能性としてあるかも?」程度の思い付きの意見です)

1

誤字修正

2018/04/18 02:24

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- 下のコードは、自作のprintOneByeOne()関数で`String`オブジェクトの文字列をひとつずつ出力する例です。通信速度は9.600bpsにして、1文字ずつ、`Serial.flush`して100ミリ秒待機もさせています。これくらいやればくらなんでも通信用チップの送信用FIFOバッファがあふれるようなことも無いでしょう。
21
+ 下のコードは、自作の`printOneByOne`関数で`String`オブジェクトの文字列をひとつずつ出力する例です。通信速度は9.600bpsにして、1文字ずつ、`Serial.flush`して100ミリ秒待機もさせています。これくらいやればくらなんでも通信用チップの送信用FIFOバッファがあふれるようなことも無いでしょう。
22
22
 
23
23
  ```C++
24
24