creation d'une fonction

bonjour , je dois réalisé un projet , et je dois crée une fonction permettant acquerir un signal carré et d'en faire un rapport cyclique .
merci

trims47:
bonjour , je dois réaliser un projet , et je dois créer une fonction permettant d'acquerir un signal carré et d'en faire un rapport cyclique.

beau projet - bravo - foncez!

trims47:
merci

de rien !
:slight_smile:

(faudrait préciser un peu...)

Un signal carré est une sorte d'onde non–sinusoïdale que l'on rencontre le plus souvent en électronique ou dans le cas du traitement du signal. Un signal carré idéal alternerait régulièrement et instantanément entre deux niveaux.

Le rapport entre la période où le signal est haut et la période totale d'un signal carré, est appelé « rapport cyclique ». Un signal carré vrai doit avoir un rapport cyclique de 1/2, c'est-à-dire avec des périodes hautes et basses égales. Quand le rapport cyclique n'est pas 1/2, on parle de signal rectangulaire.

Donc, si tu connais le temps haut, ou le temps bas, tu connais le rapport cyclique etant donné qu'il est de 50% en theorie...

lorsque le signal est entre 0% et 100% on parle pwm ( pulse with modulation)

Pour connaitre la durée d'une impulsion il existe une fonction ( pulseIn) qui Lit la durée d'une impulsion (soit niveau HAUT, soit niveau BAS) appliquée sur une broche (configurée en ENTREE).

Par exemple, si le paramètre valeur est HAUT, l'instruction pulseIn() attend que la broche passe à HAUT, commence alors le chronométrage, attend que la broche repasse au niveau BAS et stoppe alors le chronométrage.

L'instruction renvoie la durée de l'impulsion en microsecondes ( 1 millions de microsecondes par secondes). L'instruction s'arrête et renvoie 0 si aucune impulsion n'est survenue dans un temps spécifié.

par exemple:

int broche = 7; // variable de broche
unsigned long duree;  // variable utilisée pour stocker la durée

void setup()
{
  pinMode(broche, INPUT); // met la broche en entrée
}

void loop()
{
  duree1 = pulseIn(broche, HIGH); // met la durée de l'impulsion de niveau HAUT dans la variable duree
}

Donc si tu veux connaitre la durée de l'etat bas tu fais la meme chose avec un LOW,

duree2 = pulseIn(broche, LOW); // met la durée de l'impulsion de niveau HAUT dans la variable duree

Ensuite, un simple calcul tu peux connaitre le rapport cyclique.

α = t/T

avec t= temps à l'état haut ou etat bas dans une période

T= période total.