(RESOLU) Modifier une variable avec un bouton

Bonjour a tous,
Je voulais savoir si il était possible de faire augmenté une variable (quelle qu'elle soit) grâce a un boutton poussoir.
Exemple :
Ma variable est a 0, j'appuis sur le bouton et la variable passe a 1 !

Merci d'avance.

Bonjour,

Oui c'est possible

Bonjour,

Je confirme

Bonjour,
;D

Merci de m'avoir répondu mais puis-je savoir comment faire (juste pour le code SVP).
Merci

Déjà il faudrait que tu exprimes clairement ce que tu veux faire exactement.

tant que bouton est appuyé

var cpt++

voici un code exemple:

int var X= 0;
int cpt= 0;
int pinBouton;
void setup()
{
Serial.begin(9600);
pinBouton=10;
pinMode(pinBouton,INPUT);
}
void loop()
{
boolean etatBouton=digitalRead(pinBouton);

while ( etatBouton ==1)
{
cpt++; // tu incrementes ton compteur
x = cpt; // tu memorise ton compteur.
}
}

un truc du genre..

kamill:
Déjà il faudrait que tu exprimes clairement ce que tu veux faire exactement.

Ok alors :
Je voudrais faire bouger un moteur en fonction de l'heure, donc je vais utiliser un module DS1307, mais je voudrais utiliser les boutons pour dire par exemple : Quand l'heure est a 12h00, le moteur bouge ( je voudrais que ma variable "bouge moteur en fonction de l'heure" puisse augmenté si jappui sur un bouton, ou diminué si j'appuis sur un autre).
En résumé j'aimerai pouvoir gérér l'heure a laquelle mon moteur bouge grâce a deux boutons
Voilà j'espère avoir été assez clair.
Merci encore pour l'aide.

Ok, j'ai commencé un code :

const int button = 3;
int heure = 0;
void setup() 
{
  pinMode (button, INPUT);
  Serial.begin(9600);
}

void loop() {
  int test = digitalRead(button);
  if(test==LOW)
  {
    heure++;
    Serial.print(heure);
    delay(1000);
  }
}

Mais dès que j'appuis sur mon bouton ma variable augmente sans s'arreter :confused: Y'a t-il un moyen de faire augmenter la variable que de "1" lorsque j'appuis sur le bouton ?

Bonjour,
Il faut te prendre en mains et commencer à apprendre un peu la programmation avec le cours d'Eskimon, par exemple.
Un autre outil formidable, ton butineur web favori te permettra d'accéder à des milliers de liens fort utiles.
Par exemple : Eskimon : un simple bouton

Pour compléter la réponse de icare il faut détecter le changement d'état, dans le tuto d'Eskimon voir plus précisément le § "DÉTECTION DU CHANGEMENT D’ÉTAT"

kamill:
Pour compléter la réponse de icare il faut détecter le changement d'état, dans le tuto d'Eskimon voir plus précisément le § "DÉTECTION DU CHANGEMENT D’ÉTAT"

Merci infiniment ^^ Je lis tous ca et je vous tiens au courant.

Ok j'ai tout lu et voici mon nouveau code :

const int bouton = 3;
const int bouton2 = 4;
int heure = 0;
int etat;
int etat2;
int plus;
int moin;
void setup() 
{
  pinMode (bouton, INPUT);
  pinMode (bouton2, INPUT);
  Serial.begin(9600);
  etat == LOW;
  etat2 == LOW; 
}

void loop() {
  etat = digitalRead(bouton);
  etat2 = digitalRead(bouton2);
  if (etat == LOW)
  {
    heure++;
    delay(5000);
    Serial.print(heure);
  }
  else 
  {
    
  }
  if (etat2 == LOW)
  {
    heure--;
    delay(5000);
    Serial.print(heure);
  }
  else
  {
    
  }
}

Mais le priblème est que la variable heure augmente et diminue toute seule :confused:
Aussi mon moniteur ne s'arrete plus d'augmenter ! Eskimon parle d'un fonction "attachInterrupt" pour arreter la variable mais je ne comprend pas comment me servir de cette fonction :confused: Quelqu'un sait comment faire ?

Capture.PNG

A mon avis tu n'as pas bien lu autrement tu aurais écrit quelque-chose comme ça

  static int etatPrec=HIGH;
  int etat = digitalRead(bouton);
  if (etat == LOW && etatPrec==HIGH)
  {
    heure++;
    Serial.print(heure);
  }
  etatPrec=etat;

Même principe pour le 2eme bouton

kamill:
A mon avis tu n'as pas bien lu autrement tu aurais écrit quelque-chose comme ça

  static int etatPrec=HIGH;

int etat = digitalRead(bouton);
  if (etat == LOW && etatPrec==HIGH)
  {
    heure++;
    Serial.print(heure);
  }
  etatPrec=etat;




Même principe pour le 2eme bouton

voilà mon code maintenant

const int bouton = 3;
const int bouton2 = 4;
int heure = 0;
static int etatprec=HIGH;
static int etatprec2=HIGH;
int plus;
int moin;
void setup() 
{
  pinMode (bouton, INPUT);
  pinMode (bouton2, INPUT);
  Serial.begin(9600);
}

void loop() {
  int etat = digitalRead(bouton);
  int etat2 = digitalRead(bouton2);
  if (etat == LOW && etatprec==HIGH)
  {
    heure++;
    Serial.print(heure);
  }
  etatprec=etat;
  if (etat2 == LOW && etatprec2==HIGH)
  {
    heure--;
    Serial.print(heure);
  }
  etatprec2=etat2;
}

Et dans le moniteur les chiffres defilent infiniment alors que je ne touche a rien :confused: Que faire ?

Tes boutons sont cablés comment?

Ce bout de code marche très bien.

if (!digitalRead(PUSH_BUTTON_PIN_1)) {
    delay(10);
    
    if(digitalRead(PUSH_BUTTON_PIN_1)) {
    
    toggleCounter++;

    Serial.println(toggleCounter);
    }

Mes boutons sont branché comme sur la photo !

Capture.PNG

Donc ils sont à HIGH quand ils sont appuyés. Il faut inverser LOW et HIGH

 int etat = digitalRead(bouton);
 int etat2 = digitalRead(bouton2);
 if (etat == HIGH && etatprec==LOW)
 {
   heure++;
   Serial.print(heure);
 }
 // ...

Mais de toute façon si les affichages défilent sans que tu ne touches rien, c'est qu'il y a un autre problème quelque part (cablage?)

kamill:
Donc ils sont à HIGH quand ils sont appuyés. Il faut inverser LOW et HIGH

 int etat = digitalRead(bouton);

int etat2 = digitalRead(bouton2);
if (etat == HIGH && etatprec==LOW)
{
  heure++;
  Serial.print(heure);
}
// ...




Mais de toute façon si les affichages défilent sans que tu ne touches rien, c'est qu'il y a un autre problème quelque part (cablage?)

Oui c'est possible je vais donc revérifié.
Mais si je mais un écran LCD a la place de mon moniteur les chiffres défileront encore ainsi ?