前提・実現したいこと
MsTimer2のスタートタイミングを、合図の後にすること。
発生している問題・エラーメッセージ
該当のソースコード
(シリアルモニタにて、改行なしで" 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; } } } }
試したこと
setup()内のMsTimer2::start();をloop内に記載すればいいのではないかと考えましたが、上手く動作しませんでした(なにも出力されず)。おそらくMsTimer2の仕様だと思います。もし詳しい方がおりましたら、ご教授またはURLなど貼っていただけると幸いです。
補足情報(FW/ツールのバージョンなど)
現在、Arduinoを用いたプログラミングの練習をしています。
ArduinoとPC(Python)をUSB接続し、PC側から合図を送った後、一定時間ごとに文字列を出力するプログラムを作成しています。
内容として、合図を読み取ったタイミングでスタートし、今回のプログラムでは合図を読み取ったちょうど1秒後に最初に文字列を出力し、その後1秒毎に文字列を出力したいと考えています。
記載したプログラムでは、合図の後に文字列を送信することはできました。しかし、毎回指定した時間後に出力されるとは限らないのでは?と考えました。
今回は非常に簡単なプログラムですが、今後はモーター制御などに応用したいと考えています。PythonよりもArduinoのほうが時間計測が正確であること、ほかの手段であるdelayはその間処理ができなくなることを学んだため、今後のことを考慮し、ArduinoでMsTiemr2を使用しようと考えました。
まだまだ勉強中で知らないことも多いのですが、もし改善方法をご存じの方がいましたら、ご教授いただければ幸いです。
よろしくお願いいたします。
Arduino 1.8.12
Arduino UNO
MsTimer2 (ver記載がありませんでしたが、最新でした。2021/7/7現在)
Window 10
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/08 14:12
2021/07/16 11:04