//EncoderTest //Counts pulses and LED lights with encoder inputs //Note - distance traveled is 3.25 mm per pulse int encLpin = 8; int LEDpinL = 9; int encRpin = 7; int LEDpinR = 6; void setup() { pinMode(encLpin, INPUT); pinMode(encRpin, INPUT); pinMode(LEDpinL, OUTPUT); pinMode(LEDpinR, OUTPUT); Serial.begin(9600); } void loop() //repeating code { static int encLcount = 0; static int encRcount = 0; //read encoder pins byte encL = digitalRead(encLpin); byte encR = digitalRead(encRpin); //countPulses int addPulseL = countPulse(encLpin); int addPulseR = countPulse(encRpin); encLcount = encLcount + addPulseL; encRcount = encRcount + addPulseR; //Light LEDs lightLED(LEDpinL, encL); lightLED(LEDpinR, encR); //Display pulse count to monitor Serial.print(encLcount); Serial.print(" "); Serial.println(encRcount); delay(50); } void lightLED (int LEDpin, byte encPin) { if (encPin == HIGH) { digitalWrite(LEDpin, HIGH); } else { digitalWrite(LEDpin, LOW); } } int countPulse (byte encPin) { byte lastRead = 0; static byte lastReadL = 0; static byte lastReadR = 0; byte addPulse = 0; byte encRead = digitalRead(encPin); if (encPin == encLpin) //is this L or R { lastRead = lastReadL; } else { lastRead = lastReadR; } if (encRead != lastRead) //if encRead changed { addPulse = 1; lastRead = !lastRead; } else { addPulse = 0; } if (encPin == encLpin) { lastReadL = lastRead; } else { lastReadR = lastRead; } return (addPulse); }