Coneccion Arduino Mega con Sistema de Pago

Seguramente le falta trabajo pero esta versión ya te cuenta entre 99 y 101 mseg como valores apropiados que puedes ampliar a 98 102 incrementando a 2 la TOLERANCIA

Este es el código logrado

// Conectar los canales a los pines analógicos del 8 al 11
#define TOLERANCIA   1  // cambia este valor para establecer el margen de error en mseg.
volatile byte 		pinState;
volatile boolean 	newState;
volatile byte canal;
volatile byte canales[8] = {1, 2, 4, 8, 16, 32, 64, 128};
volatile unsigned long tc[8];
unsigned int contador[8];
String orden[8] = {"$2","$5","$10","$20","$0.25","$0.5","$1","$2"};

void setup() {
	 DDRK = 0; 			// Pines analógicos del 8 al 15 como entradas
	 PORTK = 0; 		// Pines analógicos del 8 al 15 en estado alto para coincidir con la interfaz
	 Serial.begin(9600);
	 PCMSK2 = 255; 		// Pines analógicos del 8 al 15 son los que van a desencadenar la interrupción
	 PCICR = 4; 		// 
}

void loop() {
 if (newState) {
	 if (abs(tc[canal]-100)<= TOLERANCIA)
	    contador[canal]++;
	 Serial.print(orden[canal]);
	 Serial.print(" ");
	 Serial.print(tc[canal]);
	 Serial.print("mseg Billetes: ");
	 Serial.println(contador[canal]);
	 newState = false;
 }
}

ISR(PCINT2_vect) {
	byte temp;
	temp = PINK;
	for (int i=0; i<8; i++) {
		if (canales[i] == temp) {
		   canal = i;
		   tc[canal] = millis();
		   break;
		}
	}
    if (temp == 0) {
        tc[canal] = millis()-tc[canal];
    	newState = true;
    }

	//pinState = ~PINK; // Invertir los bits para que aparezca con 1 los canales activos
	
}