ARDUINO : programmer suite d'action sur un boutons

themaxzanfr Messages postés 7 Statut Membre -  
themaxzanfr Messages postés 7 Statut Membre -
bonjours
voila depuis quelque temps j'ai aussi acheté une carte arduino pour faire quelque test mais j'ai maintenant un petit projet, n'étant pas super dans la programmation je n'arrive pas a réalisé ce que je voudrai,
voila ce que je cherche a faire:
j'ai 4 boutons et j'aimerai que une foit le bouton 1 appuyer l'arduino face l'action 1 du genre;

digitalWrite(13 ,LOW);
delay(1000);
digitalWrite(13 ,HIGH);

ensuite l'action s'arrete
puis le deuxieme bouton et appyer

digitalWrite(12 ,HIGH);
delay(1000);
digitalWrite(11 ,HIGH);
digitalWrite(12 ,LOW);

voila ce que je voudrai que sa face(les pin ont été mis au hasard le code et factice c'est pour explique)
merci a ceux qui pourront m'aide, ou meme me rediriger vers un tuto qui explique cela
merci

3 réponses

themaxzanfr Messages postés 7 Statut Membre 4
 
const int APPUI=LOW;
const int BP=2;
const int LED=3;
const int APPUI1=LOW;
const int BP1=4;
const int LED1=5;

void setup() {
pinMode (LED,OUTPUT);
pinMode (BP,INPUT);
digitalWrite (BP,HIGH);
digitalWrite (LED,LOW);
pinMode (LED1,OUTPUT);
pinMode (BP1,INPUT);
digitalWrite (BP1,HIGH);
digitalWrite (LED1,LOW);
}

void loop() {
if (digitalRead(BP)==APPUI) {
digitalWrite(LED,HIGH);
delay (5000);
digitalWrite (LED,LOW);
}
if (digitalRead(BP1)==APPUI) {
digitalWrite(LED1,HIGH);
delay (5000);
digitalWrite (LED1,LOW);
}
}

voila le code que j'ai fait avec beaucoup d'aide maintenant et il possible que je puis activer les deux led en meme temps car la je ne peut pas
0
ElementW Messages postés 5690 Statut Contributeur 1 224
 
Le hic ici c'est que
delay
met totalement ton code en pause, puis reprend après, donc tu ne peux allumer qu'une LED a la fois. Voici une solution:
avec la fonction
now()
tu peux récupérer le temps en secondes depuis un instant fixe (ici, le 1er Janvier 1970, aussi dit UNIX Epoch; mais là on s'en fiche).
loop()
s'exécute en boucle, l'idée est donc a chaque itération de la boucle, vérifier individuellement l'état des boutons, et si il est appuyé, allumer la LED et enregistrer la "date" de l'appui avec now(); et aussi vérifier si la date actuelle est 5 secondes (ou +) après l'appui, et si c'est le cas, éteindre la DEL. Ex;
time_t dateAppuiBP, dateAppuiBP1;
[...]
void loop() {
    time_t tps = now();
    if (digitalRead(BP) == APPUI) {
        digitalWrite(LED, HIGH);
        dateAppuiBP = tps;
    } else {
        if (tps >= dateAppuiBP + 5)
            digitalWrite(LED, LOW);
    }
    if (digitalRead(BP1) == APPUI) {
        digitalWrite(LED1, HIGH);
        dateAppuiBP2 = tps;
    } else {
        if (tps >= dateAppuiBP1 + 5)
            digitalWrite(LED1, LOW);
    }
}
0
themaxzanfr Messages postés 7 Statut Membre 4
 
merci pour ton aide
mais voila j'ai essai comme tu me dit mais le code n'est plus bon je ne trouve pas mon erreur.
Dois-je bien mettre le code comme cela:

const int APPUI=LOW;
const int BP=2;
const int LED=3;
const int APPUI1=LOW;
const int BP1=4;
const int LED1=5;

void setup() {
pinMode (LED,OUTPUT);
pinMode (BP,INPUT);
digitalWrite (BP,HIGH);
digitalWrite (LED,LOW);
pinMode (LED1,OUTPUT);
pinMode (BP1,INPUT);
digitalWrite (BP1,HIGH);
digitalWrite (LED1,LOW);
}

time_t dateAppuiBP, dateAppuiBP1;
[...]
void loop() {
time_t tps = now();
if (digitalRead(BP) == APPUI) {
digitalWrite(LED, HIGH);
dateAppuiBP = tps;
} else {
if (tps >= dateAppuiBP + 5)
digitalWrite(LED, LOW);
}
if (digitalRead(BP1) == APPUI) {
digitalWrite(LED1, HIGH);
dateAppuiBP2 = tps;
} else {
if (tps >= dateAppuiBP1 + 5)
digitalWrite(LED1, LOW);
}
}
0
ElementW Messages postés 5690 Statut Contributeur 1 224
 
Le
[...]
est a retirer, c'était pour indiquer des éventuelles lignes supplémentaires
0
themaxzanfr
 
ok je vais réessayer sans le [...] et je tient au courant
0
themaxzanfr Messages postés 7 Statut Membre 4
 
sketch_nov20a:19: error: 'time_t' does not name a type
sketch_nov20a.ino: In function 'void loop()':
sketch_nov20a:21: error: 'time_t' was not declared in this scope
sketch_nov20a:21: error: expected `;' before 'tps'
sketch_nov20a:24: error: 'dateAppuiBP' was not declared in this scope
sketch_nov20a:24: error: 'tps' was not declared in this scope
sketch_nov20a:26: error: 'tps' was not declared in this scope
sketch_nov20a:26: error: 'dateAppuiBP' was not declared in this scope
sketch_nov20a:31: error: 'dateAppuiBP2' was not declared in this scope
sketch_nov20a:31: error: 'tps' was not declared in this scope
sketch_nov20a:33: error: 'tps' was not declared in this scope
sketch_nov20a:33: error: 'dateAppuiBP1' was not declared in this scope

je ne vois pas ce qu'il veut
in function void loop veut dire que je doit le mettre dedans
tps was not declared je les declares comment
0