掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Arduino MsTimer2 任意のタイミングでStartする方法について (ID:149788)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
現在、Arduinoを用いたプログラミングの練習をしています。 ArduinoとPC(Python)をUSB接続し、PC側から合図を送った後、一定時間ごとに文字列を出力するプログラムを作成しています。 内容として、合図を読み取ったタイミングでスタートし、今回のプログラムでは合図を読み取ったちょうど1秒後に最初に文字列を出力し、その後1秒毎に文字列を出力したいと考えています。 私は最初、setup()内のMsTimer2::start();をloop内に記載すればいいのではないかと考えましたが、上手く動作しませんでした。おそらくMsTimer2の仕様だと思います。 改良した以下のプログラムでは、合図の後に文字列を送信することはできました。しかし、毎回指定した時間後に出力されるとは限らないのでは?と考えました。 今回は非常に簡単なプログラムですが、今後はモーター制御などに応用したいと考えています。PythonよりもArduinoのほうが時間計測が正確であること、ほかの手段であるdelayはその間処理ができなくなることを学んだため、今後のことを考慮し、ArduinoでMsTiemr2を使用しようと考えました。 まだまだ勉強中で知らないことも多いのですが、もし改善方法をご存じの方がいましたら、ご教授いただければ幸いです。 よろしくお願いいたします。 以下プログラムです。(シリアルモニタにて、改行なしで" s; "と入力すれば実行されます) #include <MsTimer2.h> int key = 0; String flag; void setup() { Serial.begin(115200); MsTimer2::set(1000, timerFire); MsTimer2::start(); } void timerFire() { if (key==1) { Serial.println("hello"); } } void loop() { if (key==0) { if (Serial.available()>0) { flag = Serial.readStringUntil(';'); if (strcmp(flag.c_str(), "s")==0) { key = 1; } } } }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.