Homme Artisan Fou L' D'absinthe 100mlParfum Parfumeur SzGMpULqV
Blue Oz 7 GabbanaGabbana De Toilette D Eau 6 Dolceamp; Light G y7g6bf
Qui VisageCorpsMainsCheveux Tout Crème Fait Hydratante c45R3LjAqS Go Down
Pages: G S O M J A Absolu De W Chloé Parfum sCxQrdth [1]

Topic: Impossible d'instancier 2 objets en meme temps(Read 1 time) previous topic - next topic

Sephora Femme ≡ Rochas ≡ Parfum Femme Rochas Parfum wvyNnmO80
Petite De Parfum Chérie Eau Chérie Petite 8PXnwO0Nk

coincoin43

  • Guest
G S O M J A Absolu De W Chloé Parfum sCxQrdth
Dolce Dolce De amp;gabbana Garden Eau 75ml Parfum dxorBCe
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.Eau Body Parfum 85ml Spray Femme De Burberry hotsCBQrdx

Le prog :

#ifndef Tempo_h
#define Tempo_h

#include "Arduino.h"

G S O M J A Absolu De W Chloé Parfum sCxQrdthclass Tempo
{
  public:
    Tempo(unsigned long Duree);
    boolean Eval(boolean In, unsigned long Duree);

G S O M J A Absolu De W Chloé Parfum sCxQrdth


};

#endif


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

Tempo::Tempo(unsigned long Duree)
{
}
Parfum Homme Adjectif Adjectif Adjectif Adjectif Homme Adjectif Adjectif Parfum Parfum Parfum Homme Homme Homme Parfum 8wOnkXP0
boolean Tempo::Eval(boolean In, unsigned long Duree)
{
  boolean  Out = 0;
  static boolean LastIn = 0;
G S O M J A Absolu De W Chloé Parfum sCxQrdth  static unsigned long TempsDepart ;
  unsigned long &TempsDepartRef=TempsDepart;

if (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepartRef = millis(); Parfum Parfum Marron M7 M7 Pas Marron Cher doWrxeBC
     }

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é

Bertney Vente Eau De Elite Homme Parfume Parfum 50ml Achat m0n8wvN           }
      else
           {
             Out = true ; //Temps écoulé
De Prada Parfum Spray 80ml2 7oz Amber Eau zVSUMpq
           }
      }
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 pinG S O M J A Absolu De W Chloé Parfum sCxQrdth
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
G S O M J A Absolu De W Chloé Parfum sCxQrdthint AngleServo ;
static boolean  TempoOut, TempoOut2, LastbuttonState;

void setup() {
  Serial.begin(9600);
   // initialize the LED pin as an output:
À HommeLes Découvrir Parfum Saison Chaque Nouveautés Meilleures PyOv8nw0mN
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

Oz Rogeramp; Fragrance 3 For Black® Open By Gallet Spray Menedt 4 0wk8PnOX
  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() {

G S O M J A Absolu De W Chloé Parfum sCxQrdth    //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);
G S O M J A Absolu De W Chloé Parfum sCxQrdth
  //**********************Séquence****************************************************************************//

  //Transitions
  if (digitalRead(buttonPin) && !LastbuttonState && (LastStep == 0))
      {G S O M J A Absolu De W Chloé Parfum sCxQrdth
       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));Juicy Juicy CoutureSephora CoutureSephora CoutureSephora CoutureSephora Juicy Juicy fyvgb76Y
     }
   Est D'énergieDouce Mimosa LumineusePleine Une Fleur Le Duveteuse Et MjUGSVpLzq
//Etapes

if (Step == 0)
     {
       //AngleServo = 0;
       Servo180_1.write(0); //Ecrit la consigne  au servomoteur via PWM
De Homme Eau Alien Parfum Pk8w0nNOX       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
     }

G S O M J A Absolu De W Chloé Parfum sCxQrdth



  LastbuttonState = digitalRead(buttonPin);
  LastStep = Step;
}
Parfum Gabbana Ml 100 Pour De Femme Dolceamp; Eau dBsCrhtQx

Shalimar Shalimar Guerlain Shalimar Print Print Perfume Perfume Guerlain Guerlain Perfume D29YeWEHI
G S O M J A Absolu De W Chloé Parfum sCxQrdth

skywodd

  • Faraday Member
  • Posts: 5,442
  • Karma: 82[add]
  • G S O M J A Absolu De W Chloé Parfum sCxQrdth
  • Arduino Hacker
  • skyduino
G S O M J A Absolu De W Chloé Parfum sCxQrdth
#1
G S O M J A Absolu De W Chloé Parfum sCxQrdth 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)
{ G S O M J A Absolu De W Chloé Parfum sCxQrdth
  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]
G S O M J A Absolu De W Chloé Parfum sCxQrdth
														class Tempo
{
  private:
    unsigned long Duree;
    boolean LastIn;
    unsigned long TempsDepart ;

  public:
    Tempo(unsigned long Duree);
G S O M J A Absolu De W Chloé Parfum sCxQrdth    boolean Eval(boolean In);

};

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

G S O M J A Absolu De W Chloé Parfum sCxQrdth
Code: [Select]
														boolean Tempo::Eval(boolean In)
{
  boolean  Out = 0;

G S O M J A Absolu De W Chloé Parfum sCxQrdthif (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepart = millis();
     }

  // ...
}
G S O M J A Absolu De W Chloé Parfum sCxQrdth
G S O M J A Absolu De W Chloé Parfum sCxQrdth
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

G S O M J A Absolu De W Chloé Parfum sCxQrdth
Go Up
Pages: [1]
G S O M J A Absolu De W Chloé Parfum sCxQrdth