セクションの複数ページをまとめています。 印刷またはPDF形式で保存...

もとのページに戻る

2024-11-14 現在

PulseCounter

パルスカウンターを使ったサンプル
    パルスカウンターを用いたアクト例です。

    パルスカウンターは、マイコンを介在せず信号の立ち上がりまたは立ち下りの回数を計数するものです。不定期のパルスを計数し一定回数までカウントが進んだ時点で無線パケットで回数を送信するといった使用方法が考えられます。

    アクトの機能

    • 子機側のDIO8に接続したパルスを計数し、一定時間経過後または一定数のカウントを検出した時点で無線送信する。
    • 子機側はスリープしながら動作する。

    アクトの使い方

    必要なTWELITE

    役割
    親機MONOSTICK BLUEまたはRED
    アクトParent_MONOSTICKを動作させる。
    子機1.TWELITE DIP
    2.BLUE PAL または RED PAL +環境センサーパル AMBIENT SENSE PAL

    アクトの解説

    setup()

    // Pulse Counter setup
    PulseCounter.setup();

    パルスカウンターの初期化を行います。

    begin()

    void begin() {
    	// start the pulse counter capturing
    	PulseCounter.begin(
    		  100 // 100 count to wakeup
    		, PIN_INT_MODE::FALLING // falling edge
    		);
    
    	sleepNow();
    }

    パルスカウンターの動作を開始し、初回スリープを実行します。PulseCounter.begin()の最初のパラメータは、起床割り込みを発生させるためのカウント数100で、2番目は立ち下がり検出PIN_INT_MODE::FALLINGを指定しています。

    wakeup()

    void wakeup() {
    	Serial	<< mwx::crlf
    			<< "--- Pulse Counter:" << FOURCHARS << " wake up ---"
    			<< mwx::crlf;
    
    	if (!PulseCounter.available()) {
    		Serial << "..pulse counter does not reach the reference value." << mwx::crlf;
    		sleepNow();
    	}
    }

    起床時にPulseCounter.available()を確認しています。availableつまりtrueになっていると、指定したカウント数以上のカウントになっていることを示します。ここではfalseの場合再スリープしています。

    カウント数が指定以上の場合はloop()で送信処理と送信完了待ちを行います。

    loop()

    uint16_t u16ct = PulseCounter.read();

    パルスカウント値の読み出しを行います。読み出した後カウンタはリセットされます。