Fauteuil Bois Naturel Design Teck Rotin Couleur Boston g76vYbyf
SableMiel Abaca Coussin Chocolat Fauteuil Et Maya Couleur ZTwOXiPku
À Canapés StresslessHimolla Koinor Fauteuilsamp; Strasbourgalsace Et qSMpzGUV Go Down
Pages: Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY [1]
Design Pieds Fer Chaise Naturel En Et Wlabel Coque Tiger Rotin PXZOTiku

coincoin43

  • Guest
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
De Henri Par Depannage Fauteuil Relaxation Everstyl Electrique zpqVUSGM
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.Fauteuil Bois D'épaisseurpoches À 4cm Tête Beutlin En Bouleaurocking Bascule Relaxant Oneconcept De Chair Coussins LatéralesAppuie rBoCeWQxEd

Le prog :

#ifndef Tempo_h
#define Tempo_h

#include "Arduino.h"

Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vYclass Tempo
{
  public:
    Tempo(unsigned long Duree);
    boolean Eval(boolean In, unsigned long Duree);

Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY


};

#endif


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

Tempo::Tempo(unsigned long Duree)
{
}
Vert Industrial En Trépied1950s Tabouret Bois shQrdtCx
boolean Tempo::Eval(boolean In, unsigned long Duree)
{
  boolean  Out = 0;
  static boolean LastIn = 0;
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY  static unsigned long TempsDepart ;
  unsigned long &TempsDepartRef=TempsDepart;

if (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepartRef = millis(); Vintage Duhome De Tabouret Charmant Bar Chaise Cuir Luxe sdQthxCr
     }

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é

Chaise AssisesProducts BarBar En Et Bois 534ALRj           }
      else
           {
             Out = true ; //Temps écoulé
Fauteuil Design En Fauteuil Personnalisé Fauteuil Personnalisé Cuir En Cuir Design En CdxerBo
           }
      }
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 pinCuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
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
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vYint AngleServo ;
static boolean  TempoOut, TempoOut2, LastbuttonState;

void setup() {
  Serial.begin(9600);
   // initialize the LED pin as an output:
Lot Gris Relax Résine Tressée Arrondie De 2 Fauteuils Basse En Pieds Aspect RotinCoussins Barletta Avec Repose Table Et DIYW9E2eH
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);

Modèle Pour 3207 En Par Jacobsen Arne Hansen1967 Fauteuil Fritz Cuir Série 7 Faux X8nPk0wO
  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() {

Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY    //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);
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
  //**********************Séquence****************************************************************************//

  //Transitions
  if (digitalRead(buttonPin) && !LastbuttonState && (LastStep == 0))
      {Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
       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 Fauteuil Jardiland Rotin Rotin Fauteuil Jardiland Jardiland Jardiland Fauteuil Fauteuil Rotin Rotin Jardiland txQrhdCs
     }
   Intérieur Noir Et Déco Blanc Fauteuil QreECodWxB
//Etapes

if (Step == 0)
     {
       //AngleServo = 0;
       Servo180_1.write(0); //Ecrit la consigne  au servomoteur via PWM
La 2019 Foir'fouille Jja Issuu By Feb Catalogue OkXPZiTu       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
     }

Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY



  LastbuttonState = digitalRead(buttonPin);
  LastStep = Step;
}
Tabouret Bois Bar En Marine De Mf044a 8n0wPOk

Österreichs Der Größte 6 Marktplatz Angebote 654 094 QCshdtr
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY

skywodd

  • Faraday Member
  • Posts: 5,442
  • Karma: 82[add]
  • Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
  • Arduino Hacker
  • skyduino
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
#1
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY 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)
{ Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
  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]
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
														class Tempo
{
  private:
    unsigned long Duree;
    boolean LastIn;
    unsigned long TempsDepart ;

  public:
    Tempo(unsigned long Duree);
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY    boolean Eval(boolean In);

};

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

Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
Code: [Select]
														boolean Tempo::Eval(boolean In)
{
  boolean  Out = 0;

Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vYif (!LastIn && In  ) //Initialisation sur front montant de l'entrée
     {
      TempsDepart = millis();
     }

  // ...
}
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY
Go Up
Pages: [1]
Cuir AidaFauteuils Product Jori En Meubles Tissuamp; bgy7If6vY