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 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 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
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 Quelqu'un sait comment faire ?
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 çastatic 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 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 !
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 HIGHint 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 ?