前提
Arduinoにおいて例えばシリアルモニタ等からaを受け取ったらモーターが正転、bを受け取ったら後転させ、その時のモーターの回転数を1秒ごとに出力するプログラムを作成しました。
実現したいこと
現在はシリアルモニタ―を開いた瞬間から回転数を取得しているが、aやbといった信号を受け取ってから計測し始めるようなプログラムを作成したいです。
またbが入力された際はマイナス値で出力したいです。(countはlong型)
つまりaが入力されたら1秒ごとに回転数を出力、bが入力されたら1秒ごとにマイナスで回転数を出力といった感じです。
発生している問題・エラーメッセージ
エラー等はないのですが、以下のプログラムではシリアルモニタを開いた瞬間から回転数をカウントしてしまいます。(最初は回転していない為0が出力され続けます。)
該当のソースコード
Arduino
void countInc() { count++; //センサが1回反応するごとにプラス1}void loop() { unsigned long t = millis(); //tは現在の時間を取得 if (t - t0 >= 1000) { //1000ミリ秒経ったら noInterrupts(); Serial.println(count); // count = 0; interrupts();//割り込み再開 t0=t; // } if (Serial.available() > 0) { //ここから先はモーターの操作 data = Serial.read();//シリアル通信で受け取ったデータを読み込む if (data == 'a') { digitalWrite(IN1, HIGH); // 正転 digitalWrite(IN2, LOW); // 正転 } else if (data == 'b') { digitalWrite(IN1, LOW); // 後転 digitalWrite(IN2, HIGH); // 後転 } }
試したこと
while文などを使いましたがうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
どうかよろしくお願いいたします。
0 コメント