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
"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 ...
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
Post a Comment