[Risolto] Identificare guasto su un sensore ad ultrasuoni HC-SR04

Ciao a tutti,

ho provato a mettermi sul pin echo del sensore con un tester. In pratica da quanto ho visto viene sparato fuori sull'echo un voltaggio che sale proporzionalmente alla distanza del primo ostacolo.
Con una distanza di 3/4 metri sul pin echo vedo un voltaggio di 4.0-4.6V e anche in questo caso la funzione pulseIn ritorna sempre 0. Nei casi in cui l'ostacolo sta a 20/30cm sul pin echo si arriva a 0,025-0,030V il che vuol dire che pulseIn(.., HIGH) ritornera' sempre 0.

Sulla base del codice che ho inserito (che e' molto simile a quello che fa la libreria) la lettura della distanza dovrebbe essere data dalla quantita' di tempo in cui sul pin ECHO si ha una frequenza superiore a 3.0/3.3V giusto ? E' questo lo scopo della funzione pulseIn ? In realta' sul sensore che ho io, la quantita' di voltaggio indica la distanza e quindi l'algoritmo sarebbe sbagliato in questo caso.

Non capisco pero' perche' anche nel caso il voltaggio arrivi a 4.6V la duration rimanga sempre a 0! Infatti se uso il pin 13 il led si accende anche per 500/600ms .

Potrebbe esserci un bug nel codice che legge i dati dal pin Echo? Ho provato anche su un Arduino Uno e lo scenario non cambia.

Di seguito il codice un po' piu' compilabile di quello che avevo messo inizialmente.

const int trigPin = 12;   
const int echoPin = 13;     


void setup() {
       Serial.begin(9600);
       pinMode(trigPin, OUTPUT);
       pinMode(11, OUTPUT); // Pin VCC sensor
       digitalWrite(11, HIGH);
       pinMode(echoPin, INPUT);
}

void loop() {

   long duration, distance;


   //pinMode(trigPin, OUTPUT);
   digitalWrite(trigPin, LOW);
   delayMicroseconds(2);
   digitalWrite(trigPin, HIGH);
   delayMicroseconds(10);
   digitalWrite(trigPin, LOW);
 // delayMicroseconds(10);
   //pinMode(echoPin, INPUT);
  // duration = pulseIn(echoPin, HIGH, 10000);
      duration = pulseIn(echoPin, HIGH);
   distance = (duration/2) / 29.1;

   Serial.print(distance);
   Serial.println(" cm");
   Serial.print(duration);
   Serial.println(" duration");

   delay(1000);
 }