Pages: [1]   Go Down
Author Topic: allumage led avec 2 bouttons  (Read 573 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hello a tous
voila je débute de chez débute ! et je n'arrive pas a faire un truc simple !
alors j'arrive a faire :
 allumer Led 1 avec bouton 1
allumer Led 2 avec bouton 2
mais je n'arrive pas a:
allumer Led 3 avec bouton 1 ET bouton 2 appuyé ...

j'essaie avec l'instruction IF et AND

mais je ne doit pas les utiliser correctement ! j'ai fait ca :

if(etatBouton_1 == low && etatBouton_2 == low)
{
       digitalWrite(led_3,LOW); //les 2 boutons  appuyé, la LED3 est allumée
   }
else  
   {
       digitalWrite(led_3,HIGH);
   }

en gros comment tester une condition a 2 états  



« Last Edit: May 31, 2014, 01:35:23 pm by hervev8 » Logged

Offline Offline
Newbie
*
Karma: 2
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A-tu essayé le programme qui est présent dans ta réponse ? Si oui, quelle résultats ?
Le fait de faire if( condition1 && condition2) doit permettre de réaliser l'action que si les 2 condition son réunit.
Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1967
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
déjà avoir le code complet et entre les bales code #
tes boutons sont en normalement ouverts?
par ce que LOW, pas de passage, HIGH oui
Logged

France
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3560
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
je n'arrive pas a faire un truc simple
Tu n'arrives pas à le coder, à le compiler ou alors l'exécution n'est pas satisfaisante?
La syntaxe du morceau de code que tu as mis est bonne. Mais il y a des erreurs d'écriture.
Mets le code complet.
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

alors ca progresse !
j'ai modifier le code
j'ai bien allumage de la LED 1 avec le bouton 1 et LED 2 avec le bouton 2
j'arrive aussi a avoir la LED 3 avec les 2 boutons appuyé .... MAIS j'ai un clignotement des LED 1 et 2
je comprend pourquoi car le programme boucle et que a un moment il detecte les boutons 1 et2 on donc allume les LED
comment bloquer l'etat du programme si 1 et 2 on LED 1 et 2 off et 3 on ? 

const int bouton_1 = 1; //le bouton est connecté à la broche 1
const int bouton_2 = 2; //le bouton est connecté à la broche 2
const int led_1 = 12; //la LED à la broche 12
const int led_2 = 13; //la LED à la broche 13
const int led_3 = 11; //la LED à la broche 11

int etatBouton_1; //variable qui enregistre l'état du bouton 1
int etatBouton_2; //variable qui enregistre l'état du bouton 2

void setup()
{
   pinMode(led_1, OUTPUT); //la led est une sortie
   pinMode(led_2, OUTPUT); //la led est une sortie
   pinMode(led_3, OUTPUT); //la led est une sortie
   pinMode(bouton_1, INPUT); //le bouton est une entrée
   pinMode(bouton_2, INPUT); //le bouton est une entrée

   etatBouton_1 = LOW; //on initialise l'état du bouton comme "relaché"     
   etatBouton_2 = LOW; //on initialise l'état du bouton comme "relache"
}
void loop()
{
etatBouton_1 = digitalRead(bouton_1);
   
   if(etatBouton_1 == HIGH) //test si le bouton appuyé
   {
       digitalWrite(led_1,HIGH); //la LED allumée
   }
   else  //test si NON
   {
       digitalWrite(led_1,LOW); //le bouton est relaché, la LED est etteinte
   }
     

etatBouton_2 = digitalRead(bouton_2);
   
   if(etatBouton_2 == HIGH) //si boutton 2 appuyée
   {
       digitalWrite(led_2,HIGH); // LED 2 allumée
   }
   else  // si NON
   {
       digitalWrite(led_2,LOW); //LED eteinte
   }

if(etatBouton_1 == HIGH && etatBouton_2 == HIGH)
{
digitalWrite(led_2,LOW);
digitalWrite(led_1,LOW);       
digitalWrite(led_3,HIGH); //les bouttons 1et2 appuyé LED 3 allumée et 1 et 2 etteint
   }
else 
   {
       digitalWrite(led_3,LOW);
   }

}
Logged

France
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3560
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Réfléchissons un peu ...
Combien de cas de ce projets...
Bouton 1 appuyé et bouton 2 relâché
Bouton 1  relâché et bouton 2 appuyé
Bouton 1 appuyé et bouton 2 appuyé
Bouton 1  relâché et bouton 2 relâché

4 cas ---> 4 tests et pas un de plus pas la peine de se prendre la tête avec des else.
Comme certaines des entrées de test sont présentes dans plusieurs cas il faut tester pour chaque if TOUTES les entrées.

Je te laisse réfléchir.
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

alors en faite il y a un peut plus de combinaison car la finalité du projet c'est ca:
inter 1 = Led 1
inter 2 = Led 2
inter 1 + 2 = led 3
inter 3 = Led 4
inter 1 + 3 = Led 5
inter 2 + 3 = Led 6

il y a en plus :
inter 1 + 4 = Led 7
inter 2 + 5 = Led 7
inter 1 +2 + 6 = Led 7
inter 3 +7 = Led 7
inter 1 + 3 + 8 = Led 7
inter 2 + 3 + 9 = Led 7

avec un rythme d'appui de changement des boutons qui peut être de l'ordre de la seconde
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

donc pour répondre a fdufnews
il faudrait que je fasse un truc comme ca :
if inter 1 on = led 1 on
if inter 2 on = led 2 on
if inter 1+2 on = led 3 on
etc ... pour toutes les combinaisons jusqu'a
if inter 2+3+9 on = Led 7



 
Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1967
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

si tu expliquais la finalité de ton projet, ce que tu veux faire réellement.
il y a peut être d'autres solutions.
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'ai des contacts qui sont ouvert (GPI) par un pupitre suivant la camera sélectionnée mais suivant le protocole que j'ai donné  plus haut

camera 1 = Contact 1
camera 2 = contact 2
camera 3 = contact 1 + 2
camera 4 = contact 3
camera 5 = contact 1 + 3
camera 6 = contact 2 +3

je doit transformer cette combinaison en contact 1, 2, 3, 4, 5, 6 car la grille video que je pilote pour afficher la camera sélectionner a elle un contact pour chaque source donc 6 contact ( c'est les Led 1 a 6 que j'allume dans mon programme qui me sert de test )
en plus je doit allumer une LED (la 7) si la cam est sélectionnée (par mon pupitre précédant) ET si elle est a l'antenne. la cam a l'antenne et donné par 6 autres GPI : donc dans mon test mes contacts 4(cam1)  5(cam2) 6(cam3) 7(cam4) 8(cam5) 9(cam6)

ce qui me donne par exemple pour la cam 5 sélectionnée ET a l'antenne:
contact 1+3 fermé = LED 5 on (pour fermeture du contact 5 (LED5 dans mon test))  +  contact 8 fermé +contact 1+3 fermé = LED 7 on
si contact 8 ouvert alors LED7 off

voila j'espère que c'est plus claire !!!  smiley-red
Logged

France
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3560
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'ai des contacts qui sont ouvert (GPI) par un pupitre suivant la camera sélectionnée mais suivant le protocole que j'ai donné  plus haut

camera 1 = Contact 1
camera 2 = contact 2
camera 3 = contact 1 + 2
camera 4 = contact 3
camera 5 = contact 1 + 3
camera 6 = contact 2 +3

Si tu l'avais dit tout de suite !!
C'est codé en binaire ça.
Code:
byte numero;
numero = contact1 &1 + (contact2 &1)<<1 + (contact3&1)<<2; // Numéro de la caméra sélectionnée
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

oulala !

la j'y pige encore moins !!
.....
Logged

France
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3560
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

contact    3     2     1
camera1    0     0    1
camera2   0      1    0
camera3   0      1     1
camera4   1      0    0
camera5   1      0     1
camera6   1      1     0

les 3 contacts codent le numéro de la caméra en binaire

La lige de code que j'ai donnée au-dessus est équivalente à:
contact1 + 2* contact2 + 4*contact3
« Last Edit: June 01, 2014, 01:44:16 pm by fdufnews » Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

désolé du délais de réponse mais j'étais pas la ! ...

bon alors la ca dépasse mes connaissances ! la ligne code en binaire j'y pige que dalle !
y un endroit ou je peu apprendre ca ? .... ou alors m'expliquer le truc beaucoup plus clairement !!  smiley-grin
Logged

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

http://skyduino.wordpress.com/2013/04/05/tuto-le-bitwise-pour-les-nuls/
Logged


Pages: [1]   Go Up
Jump to: