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.