CODE PART 2
// Simulate an encoder using 2 DOs. The sim goes fwd or backwards
// and raises flag when the cycle is complete.
// the simulation has 5 states.
//
// 4 cycles:
// A--0 0 1 1
// B--0 1 1 0
void SimulateEncoder(byte Pos, byte On)
{
static char State=0;
char A,B;
// Direction change using IO mapping
// make encoder go fwd / backwards
if(Pos)
{
A=11;
B=12;
}
else
{
A=12;
B=11;
}
//manage states
if(On)
{
State++;
}
else
{
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(led, LOW);
State = 0;
}
//Encoder sim
switch(State)
{
case 0:
digitalWrite(A, LOW);//Serial.println("1");
//digitalWrite(B, LOW); //S L OOOOO W
//digitalWrite(led, LOW);
break;
case 1:
//digitalWrite(A, LOW);//Serial.println("2");
digitalWrite(B, HIGH);
digitalWrite(led, HIGH); // onboard LED
break;
case 2:
digitalWrite(A, HIGH);//Serial.println("3");
//digitalWrite(B, HIGH);
//digitalWrite(led, HIGH);
break;
case 3:
//digitalWrite(A, HIGH);//Serial.println("4");
digitalWrite(B, LOW);
digitalWrite(led, LOW); // onboard LED
State = -1;
break;
default:
State = 0;
}//END case
}//END SimulateEncoder