Partage
  • Partager sur Facebook
  • Partager sur Twitter

Appuyer un temps défini sur un bouton

    9 septembre 2017 à 20:18:10

    Bonjour, 

    Je fais de l'airsoft et je veux fabriquer une fausse bombe pour pouvoir faire des scénarios. Je voudrais que, pour amorcer la bombe, il faille appuyer 10sec sur le bouton. Sauf que je n'y arrive pas...

    #include <pitches.h>
    #include <LiquidCrystal.h>
    
    LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
    boolean Flag = 1 ;
    int boutonPin = 2;
    int t = 3;
    int ledPin = 0;
    int tps = 0;
    
    
    void setup() {
      pinMode(boutonPin, INPUT);
      lcd.begin(16, 2);
      lcd.print("Test");
    }
    
    void loop() {
      lcd.clear();
      if (Flag==1){
        while(digitalRead(boutonPin) == LOW){
          lcd.print("_ _ _ _");
          tps++ ;
          delay(1000);
          if (tps == 2){
          lcd.clear();
          lcd.print("* _ _ _");
          }
    
          if (tps == 5){
          lcd.clear();
          lcd.print("* * _ _");
          }
          if (tps == 7){
          lcd.clear();
          lcd.print("* * * _");
          }
          if (tps == 10){
          lcd.clear();
          lcd.print("* * * *");
          }
        }
    
        if (tps >= 10){     
          while ( t > 0 ) {
            lcd.print(t);
            tone(6, 31, 250);
            delay(1000);
            t-- ;
            lcd.clear() ;
            Flag = 0;
            lcd.print("Boum!");
       
          }
        }
      }
    }



    Voici ce que j'ai réussi à faire.

    Merci d'avance pour votre aide.

    -
    Edité par PaulBretaudeau 10 septembre 2017 à 13:19:41

    • Partager sur Facebook
    • Partager sur Twitter
      12 septembre 2017 à 10:27:38

      Utiliser des delay n'est pas toujours la meilleur solution.

      Surtout que pendant un delay, l'utilisateur peut relacher le bouton et l'arduino n'en saura rien.

      Tu ferais mieux de faire un programme basé sur millis ;)

      #include <pitches.h>
      #include <LiquidCrystal.h>
       
      LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
      int boutonPin = 2;
      unsigned long lastTime = 0;
       
      void setup() {
      	pinMode(boutonPin, INPUT);
      	lcd.begin(16, 2);
      }
       
      void loop() {
      	if ( digitalRead(boutonPin) == HIGH ) {
      		lastTime = millis();
      		lcd.clear();
      	} else {
      		long timeLeft = ( 10000 - millis() + lastTime );
      		lcd.clear();
      		lcd.setCursor(0, 0);
      		if ( timeLeft > 0 ) {
      			lcd.print(timeLeft);
      		} else {
      			lcd.print("Boum!");
      		}
      	}
      }



      • Partager sur Facebook
      • Partager sur Twitter

      Appuyer un temps défini sur un bouton

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown