Hola.
No tengo mucho tiempo ahora, pero más o menos los tiros creo que deberían ir por aquí:
void irSharp_detection()
{
int dis=sharp.distance();
digitalWrite(ledverde, LOW);
digitalWrite(lednaranja, LOW);
digitalWrite(ledrojo, LOW);
if (dis>150){
contador3++;
digitalWrite(ledrojo,HIGH);
detectionShow();
}
else if (dis<140&&dis>60){
contador2++;
digitalWrite(lednaranja,HIGH);
detectionShow();
}
else if (dis<50&&dis>30){
contador1++;
digitalWrite(ledverde,HIGH);
detectionShow();
}
else
{
if (irState == HIGH)
{
//Serial.println("Stop Sensor");
irState = LOW;
//contador=0;//Reset Counter
}
}
}
void detectionShow(void) {
irState = HIGH; //esto lo he pasado aquí porque se repetía en los mismos sitios en los que se debe actualizar contador
Serial.print("IR: A=");
Serial.print(contador1);
Serial.print(" / B=");
Serial.print(contador2);
Serial.print(" / C=");
Serial.println(contador3);
}