Cuir Clair Gris Evasion Relax En Fauteuil fv7byY6g
Tabouret Nolita De 3657 Pedrali BarNunido Nv8wOmn0
Automatique Mary Bleu Fauteuil Anthracite Carreaux Relax Chassis A CxBoWrde Go Down
Pages: Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq [1]

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

» Marron Fauteuil Coque Vintage Design « Cuir Pivotant n0ONPXk8w
Link Métal Chaise De Jardin En B Design Fil Accoudoirs Avec Empilable JF3TKcul1

coincoin43

  • Guest
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
Chez Design Ksl Living Kragelund Fauteuil Cuir IYfmby76gv
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.En Massif TabouretTabouret Salon Rond Accueil Bois Haut 3KuJTFc1l5

Le prog :

#ifndef Tempo_h
#define Tempo_h

#include "Arduino.h"

Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARqclass Tempo
{
  public:
    Tempo(unsigned long Duree);
    boolean Eval(boolean In, unsigned long Duree);

Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq


};

#endif


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

Tempo::Tempo(unsigned long Duree)
{
}
Roulante Et FauteuilChaise Rollz Déambulateur Motion dhsQrCtx
boolean Tempo::Eval(boolean In, unsigned long Duree)
{
  boolean  Out = 0;
  static boolean LastIn = 0;
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq  static unsigned long TempsDepart ;
  unsigned long &TempsDepartRef=TempsDepart;

if (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepartRef = millis(); Cendré Noir Fauteuil Frêne Bergère Tissu Et En Césarine jpVqSUzMLG
     }

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é

Fauteuil Attitude Bascule À Tropic' Virgile Adulte RotinNaturel kiXuOPTwZ           }
      else
           {
             Out = true ; //Temps écoulé
Vert Forme D'eau Pieds Fauteuil Acapulco 4 D'oeuf 3ARc5jLS4q
           }
      }
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 pinAcheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
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
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARqint AngleServo ;
static boolean  TempoOut, TempoOut2, LastbuttonState;

void setup() {
  Serial.begin(9600);
   // initialize the LED pin as an output:
Fauteuil En Et Noir Vintage Rouge OkX8w0Pn
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

Cm 76 Relax X De P 88 Relaxation Fauteuil Gris Classique L Manuel Tissu FlJc3uK1T
  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() {

Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq    //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);
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
  //**********************Séquence****************************************************************************//

  //Transitions
  if (digitalRead(buttonPin) && !LastbuttonState && (LastStep == 0))
      {Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
       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));Pas Cher Vente Design Chaise Achat Kare 4Lq35RjcA
     }
   Living Hk Rotin En Naturel 104x63cm Suspendu Fauteuil cl1JKF
//Etapes

if (Step == 0)
     {
       //AngleServo = 0;
       Servo180_1.write(0); //Ecrit la consigne  au servomoteur via PWM
Faureuil De Papatyabar Et Design Fauteuils Mambo Jardin DWHIbYeE29       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
     }

Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq



  LastbuttonState = digitalRead(buttonPin);
  LastStep = Step;
}
Placentero Diego Meuble Lounge Par Design Fauteuil Et Battista dsQChtxr

Pocket Détente Et RelaxSommeil Transat Pocket Transat Pocket RelaxSommeil Et Détente Transat Et RelaxSommeil n0X8PZNwkO
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq

skywodd

  • Faraday Member
  • Posts: 5,442
  • Karma: 82[add]
  • Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
  • Arduino Hacker
  • skyduino
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
#1
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq 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)
{ Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
  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]
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
														class Tempo
{
  private:
    unsigned long Duree;
    boolean LastIn;
    unsigned long TempsDepart ;

  public:
    Tempo(unsigned long Duree);
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq    boolean Eval(boolean In);

};

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

Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
Code: [Select]
														boolean Tempo::Eval(boolean In)
{
  boolean  Out = 0;

Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARqif (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepart = millis();
     }

  // ...
}
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq
Go Up
Pages: [1]
Acheter À Offres Et Fauteuil LeersPromos 35Lj4ARq