PaulStoffregen / Encoder

Quadrature Encoder Library for Arduino
http://www.pjrc.com/teensy/td_libs_Encoder.html
540 stars 239 forks source link

Can't use interrupt pins on Arduino/Genuino 101 #18

Closed DaisukeUra closed 7 years ago

DaisukeUra commented 7 years ago

Hi there.

I use this library on my Arduino/Genuino 101. When only use "change" supported interrupt pins, such as 7&8, Encoder instance looks like doesn't count pulses. It is properly counting when I use "change" not supported pins. How I use "change" supported interrupt pins on this library?

Best regards.

DaisukeUra commented 7 years ago

I've try this code and it properly works.

#include <Encoder.h>

Encoder *myEnc;

void setup() {
  Serial.begin(9600);
  Serial.println("Basic Encoder Test:");
  myEnc = new Encoder(7, 8);
}

long oldPosition  = -999;

void loop() {
  long newPosition = myEnc->read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    Serial.println(newPosition);
  }
}

I don't know why it works well. I think it remains some problem in library's code.

Thanks.

PaulStoffregen commented 7 years ago

https://www.arduino.cc/en/Main/ArduinoBoard101

"change is only supported by pins 2, 5, 7, 8, 10, 11, 12, 13"

DaisukeUra commented 7 years ago

@PaulStoffregen Thanks. I know change supported pins.

Why does not the sample code below work?


#include <Encoder.h>

Encoder myEnc(7, 8);

void setup() {
  Serial.begin(9600);
  Serial.println("Basic Encoder Test:");
}

long oldPosition  = -999;

void loop() {
  long newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    Serial.println(newPosition);
  }
}
DaisukeUra commented 7 years ago

This code is Encoder/examples/Basic/Basic.pde.