attachInterrupt()

説明

マウンティングエンコーダのインターフェースの割り込みライブラリ。
異なる動作モードの上、割り込みライブラリが起動させる条件も違います。

  1. 1. Pulse/DIR、CW/CCW、A/B Pulse モード:index 信号の割り込み(setIndexReset()による設定)、比較測定器の割り込み(setComparator()による設定)。
  2. パルスによるLOW からHIGHに或いはHIGHからLOWにの割り込みを発生することがあります。
  3. SSI mode:割り込みの発生条件がありません。

語法


Enc0.attachInterrupt(isr)
Enc1.attachInterrupt(isr)
Enc2.attachInterrupt(isr)
Enc3.attachInterrupt(isr)

関数

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

isr:I割り込みライブラリ このライブラリにintという割り込み事情を受け取るパラメーターがあります。

  1. INTR_COMPARE:比較測定器の割り込みが発生します。
  2. INTR_INDEX: Index信号の割り込みが発生します。
  3. INTR_A_PULSE_LOW:ピンAはパスルが生じて、LOWからHIGHにの割り込みが発生します。
  4. INTR_A_PULSE_HIGH:ピンAはパスルが生じて、HIGHからLOWにの割り込みが発生します。
  5. INTR_B_PULSE_LOW:ピンBはパスルが生じて、LOWからHIGHにの割り込みが発生します。
  6. INTR_B_PULSE_HIGH:ピンBはパスルが生じて、HIGHからLOWにの割り込みが発生します。
  7. INTR_Z_PULSE_LOW:ピンZはパスルが生じて、LOWからHIGHにの割り込みが発生します。
  8. INTR_Z_PULSE_HIGH:ピンZはパスルが生じて、HIGHからLOWにの割り込みが発生します。

1と2はPulse/DIR、CW/CCW、A/B Pulseモードに適合します。3~8はPWMモードに適合します。

フィードバック

なし

#include <Encoder.h>

volatile unsigned long num1 = 0L;
volatile unsigned long num2 = 0L;
void encoder_isr(int flag) { //  ISR ライブラリ
    if(flag == INTR_COMPARE)
      num1++; //発生した計数値が指定値に一致しましたら、変数が1をたします。
    else if(flag == INTR_INDEX)
      num2 ++; // モーターが一周を回してから、変数が1をたします。
}

void setup() {
  Serial.begin(9600);
  Enc0.begin(MODE_AB_PHASE);
  Enc0.setIndexReset(); // 設定された信号が発生したとき(すなわちピンZがHIGHになる)、割り込みが発生して、ISRライブラリを呼びます。
  Enc0.setComparator(20L); //設定された計数値が20にたちましたら、割り込みが発生して、ISRライブラリを呼びます。
  Enc0.attachInterrupt(encoder_isr); //  ISR関数をマウントして、中断機能を起動させます
}

void loop() {
  Serial.print("Pulse number: ");
  Serial.print(Enc0.read()); // pulse数値を読込みます
  Serial.print("    ");
  Serial.print("index: ");
  Serial.print(num1); // ロータリエンコーダの周り数をプリントアウトします
  Serial.print("    ");
  Serial.print("trigger: "); // カウンター数値20をプリントアウトします
  Serial.println(num2);
  delay(100);
}

See also

detachInterrupt()
setRange()
setIndexReset()
setComparator()


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.