回答編集履歴
4
difftimeの使い方が間違っていたので修正
answer
CHANGED
@@ -3,13 +3,13 @@
|
|
3
3
|
結論としては、Cの標準関数版の`difftime`関数は使えないので、代替して何とかする必要があります。
|
4
4
|
`time_t`型は本来、必ずしも秒単位ではないですが、Arduinoの[Timeライブラリ](https://github.com/PaulStoffregen/Time)だと、`time_t`型は秒単位です。なので、Arduinoのプロジェクトに限っては秒として扱って問題無いはずです。
|
5
5
|
|
6
|
-
```
|
6
|
+
```C
|
7
|
-
|
7
|
+
time_t start_time = RTC.get();
|
8
|
-
|
8
|
+
... // いろいろ処理
|
9
9
|
|
10
|
-
|
10
|
+
time_t end_time = RTC.get();
|
11
11
|
|
12
|
-
|
12
|
+
time_t elapsed = end_time - start_time;
|
13
13
|
```
|
14
14
|
で `elapsed`変数に経過秒数が入ります。これで`difftime`関数の結果と同等と考えてよさそうです。これで充分(と言うかこれしか無い)ではないでしょうか。
|
15
15
|
|
@@ -48,7 +48,8 @@
|
|
48
48
|
current_time = RTC.get();
|
49
49
|
elapsed_time = current_time - start_time;
|
50
50
|
|
51
|
+
// start_time 〜 current_timeの経過秒数を取得
|
51
|
-
elapsed_time = difftime(
|
52
|
+
elapsed_time = difftime(current_time, start_time);
|
52
53
|
}
|
53
54
|
|
54
55
|
```
|
3
コード間違い修正
answer
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
time_t end_time = RTC.get();
|
11
11
|
|
12
|
-
time_t elapsed = end_time -
|
12
|
+
time_t elapsed = end_time - start_time;
|
13
13
|
```
|
14
14
|
で `elapsed`変数に経過秒数が入ります。これで`difftime`関数の結果と同等と考えてよさそうです。これで充分(と言うかこれしか無い)ではないでしょうか。
|
15
15
|
|
2
一部修正
answer
CHANGED
@@ -62,4 +62,4 @@
|
|
62
62
|
|
63
63
|
exit status 1
|
64
64
|
```
|
65
|
-
|
65
|
+
DS3231用ライブラリを使う限り、標準関数版の`difftime`、更には標準の`time.h`で宣言される各種time関連関数は、使用をあきらめなければならないようです。
|
1
改行位置修正
answer
CHANGED
@@ -1,9 +1,7 @@
|
|
1
|
-
手持ちのArduinoUNOを引っ張り出して確認してみました。とは言えRTCのDS3231を実装して試したわけではないので、
|
1
|
+
手持ちのArduinoUNOを引っ張り出して確認してみました。とは言えRTCのDS3231を実装して試したわけではないので、ビルドが通るまでしか確認できてませんが。
|
2
|
-
ビルドが通るまでしか確認できてませんが。
|
3
2
|
|
4
3
|
結論としては、Cの標準関数版の`difftime`関数は使えないので、代替して何とかする必要があります。
|
5
|
-
`time_t`型は本来、必ずしも秒単位ではないですが、Arduinoの[Timeライブラリ](https://github.com/PaulStoffregen/Time)だと、`time_t`型は秒単位です。
|
4
|
+
`time_t`型は本来、必ずしも秒単位ではないですが、Arduinoの[Timeライブラリ](https://github.com/PaulStoffregen/Time)だと、`time_t`型は秒単位です。なので、Arduinoのプロジェクトに限っては秒として扱って問題無いはずです。
|
6
|
-
なので、Arduinoのプロジェクトに限っては秒として扱って問題無いはずです。
|
7
5
|
|
8
6
|
```
|
9
7
|
time_t start_time = RTC.get();
|
@@ -54,7 +52,7 @@
|
|
54
52
|
}
|
55
53
|
|
56
54
|
```
|
57
|
-
|
55
|
+
ビルドの結果です。
|
58
56
|
```
|
59
57
|
C:\Users\user01\AppData\Local\Temp\ccjcKCug.ltrans0.ltrans.o: In function `loop':
|
60
58
|
|
@@ -64,4 +62,4 @@
|
|
64
62
|
|
65
63
|
exit status 1
|
66
64
|
```
|
67
|
-
DS3231用ライブラリを使う限り、標準関数版の`difftime`、更には標準の`time.h`で宣言される各種time関連関数は、使用をあきらめなければならないようです。
|
65
|
+
結論として、DS3231用ライブラリを使う限り、標準関数版の`difftime`、更には標準の`time.h`で宣言される各種time関連関数は、使用をあきらめなければならないようです。
|