My question is related to my previous question. These encoder programs outputs two line per pule/tick.
Here is the part of the code I want to use:
void loop()
{
// Read the status of the inputs
debouncerA.update();
debouncerB.update();
int8_t EncVariation = 0;
if (debouncerA.rose())
{ // if input A changed from low to high, it was CW if B is high too
EncVariation = (debouncerB.read()) ? 1 : -1;
}
else if (debouncerA.fell())
{ // if input A changed from high to low, it was CW if B is low too
EncVariation = (debouncerB.read()) ? -1 : 1;
}
else if (debouncerB.rose())
{ // if input B changed from low to high, it was CCW if A is high too
EncVariation = (debouncerA.read()) ? -1 : 1;
}
else if (debouncerB.fell())
{ // if input B changed from high to low, it was CCW if B is low too
EncVariation = (debouncerA.read()) ? 1 : -1;
}
//
if (EncVariation != 0) {
encoder0Pos = encoder0Pos + EncVariation;
int degs = (encoder0Pos * 6) % 360 ;
if(degs<0){ degs = 360 + degs; }
Serial.println (degs);
}
}
For three inputs/ticks this outputs like:
6
12
18
24
30
36
But I only need the second ones like:
12
24
36
How can I do that? (I need it to send the relevant data do a PC.)
I spend so long time on it couldnt find any solution.
if(degrees<0){ deg = 360 + degs; }
is it correct? You do the calculation of degrees and then start using degs.