Pages: 1 [2]   Go Down
Author Topic: Rendre deux boutons poussoirs inactifs  (Read 865 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour et désolé de mon retard mais je n'ai pas pu m'y remettre avant !
Je pense que je vais vous donnez tout mon programme afin que tout l monde comprenne mieux !
Code:
#include <LiquidCrystal.h>

#define valeurMin 0
#define valeurMax 10


int j=0;
//boolean etatRelais=0;
int etatRelais;
LiquidCrystal lcd(7,6,5,4,3,2);

void setup() {
 
  lcd.begin(20, 4);
  pinMode(10,INPUT); //Déclaration des pin en entrées
  pinMode(11,INPUT);
  pinMode(12,INPUT);
  pinMode(9,OUTPUT);
 
  digitalWrite(10, HIGH); //Sortie mis à l'état Haut
  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);
  j=0;
  lcd.print("Nombre de douche");
  lcd.setCursor(0,1);
  lcd.print(j);
  lcd.setCursor(0,2);
  lcd.print("Validation?");
  etatRelais=!etatRelais;
  digitalWrite(9,etatRelais);
  //lcd.print(j);
 //delay(100);
}

void loop() {
   
  if (digitalRead(11)==HIGH)//Bouton incrémentation
  {
    if (j<valeurMax)j++;
    lcd.setCursor(0,1);
    lcd.print(j);
    delay(100);
    while((digitalRead(11)==HIGH));
  }
  if (digitalRead(12)==HIGH)//Bouton décrémentation
  {
    if (j>valeurMin)j--;
    lcd.setCursor(0,1);
    lcd.print(j);
    delay(100);
    while((digitalRead(12)==HIGH));
  }
  if(digitalRead(10)==HIGH)//Bouton validation
  {
    int val=j;
    lcd.clear();
    lcd.print("Vs avez selectionnez");
    lcd.setCursor(0,1);
    lcd.print(val);
    lcd.print(" douche(s)");
    lcd.setCursor(0,2);
    lcd.print("Temps attente: ");
    lcd.print(val*10);
    lcd.print(" s");
    etatRelais=LOW; // relais état bas
    digitalWrite(9,etatRelais); // met la broche de commande dans l'état voulu
    delay (val*10000);
    etatRelais=HIGH; //relais état haut, éteinte
    digitalWrite(9,etatRelais);
    //digitalWrite(9,LOW);
    //delay(5000);     
  }
}
Donc voila à partir de cela, je voudrais que l'on m'aide d'une part en corrigeant les erreurs, d'autre part en rendant les boutons inactifs les deux boutons d'incrémentation et enfin lorsque l'on appuie une première fois sur valider cela nous valide notre choix et quand on ré-appuie sur cette touche le programme repars au setup() !
J'espère avoir été le plus clair, si vous avez des question je vous répondrez!
Merci d'avance pour votre aide!
Logged

Ales
Online Online
Faraday Member
**
Karma: 39
Posts: 3839
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il suffit d'utiliser des flags : il s'agit de boolean qui font te servir à rajouter une condition. Par exemple quand tu est dans un menu ou tu veux que tes boutons ne soient plus actifs, tu lèves ton drapeau (à TRUE par exemple) et dans ta condition qui gère ton bouton que tu veux désactiver tu rajoutes && Flag==FALSE. Ainsi quand tu seras dans un menu où tu as levé ton flag, ton bouton ne sera plus actif. Ne pas oublier evidement quand tu reviens à un menu où tes boutons doivent être actif de rabaisser le drapeau.
Logged


Pages: 1 [2]   Go Up
Jump to: