Débutant arduino cherche à mesurer des longueurs d'impulsions

Bonjour à toutes et tous...

Débutant arduino, je suis en train de réaliser un régulateur pour un système de chauffage.
J'effectue différentes mesures de températures, débit d'eau ...
Je réalise quelques calculs, puissance calorifique, loi d'eau ...
J'affiche des valeurs sur un LCD 4x20...

Tout cela fonctionne correctement, merci, au passage, à tous les réalisateurs de tuto !

Je cherche à présent à mesurer du temps entre 2 impulsions données par un compteur de gaz.
J'ai réalisé un branchement mettant une PIN en high de façon permanente et l'impulsion, représentée pour l'instant sur mon proto par un bouton poussoir, met la PIN en LOW.

J'ai utilisé la fonction PulseIn() qui marchait très bien sur un petit proto, mais l'arduino n'avait rien d'autre à faire que de compter le temps entre deux impulsions.

Maintenant que j'ai remis ce bout de code dans mon code général, tous mes calculs, mesures et affichages sont bloqués dans l'attente d'impulsions.
Les mise à jour ne se font que lorsque j'ai une impulsions.
J'en conclue que pulseIn est une fonction bloquante pour le reste du programme.

Je me suis tourné vers les "interruptions", mais j'ai lu que la fonction millis() ne fonctionnait pas pendant les interruptions.

JE suis à cours de solution...

Quelqu'un pour m'orienter ?

Je vous remercie par avance.

Rien ne t'empêche de mémoriser la valeur retournée de millis() dans une interruption dans deux variables (Attention : variables volatiles) : une pour l'interruption RISING une autre pour l'interruption FALLING.

Ensuite ton programme principal fait la soustraction. Bien entendu il faut prendre la valeur absolue de la soustraction.

EDIT : valeur absolue : valable seulement si le rapport PWM est de 50%, mais je suppose que cela doit être le cas pour un compteur gaz comme pour un débitmètre. Je suppose que seule la fréquence varie.