difficolta nel leggere sensore digitale

ciao, ho difficolta nel leggere un segnale proveniente da un maf digitale Bosch (0281002618).
ho provatoa scrivero un semplice programma, ma quando provo a leggere mi compare la scritta "inf".
il sensore ha quattro fili, 12 volt alimentazione , massa,pin per temperatura aria 5v in pwm e segnale massa aria 5 volt in pwm,
I segnali di riferimento vengono presi il gnd e il pin digitale 4 .
Qualcuno mi puo' consigliare? grazie

int pin = 4;
unsigned long duration;

void setup()
{
  Serial.begin(9600);
  pinMode(4, INPUT);
}
unsigned int Htime,Ltime;
float Ttime,freq;

void loop()
{
  Htime =pulseIn(4, HIGH);
  Ltime = pulseIn(4,LOW);
  Ttime = Htime + Ltime;
  freq=1000000/Ttime;
 Serial.println(Ttime);
  Serial.println(freq);
  delay(200);
  
}

Secondo la divise del 1000000 è troppo prova a dividere con 10000 e dopo moltiplicalo. Magari usando variabili tutte float

>brugola:

  1. Ti ricordo che nella sezione in lingua Inglese si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post ...

  2. in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito (anche tra lingue diverse) per cui, il tuo post duplicato, sempre nella sezione Inglese del forum, è stato cancellato.

Prosegui su questo theard, grazie.

Guglielmo

Scusa Guglielmo,faro' piu' attenzione.

Tornando al theard ho provato a seguire in consiglio di bitmanrc,ma non funziona.
ho provato a scrivere a vide di Htime e Ltime (println) e ho notato che tutte e due siamo a valore = 0
il sensore maf bosch 0281002618 ha 4 pin : alimentazione 12v , massa , segnale temperatura aria, segnale massa aria ( frequenza da 1.4 kTz a 12 kTz, tutti collegati correttamente , è per questo che penso che sia una errore sul programma

ciao…non so se sia la causa del problema però…pulseIn() restituisce unsigned long (32 BIT)…e tu stai salvando il suo valore in delle unsigned int (16 BIT)…

Il mio problema è come fa a comparire una scritta ovvero dei caratteri alfabetici se l'unica cosa che fai su seriale è una Print di un valore numerico. Non me lo spiego

se usi float il risultato può essere anche "inf" o "NaN"...il primo significa "infinito" (stupefacente vero !?) il secondo vuol dire "not a number"...il secondo ce l'hai quando, per esempio, fai una divisione per "0" il primo se il valore è troppo grande o troppo piccolo per essere visualizzato.
questo perchè le float funzionano in modo diverso dagli altri tipi di variabili...

Interessante, si scoprono sempre cose nuove.