setRange()
説明
内部カウンターの上限値を設定する。カウンター値が上限値に増加すると、0 に戻ってから、計数オーバーフローで一回中断させる;逆に、カウンター値が 0 になると、上限值に戻ってから、計数を戻し一回中断させる
注意:86Duino Coding 105 バージョンからしか使えないし、その上、Pulse/DIR、CW/CCW、A/B Pulseモードでしか使えない。
プログラミング言語
Enc0.setRange(val)
Enc0.setRange(val, condition)
Enc1.setRange(val)
Enc1.setRange(val, condition)
Enc2.setRange(val)
Enc2.setRange(val, condition)
Enc3.setRange(val)
Enc3.setRange(val, condition)
パラメータ
Enc0、Enc1、Enc2、Enc3:エンコーダ インターフェイス
val:計数機の上限値、範囲は 1 ~ 4,294,967,295 (2^32 – 1)。もし 199 を設定すれば、計数機値が 199 に至ってから、0 に戻る。或いは 0 になると、199 に戻る。
condition:true 或いは false。計数オーバーフローや計数を戻しの中断を起動させたいなら、true を設定する。逆に false を設定する。(デフォルトは true)
フィードバック
なし
例
#include "Encoder.h"
volatile int ovnumber = 0;
volatile int uvnumber = 0;
void encoder_callback(int flag) {
if(flag == INTR_OVERFLOW) // 計数オーバーフローの中断場合
ovnumber++;
else if(flag == INTR_UNDERFLOW) // 計数を戻しの中断場合
uvnumber++;
}
void setup() {
Serial.begin(9600);
Enc0.begin(MODE_AB_PHASE);
Enc0.setRange(199); // 上限値を 199 を設定する
Enc0.attachInterrupt(encoder_callback); // callback をマウントして、中断機能を起動する
}
void loop() {
Serial.print("count = ");
Serial.print(Enc0.read()); // エンコーダの数値を読取る
Serial.print(" ");
Serial.print("overflow = ");
Serial.print(ovnumber); // 計数オーバーフローの回数を印刷する
Serial.print(" ");
Serial.print("underflow = ");
Serial.println(uvnumber); // 計数を戻しの回数を印刷する
delay(100);
}
See also
- setComparator()
- setIndexReset()
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.
