見出し画像

Microsoft Excel Data Streamer 7話

まさかの質問をもらいました

第6話までチビチビ書いていましたが、気が付けばソコソコのアクセス数が出ていました。
まさかレトロゲームのクリア動画ばかり作っている私ですが、文字で人が呼べることに感激です。

ふと携帯を見ると、質問をもらってました。
、、、とは言え、仕事が多忙でArduinoの知識が薄まってしまいズバッと答えが書けません。スミマセン!
ですが、昔に作ったソースは出てきたんで、そのまま載せます。
その前に迷惑を掛けない程度にコピペさせて頂き、質問内容を読み解かせていただきます。

頂いた質問

御サイト(特に第四、五、話)拝見致しました。貴重な情報、ありがとうございます。
私の目的は Data-Streamer から Arduino へ指示を送りサーボモーターを任意の角度回転させることです
御記事ではランプを点滅させるために( 0,1,) の二進法数値を使用されているのではないかと憶測しております。 例えば、サーボモーターを47.5°に回転させたい場合どのような手順を踏めばよいのかを御教示いただければ幸甚至極です。

質問からやることを分解

こうして質問されるとうれしいですね。
※会社ではウケが悪かったので初めての理解者様ですよ!
やることを分解すると下記の3個に分かれますね。

  1. Arduinoでのサーボモータ角度制御

  2. Data Streamerでデータの入出力

  3. 上記1と2を合体させてプログラムをブラッシュアップ

Arduinoでのサーボモータ角度制御

こちらはご自身でお願いします。
とは言っても、ネットに素材は多いです。
、、、わかります!ネットの素材は書き手が上級者から下級者まで様々なので真似しても上手くいかなかったり苦しい時があるでしょう。
しかし、自分を引き上げるしかないのです!
※これを言っている私自身が下級者ですけどww

Data Streamerでデータの入出力

当時、Shts!さんのサイトで見よう見まねを数時間繰り返したらできました。

なぜカンマ区切りが必要か?と言うと、Data Streamerはエクセルのアドインで、エクセルのデータをシリアル通信で送るとセルの間がカンマ区切りになります。
逆を言うと、カンマ区切りで数値を送り放題です。
ご質問者様、頑張って耐えて勉強するしかねえですぜ!

プログラムを合体させてブラッシュアップ

だいたい動き出すと、寝る間を惜しんでもブラッシュアップしたくなるzoneに入る時があります。
(別名:初心者が何かが達成しそうなワクワクが止まらないzone)
質問者様にも来るように願ってます。

Data Streamerでデータの入出力のサンプル

Shts!さんのプログラムをArduino IDEにコピペして、少し手を加えたらこんな感じです。
3年前?の作りかけソース、当時の実行環境がないので未確認でスマン!


unsigned long sw1 = 0, sw2 = 0, sw3 = 0, sw4 = 0, i = 0 ,now = 0, timec = 0;
char buff[100];

void setup() {
  Serial.begin(9600);
  now = millis();
}

void loop() {
  
  if (Serial.available() > 0) {
    buff[i] = Serial.read();
    if (buff[i] == 'e') {
      buff[i] == '\0';
      sw1 = atol(strtok(buff, ","));
      sw2 = atol(strtok(NULL, ","));
      sw3 = atol(strtok(NULL, ","));
      sw4 = atol(strtok(NULL, ","));
      i = 0;
    } else {
      i += 1;
    }
  }


 if (millis() > (now+500)) {
    buff[i] = Serial.read();
      Serial.print(sw1);
      Serial.print(",");
      Serial.print(sw2);
      Serial.print(",");
      Serial.print(sw3);
      Serial.print(",");
      Serial.println(sw4);
      now = millis();
 }
  
}

これをArduinoに入れて、Data Streamerから入出力を設定すると、Data StreamerからArduinoへ飛ばした数値をData Streamerに返してくるはずです。
こうやって、「動くやーん!」って声が出たら勝ちです。
あとは、打ち込みながら考えて自分色に染めてくださいw


この記事が気に入ったらサポートをしてみませんか?