arduinoからのデータをExcelに保存する

#arduinoからのデータをExcelに保存する

######この記事ではOffice365のExcelを使用しています。また、DataStreamerのバージョンは5.10.7451を使用しています。

##概要
Excelでcsv形式のシリアル通信を受け取り、このように時間ごとに表として取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/f37f2976-be9b-4329-1e75-60c15938450b.png)

また、ただ単なる表としての扱いですのでこのようにグラフで見ることもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/9fc21619-b5c0-e05b-8f9b-a2826741929a.png)

##1. DataStreamerを有効化する。

Excelの[ファイル]>[オプション]を開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/72876086-00ab-ae05-8931-abaa56e92845.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/22b37702-686d-a812-2707-5fe6976ae21c.png)

[Excelのオプション]の[アドイン]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/4bf85f82-23c5-cb15-c3d4-233a859e570a.png)

管理(A):"Excel アドイン"となっているところを"COM アドイン"に変更し、[設定]を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/8ec547c4-ad4a-73bf-4447-f362163c47db.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/85a07065-ad35-9c31-639b-bc32f28ec3fc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/c87370bb-8d9b-a453-a126-0497a9e2dbc2.png)

"Microsoft Data Streamer for Excel"の項目にチェックを入れてOKを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/af873024-624a-6660-846f-c1f870d39ace.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/8dee89e0-f4a4-3905-973a-af9d31bb298a.png)

"Data Streamer"というタブがあったら完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/b67dda92-708b-7fe6-a844-30f755a91b96.png)


##2. シリアル通信を受信する。
シリアル通信が可能なデバイスをパソコンに接続し、<Data Streamer>のタブの中の<デバイスの接続>の中から接続したデバイスのCOMを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/400ef211-b112-0f19-d232-199f76e367ec.png)

<データの開始>を押すとデータを記録し始めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/59e1e202-056b-8767-9343-91dd48a56925.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/f93653c6-2091-5966-3a5a-a6161fb8db76.png)

また、データの範囲を選択することでグラフを作ることもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/8e8eca18-5bff-a985-b39b-7064bf80d060.png)

ここではarduinoに以下のコードを書き込み、120度ずつ位相がずれているsin波をcsv形式で出力するようにした。(ex:0.21,0.74,-0.95\n)

```cpp:Excel_test.ino
#include <math.h>

double out1, out2, out3;
int t = 0;
byte d = 3;
float t_rad;

void setup() {
  Serial.begin(9600);
}

void loop() {
  t += d;
  t = t % 360;

  t_rad = t * 2 * M_PI / 360;
  out1 = sin(t_rad);
  t_rad = (t + 120) * 2 * M_PI / 360;
  out2 = sin(t_rad);
  t_rad = (t + 240) * 2 * M_PI / 360;
  out3 = sin(t_rad);

  Serial.print(out1);
  Serial.print(",");
  Serial.print(out2);
  Serial.print(",");
  Serial.println(out3);
  delay(40);

}
```

##3. 設定
[詳細]>[設定]からシリアル通信関係の設定が行える。arduinoで9600bpsでシリアル通信をする場合、特に何もしなくてもよい。(デファルトで9600bpsに設定されている感じ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/ea9c109d-d2b6-a484-9d45-fb59344abee1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/d27a4754-5616-b797-4450-48febfcb73a5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/75e0dbe2-e0f1-ab2f-6f8c-8062ed2dc003.png)

また、"設定"のシートで表示する行の数などの設定ができる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679930/1cbfe4bb-55ff-6f9f-f5d9-8660932a130b.png)

>参考文献
>Microsoft What is Data Streamer?
>https://support.microsoft.com/en-us/office/what-is-data-streamer-1d52ffce-261c-4d7b-8017-89e8ee2b806f