[conseil] avoir le temps entre deux données reçus

Bonjour , excusez moi d’avance pour les fautes de frappes ( j’en fat beaucoup) .
Donc je vous explique le problème rapidement , je veux envoyer des données grâce à un emetteur ultrasons (hc sr04) et je veux les recevoir sur un autre module (aussi hc sr04) t je recois bien un signal , mon but ultime serait de recevoir des 0 et des 1 ( en gros il y a du signal = 1 et il n’y a pas de signal = 0);
et j’ai un signal fiable pour ça .
Mon problème est donc le suivant , je veux définir les temps entre chaque 0 et 1 ( signal ou pas ) pour dire si c’est bien une données envoyer ou non (car de base tout les laps de temps même quand il n’y a aucun signal , il y as des fois ou la valeur affiche 1) donc je veuc que entre par exemple :
00010000000000001 ← trop long donc pas une donnée

001001 ← assez court donc c’est une donnée

Donc le temps ( soit le nombre de 0 entre les 1) pour dire si il faut l considérer comme une donnée ou pas .

J’ai essayer d’être le plus clair possible .

Merci d’avançe :wink:

hello
tu pourrais tenter avec micros();

unsigned long deb_tempo =0;
byte new_data = 0;
byte old_data = 0;

lecture_new_data();
if (new_data>0) {deb_tempo=micros();old_data=new_data;}
while (new_data == old_data)
{ lecture_new_data();}
temps_entre data differentes=micros()-deb_tempo;

void lecture_new_data()
{new_data=caractere_reçu}

Bonjour , la fonction micros je n’y avait pas penser et votre fonction marche super bien (avec quelque modifications apportés pour que ça soit parfait ) mais c’est nickel merci beaucoup ( ;

De plus, utilise le principe de codage des télécommandes infra-rouge
au lieu d'utiliser un envoi, tu envoies à chaque fois une série de signaux,d'un nombre, d'une durée et d'intervalles définis.

Il ne peut plus y avoir de confusion.

Bonjour Berlorbubu,

j'essai moi aussi de faire ce type de communication à l'aide hc-sr04.
est-ce que tu as reussi ?

la fonction pulseIn() semble être faite pour toi !