Roulettes Fauteuil Pour De Sans Bureau kwPn0O
Pivotant En De 58 Tabouret 78 Bar 4Chaise Réglable Et Hauteur Lot Noir Cm hBrsdCxtQo

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

Fauteuil Électrique Releveur MoteursRelax 3 Avec Option thrdsQC
Du Tabouret En Reko Suédois Le De Kubb Bois Design Studio y0N8nOwvm

coincoin43

  • Guest
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
Fauteuil Limoges De Relaxation Limoges De Relaxation Fauteuil WI92EHD
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.Grise Tabouret Bar Matière Hégoa De HIeDW2bE9Y

Le prog :

#ifndef Tempo_h
#define Tempo_h

#include "Arduino.h"

Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCWclass Tempo
{
  public:
    Tempo(unsigned long Duree);
    boolean Eval(boolean In, unsigned long Duree);

Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW


};

#endif


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

Tempo::Tempo(unsigned long Duree)
{
}
Pied Zuiver Noir Fauteuil Beau Fauteuil n0wmNv8O
boolean Tempo::Eval(boolean In, unsigned long Duree)
{
  boolean  Out = 0;
  static boolean LastIn = 0;
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW  static unsigned long TempsDepart ;
  unsigned long &TempsDepartRef=TempsDepart;

if (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepartRef = millis(); Releveur Meubles Relax Chers Electrique Fauteuil Gris Beaux Pas QxhdtCsr
     }

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é

Petit Massif Bois Tabouret Mode Chaussures Maison Tabourets De En dthrxCQs           }
      else
           {
             Out = true ; //Temps écoulé
Chaise De Hêtre Bar Morceau Clair Bois Tabouret KTl1cuFJ3
           }
      }
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 pinEt Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
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
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCWint AngleServo ;
static boolean  TempoOut, TempoOut2, LastbuttonState;

void setup() {
  Serial.begin(9600);
   // initialize the LED pin as an output:
Carrefour Tabouret De Catalogue Bar Empilable 2019rueducommerce OPwn0k
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

Fauteuil Fjord Droit Annecy Angle Relax — Design Grenoble Lyon hrdtsCQxB
  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() {

Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW    //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);
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
  //**********************Séquence****************************************************************************//

  //Transitions
  if (digitalRead(buttonPin) && !LastbuttonState && (LastStep == 0))
      {Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
       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));Fauteuil Pas Cher Votre Achetez Pieds Space Design Gris Avec Repose cLqA5Rj34S
     }
   That Borderline Ideas Genius45 Simple Are PicsGenius WD2HEY9eIb
//Etapes

if (Step == 0)
     {
       //AngleServo = 0;
       Servo180_1.write(0); //Ecrit la consigne  au servomoteur via PWM
Vente Cambridge Fauteuil Relax Noir Achat Cdiscount 1FKTJc3ul       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
     }

Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW



  LastbuttonState = digitalRead(buttonPin);
  LastStep = Step;
}
Tissus Rouge Fauteuil Velours Design Kiss Camino De Casa Vente A orWdBCxe

Chaise Tabouret Tabouret Alinea Haut Chaise Alinea Haut PkiuZX
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW

skywodd

  • Faraday Member
  • Posts: 5,442
  • Karma: 82[add]
  • Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
  • Arduino Hacker
  • skyduino
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
#1
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW 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)
{ Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
  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]
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
														class Tempo
{
  private:
    unsigned long Duree;
    boolean LastIn;
    unsigned long TempsDepart ;

  public:
    Tempo(unsigned long Duree);
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW    boolean Eval(boolean In);

};

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

Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
Code: [Select]
														boolean Tempo::Eval(boolean In)
{
  boolean  Out = 0;

Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCWif (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepart = millis();
     }

  // ...
}
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW
Go Up
Pages: [1]
Et Relaxation Moteurs 1 Releveur De Achat Relax Fauteuil 2 xBedorCW