Je code une classe temporisation de type retard à la montée . Le bug est que quand je met 32 secondes ou plus dans Duree la sortie reste indéfiniement à 0 meme si l'entrée est à 1. Pouvez vous m'aider ? Voici le code:
#include "Arduino.h"
#include "Tempo.h"
Tempo::Tempo(unsigned long Duree)
{
}
boolean Tempo::Eval(boolean In, unsigned long Duree)
{
if (!LastIn && In ) //Initialisation sur front montant de l'entrée
{
TempsDepartRef = millis();
}
if (In == true) //Test de la valeur d'entrée de la temporisation
{
if ( (millis() - TempsDepartRef ) < Duree )//Comparaison entre temps écoulé et valeur de la temporisation
{
Out = false; //Temps non écoulé
}
else
{
Out = true ; //Temps écoulé
}
}
else
{
Out = false;
}
LastIn = In; // Préparation du prochain cycle
return Out; //Sortie de la temporisation
}
#ifndef Tempo_h
#define Tempo_h
#include "Arduino.h"
class Tempo
{
private:
boolean Out ;
boolean LastIn ;
unsigned long TempsDepartRef;
public:
Tempo(unsigned long Duree);
boolean Eval(boolean In, unsigned long Duree);
};
#endif
Oui c'était bien ca le suffixe L a résolu. Je connaissais pas ce mot clé.
Sinon niveau pratique vous pensez quoi de ma classe? C'est quand meme plus pratique que de se gérer des millis un peu partout dans un code. En plus je prévois de la dériver pour faire des retards impulsionels et retards a la retombée