【Arduino】パルスの周波数を計測をしてみた。

パルスの周波数を計測をしてみた。
今回は自分のプログラムではありません。orz

ネットで出てきたプログラムを参考にほんの少しだけ
変更しただけのプログラムです。
(今までのプログラムもサンプルを少し変更した程度ですけどね。。。)
元のプログラムを作った方に感謝すると共に
当ブログでは一部追記はしましたが
極力元のプログラムのまま掲載しています。

#include <LiquidCrystal.h>
#include <MsTimer2.h>
#define LED_PIN 13 // フォトインタラプタ動作確認用
LiquidCrystal lcd( 8,9,4,5,6,7 ); // (rs, enable, d4, d5, d6, d7);
volatile unsigned int cnt=0,cnt_t;
volatile unsigned char tmr2_f=0;
void int_cnt(void){ cnt++; }
void int_tmr2(void){ cnt_t = cnt ; cnt = 0 ; tmr2_f = 1 ; }

void setup() {
Serial.begin(9600);
while( !Serial );
Serial.println("Arduino Program Start !!");
pinMode( 2, INPUT ); // int 0
pinMode( LED_PIN , OUTPUT );
lcd.begin( 16,2 ); lcd.print("Arduino RPM");
attachInterrupt( 0 , int_cnt , RISING ); // INT0
MsTimer2::set( 1000, int_tmr2 ); // 1S INT
MsTimer2::start();
}
void loop() {
if ( digitalRead( 2 )==LOW ){ digitalWrite( LED_PIN,LOW ); } else { digitalWrite( LED_PIN,HIGH ); }
if ( tmr2_f == 1 ){ tmr2_f = 0 ;
Serial.print("cnt_t = "); Serial.print( cnt_t );
Serial.print(" RPM = ");Serial.println( cnt_t * 60 );
lcd.setCursor( 0,1 ); // ←追記
lcd.print("RPM = ");lcd.print(" "); // ←追記 表示更新用クリア
lcd.setCursor( 0,1 );
lcd.print("RPM = ");lcd.print( cnt_t * 60 );lcd.print(" ");
} // if
}


2pinの入力パルスを割り込みで読んでいます。
attachInterruptってヤツですね。
MsTimer2.hというライブラリを下記のサイトから用意して
あらかじめインストールする必要があります。
http://playground.arduino.cc/Main/MsTimer2
   http://playground.arduino.cc/uploads/Main/MsTimer2.zip

この記事へのコメント


この記事へのトラックバック