setIndexReset()
説明
Index信号を中断することを設定します(すなわちZピンがHIGHになりましたら、中断をさせます)。Pulse/DIR、CW/CCW、A/B Pulseモードにしか使えないです。
注意:この関数を呼びましたら、index reset機能も同時に起動させます、すなわちindex信号が発生する際に(ZピンがHIGHになる)、本体がカウンター計数値を0にします。
語法
Enc0.setIndexReset()
Enc0.setIndexReset(condition)
Enc1.setIndexReset()
Enc1.setIndexReset(condition)
Enc2.setIndexReset()
Enc2.setIndexReset(condition)
Enc3.setIndexReset()
Enc3.setIndexReset(condition)
関数
ENC0、ENC1、ENC2、ENC3のコーディング インターフェースにマッピングします。
condition
:true 或いはfalse。Index信号の中断機能を起動させたいなら、trueを設定しておくべき、逆にfalseを設定します。(初期値はtrueです)
フィードバック
なし
例
ENC0 をA/B Pulseに設定します。ロータリエンコーダの回転数と読み取れたカウンター数値をプリントアウトします。(A、B、Cオンラインの場合)
#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(); // Index信号が発生しますと(すなわちZピンがHIGHになる)、中断をさせ、ISR関数を呼びますthe associated ISR function 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
- begin()
- attachInterrupt()
- read()
- setComparator()
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.