ここから本文です

今arduinoでバイクのタコメーターを絶賛作成中です。 こんな感じでいいですかね? ...

gen********さん

2019/2/2807:59:09

今arduinoでバイクのタコメーターを絶賛作成中です。
こんな感じでいいですかね?
今はシリアル通信ですが後程LCDか7セグにi2cでディスプレイ表示する予定です。

もしよろしければスケッチの改善策をご教授ください。お願いします。

+------------------+

#define pin 13//パルス入力ピン宣言
int rpm;//回転数の変数宣言
void setup() {
pinMode(pin, INPUT);//変数pinからパルス入力宣言
Serial.begin(9600);//シリアル通信開始宣言
}

void loop() {
pulseIn(pin, HIGH) + pulseIn(pin, LOW);
//onとoffの合計が1hz
rpm = 60000 / (pulseIn(pin, HIGH) + pulseIn(pin, LOW));
//60秒×1000ms(一秒)÷1hz=rpm
Serial.println(rpm);
//rpm値をシリアル出力

//{{{ここにディスプレイなどの関数(rpm)}}}
}

+-----------------+

多分これで行けると思うんですが。

pulseIn,define pin 13,Serial.println,Serial.begin,void setup,ビジーウェイト,点灯切替周期

閲覧数:
50
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

nac********さん

2019/2/2810:08:32

大丈夫かどうかは、やってみれば判る事です。
その品質で満足するかどうかはその人の判断ですから。

注意点
・13番ピンはLEDが付いているので止めておいた方が良い。
・7セグのダイナミック駆動の場合はそこに書くのは良くない。
(例えば1000rpmの場合→取得に2パルスとすると取得に0.12秒ほどかかる→点灯切替周期に間に合わない)
・rpm=60000000UL/(pulseIn(pin, HIGH) + pulseIn(pin, LOW));
・あと、pulseInを使う場合はパルスが来ないとフリーズ状態(ビジーウェイト)になるので、エンジン停止時の処理をどうするか?

といった所かな。

  • 質問者

    gen********さん

    2019/2/2811:55:06

    7セグはダイナミックじゃなくてi2cで送ります

    #define pin 8//パルス入力ピン宣言
    int rpm;//回転数の変数宣言
    void setup() {
    pinMode(pin, INPUT);//変数pinからパルス入力宣言
    Serial.begin(9600);//シリアル通信開始宣言
    }

    void loop() {
    pulseIn(pin, HIGH,10000) + pulseIn(pin, LOW,10000);
    //onとoffの合計が1hz
    rpm = 60000000 / (pulseIn(pin, HIGH) + pulseIn(pin, LOW));
    //60秒×1000ms(一秒)÷1hz=rpm
    Serial.println(rpm);
    //rpm値をシリアル出力

    //{{{ここにディスプレイなどの関数(rpm)}}}
    }

    でいいですかね

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/3/6 20:03:09

ありがとうございました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる