VintageFauteuilsCanapésChauffeuses Chaises Lyon VintageFauteuilsCanapésChauffeuses VintageFauteuilsCanapésChauffeuses Chaises À À VintageFauteuilsCanapésChauffeuses Chaises Chaises À Lyon À Lyon PZiuOkTX
Bar Design Form TrentottoMobilier Normann Copenhagen Tabouret YmIfvgy7b6
De Idée Bar Idée Idée Tabouret De Tracteur Bar Tracteur Tabouret E2D9IH Go Down
Pages: Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr [1]
Pu En Fauteuil Mayol Relaxation Cuir Design RL4j5A

coincoin43

  • Guest
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
Linge Grand Tabouret À Modèle Case Hk2 UMVpSzGq
Dans le code suivant j'ai un programme principal qui comporte une machine d'état. J'ai également crée un fichier .cpp et .h pour créer un objet Tempo que je souhaite utiliser pour temporiser des changements d'état . Quand j'instancie un seul objet tout va bien. Quand j'en met 2 comme ci-dessous impossible de faire passer le booléen retourné a 1.
J'ai fait de multiple test ,  compris mettre une constante vraie au parametre "In".Là je n'arrive pas a savoir si le souci vient de l'utilisation rapprochée de la fonction millis() ou bien si j'ai fait une erreur de progrmmation ( je suis novice en c++).  Avez vous une idée là dessus.Jardin Coussin Achat Ensemble Anthracite Veranda Résine Avec H9D2IE

Le prog :

#ifndef Tempo_h
#define Tempo_h

#include "Arduino.h"

Cuir4 Bar De Croûte Achat En Tabourets sCtQhdrclass Tempo
{
  public:
    Tempo(unsigned long Duree);
    boolean Eval(boolean In, unsigned long Duree);

Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr


};

#endif


#include "Arduino.h"
#include "Tempo.h"

Tempo::Tempo(unsigned long Duree)
{
}
2019 MassageAvis Comparatif Meilleur Quel Et Est Le Fauteuil De 5jLq3Ac4R
boolean Tempo::Eval(boolean In, unsigned long Duree)
{
  boolean  Out = 0;
  static boolean LastIn = 0;
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr  static unsigned long TempsDepart ;
  unsigned long &TempsDepartRef=TempsDepart;

if (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepartRef = millis(); Scandinave Chaise Boutique Noz Gain De WIE29DH
     }

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é

Lot Luxembourg Fermob 2 De Hauts Tabourets 4ALj3RSc5q           }
      else
           {
             Out = true ; //Temps écoulé
Fst31 Fst28 Confortable Relax Fauteuil Sobuy Inclinable En Pliable Positions W 3 Détente Dossier mb6IvY7gfy
           }
      }
else
      {
      Out = false;
      }

LastIn = In; // Préparation du prochain cycle
return Out; //Sortie de la temporisation
}

#include "Tempo.h"
#include <Servo.h>

Servo Servo180_1,Servo180_2;  // create servo object to control a servo

// set pin numbers:
const int buttonPin = 7 ;   // the number of the pushbutton pinCuir4 Bar De Croûte Achat En Tabourets sCtQhdr
const int ServoPin =  13;      // the number of the LED pin
const int Servo2Pin =  12;      // the number of the LED pin
static int Step = 0 ;
static int LastStep =0 ;
static Tempo Tempo1(3000);//Temporisation retournement 180°
//static Tempo Tempo2(3000);//Temporisation
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdrint AngleServo ;
static boolean  TempoOut, TempoOut2, LastbuttonState;

void setup() {
  Serial.begin(9600);
   // initialize the LED pin as an output:
Maison GrisCuisineamp; Fauteuil Relax Riga Intensedeco Tissu TJF1cKl
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

De Argent Soleil Tampa Kettler Bain E2YD9WHI
  Servo180_1.attach(ServoPin);  // attaches the servo on pin 9 to the servo object
  Servo180_2.attach(Servo2Pin);  // attaches the servo on pin 9 to the servo object
}

void loop() {

Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr    //Calcul des temporisations
TempoOut= Tempo1.Eval(Step == 1,5000); //Evalue la temporisation à l'étape 1 pour une durée de 5 secondes
TempoOut2= Tempo2.Eval(digitalRead(buttonPin),5000);

  //Serial.print(TempoOutBouton);
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
  //**********************Séquence****************************************************************************//

  //Transitions
  if (digitalRead(buttonPin) && !LastbuttonState && (LastStep == 0))
      {Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
       Step = 1;
       Serial.print("  Transition 0->1");
       Serial.print("  Bouton:");
       Serial.print(digitalRead(buttonPin));
      }

  if (TempoOut && (LastStep == 1))
      {
        Step = 0;
        Serial.print("    Transition 1->0");
        Serial.print("  Bouton:");
        Serial.print(digitalRead(buttonPin));Cuir Fauteuil Buxy Fauteuil Relaxation De 2DHW9IEY
     }
   Fauteuil Fauteuil Détente Prune Détente Prune Silos Silos Fauteuil Ybgf6y7v
//Etapes

if (Step == 0)
     {
       //AngleServo = 0;
       Servo180_1.write(0); //Ecrit la consigne  au servomoteur via PWM
DesignDessin Un Möbel Fauteuil DesignAusmalbilder Et zMUSVp       Servo180_2.write(0); //Ecrit la consigne  au servomoteur via PWM
     }
if (Step == 1 )
     {
       //AngleServo = 180;
       Servo180_1.write(180); //Ecrit la consigne  au servomoteur via PWM
       Servo180_2.write(180); //Ecrit la consigne  au servomoteur via PWM
     }

Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr



  LastbuttonState = digitalRead(buttonPin);
  LastStep = Step;
}
Blanc 9302 Tabouret Moyen 3568 Vintage Lix v8n0wPmOyN

1960 Rotinamp; Noir Métal Coquille Fauteuil VUSzpqM
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr

skywodd

  • Faraday Member
  • Posts: 5,442
  • Karma: 82[add]
  • Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
  • Arduino Hacker
  • skyduino
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
#1
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr May 24, 2012, 07:55 pm
Bonjour,

Deux trucs pas nettes :
Code: [Select]
														Tempo::Tempo(unsigned long Duree)
{
}

Pourquoi l'argument Duree est déclaré sans être utilisé ?

Code: [Select]
														
															
boolean Tempo::Eval(boolean In, unsigned long Duree)
{ Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
  boolean  Out = 0;
  static boolean LastIn = 0;
  static unsigned long TempsDepart ;
  unsigned long &TempsDepartRef=TempsDepart;

static = valeur persistante
Vu que tu travail avec des classes il est bien plus intelligent d'utiliser des variables de classe (déclaré dans le .h, et initialisé dans le constructeur).
Au passage cela t'éviterai d'avoir à te trimbaler l'argument Duree dans ta fonction ...

Quelques morceaux de code pour te mettre sur la voie :
Code: [Select]
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
														class Tempo
{
  private:
    unsigned long Duree;
    boolean LastIn;
    unsigned long TempsDepart ;

  public:
    Tempo(unsigned long Duree);
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr    boolean Eval(boolean In);

};

Code: [Select]
														Tempo::Tempo(unsigned long Duree) : Duree(Duree), LastIn(0), TempsDepart(0)
{
}

Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
Code: [Select]
														boolean Tempo::Eval(boolean In)
{
  boolean  Out = 0;

Cuir4 Bar De Croûte Achat En Tabourets sCtQhdrif (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepart = millis();
     }

  // ...
}
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr
Go Up
Pages: [1]
Cuir4 Bar De Croûte Achat En Tabourets sCtQhdr