Détection du rapport cyclique d'un signal rectangulaire


bonjour, je dois réaliser un exercice dont voici l'énoncé :

"la première sortie doit s'activer si le rapport cyclique est inférieur à 40%, la seconde s'il est supérieur à 60%. s'il n'y pas de signal, ou si le signal est carré, aucune sortie ne doit s'activer."

voici mon code mais il ne fonctionne pas :


 #define l1 4
 #define led1on  digitalwrite(l1,1);
 #define led1off digitalwrite(l1,0);
 #define l2 5
 #define led2on  digitalwrite(l2,1);
 #define led2off digitalwrite(l2,0);
 #define p1 2
 #define pous1on  (digitalread (p1)==0)
 #define pous1off (digitalread (p1)==1)
 
 
 unsigned long duree,dureea,dureeb;

 
 void setup()
 {
   pinmode(p1, input);
   pinmode(l1, output);
   pinmode(l2, output);
   serial.begin(9600);
 }

void loop()
{
  dureea = pulsein(p1, high);
  dureeb = pulsein(p1, low);
  duree=dureea-dureeb;
  if(duree<400000 && dureea>0){led1on;}
  if(dureea>600000){led2on;}
  serial.print(duree);
  led1off; led2off;
}


je ne vois pas comment traiter les données reçues sur le moniteur série...
si quelqu'un peut me mettre sur la voie, je ne suis pas sur d'utiliser la bonne méthode (pulsein) ?
merci

salut,

le problème c'est que ton premier pulsein high commence à compter lors de la transition bas-> haut et s'arrête de compter lors dde la transition haut-> bas puis le deuxième plusin commence à compter à la première transition haut->bas, or elle est déjà passé lors du premier pulsein.

alors en soi dans la pratique ça sera surement pas un problème car il prendra la mesure de l'état bas à la période qui suivra. si elles sont identique c'est bon. donc déjà de ce côté la ton programme n'est pas parfait.

la d'où vient ton problème c'est les maths : si x=a+b, quel est le proportion de dans x ? surement pas a-b ... ;)


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Détection du rapport cyclique d'un signal rectangulaire


arduino

Comments

Popular posts from this blog

invalid use of void expresion in FlexiTimer2 library

error: a function-definition is not allowed here before '{' token

LED Strip Code