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 に戻る。

conditiontrue 或いは 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.