Simple tempo

Bonjour

Je suis désolé de vous solliciter pour un truc aussi banal.

Dans le prog suivant, je veux allumer une led durant 5 secondes.
Cela fonctionne si je ne test que le BP (tel que présenté).

Si je rajoute le test du flag de marche (ligne en commentaire), le prog ne tient pas compte
du BP et execute le if.

Dans d’autres progs, j’ai le même genre de test et ça fonctionne.

unsigned long currentMillisled = 0;
const long tpsled = 5000;

const int bppin = 2;
const int led = 3;
bool bp = false; // Bp allumage led
bool flagmarche = false;

void setup() {
  Serial.begin(115200);
  pinMode( led, OUTPUT );
  pinMode( bppin, INPUT );
}

void loop() {
  bp = digitalRead(bppin);

  //if ((bp) && (flagmarche == false)); {
  if (bp) {
    flagmarche = true;
    currentMillisled = millis();
    digitalWrite(led, HIGH);
  }

  if  ((millis() - currentMillisled >= tpsled) && (flagmarche == true))  {
    digitalWrite(led, LOW);
    flagmarche = false;
  }
  // Serial.println (bp);
  Serial.println (flagmarche);
}

Merci de vos réponses

Bonjour,

Il ne faut pas de point virgule après le if() (autrement si le if est vrai on exécute une instruction vide)

if ((bp) && (flagmarche == false)) {

Bonjour et merci

Évidemment cela fonctionne mieux.

Pfff Bon, ben je passe pour une andouille (le pire c’est que j’ai cherché)

Encore merci et désolé du dérangement.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.