Estoy intentando leer un sensor ultrasónico HC-SR04 al mismo tiempo que se ejecutan un par de servos. Tener un servo en funcionamiento está arruinando el tiempo del método pulseIn ().
La medición de la distancia será correcta para distancias pequeñas (hasta 24 cm o menos), pero cualquier cosa más grande a veces se lee incorrectamente. Si un servidor no está conectado a D2 o D3, el sensor de distancia funciona bien. ¿Cómo puedo conseguir que ambos jueguen juntos? ¿Tal vez una biblioteca que no dependa de los mismos temporizadores que un servidor en D2 y D3? Esto está en un Mega.
// read the distance sensor
// returns: distance in inches. -1 means out of range
float ReadDistance(int trigPin, int echoPin)
{
long duration;
float distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2.0) / 29.1 / 2.54;
if (distance >= 200 || distance <= 0)
return -1.0;
else
return distance;
}