readNanoseconds()

説明

この関数がPWMモードにしか使えないです。 read() と同じく機能がありますが、ns (Nanosecond)単位のパスルしかフィードバックしません。

語法


Enc0.readNanoseconds()
Enc1.readNanoseconds()
Enc2.readNanoseconds()
Enc3.readNanoseconds()

変数

Enc0、Enc1、Enc2、Enc3:ENC0、ENC1、ENC2、ENC3のコーディング インターフェースにマッピングします。

フィードバック

フィードバックされたパスルはLOW 或いはHIGH(単位:ns)、最大フィードバック時間は4.2秒です。注意: readNanoseconds() がISR関数にてしか呼ばされないですが、他のところに呼ばされたら、フィードバックが0になっています。

#include <Encoder.h>

volatile unsigned long num1 = 0L;
volatile unsigned long num2 = 0L;
void encoder_isr(int flag) { //  ISRライブラリ
    if(flag == INTR_A_PULSE_LOW)
      num1 = Enc1.readNanoseconds(); // パスルLOW幅を読込みする
    else if(flag == INTR_A_PULSE_HIGH)
      num2 = Enc1.readNanoseconds(); // パスルのHIGH幅を読込みする
}

void setup() {
  Serial.begin(9600);
  Enc1.begin(MODE_CAPTURE);
  Enc1.attachInterrupt(encoder_isr); // ISRライブラリをマウントして、中断機能を起動する
}

void loop() {
  Serial.print("LOW:");
  Serial.print(num1); // パスルLOWの幅(単位:μs)をプリントアウトする
  Serial.print("    ");
  Serial.print("HIGH:");
  Serial.println(num2); // パスルHIGHの幅(単位:μs)をプリントアウトする
  delay(100);
}

See also

begin()
attachInterrupt()


Libraries Reference Home

The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.