Une led allumée/éteinte par pression d'un bouton

MéthodeMontage

Code Arduino

1
//Objectif = Bouton pour allumer/éteindre une Led
2
3
//Constantes : 
4
const int PinLed =  4;      
5
const int PinBouton = 6;    
6
7
// variables : 
8
int EtatBouton = 0;    
9
int EtatLed;          
10
11
// Configuration de départ----------------------------------
12
void setup() 
13
{
14
  pinMode(PinBouton, INPUT);  
15
  pinMode(PinLed, OUTPUT);
16
}
17
18
//Exécution de la boucle----------------------------------
19
void loop() 
20
{ 
21
  EtatBouton = digitalRead(PinBouton);
22
   if (EtatBouton == HIGH && EtatLed==0)        
23
    {
24
      digitalWrite(PinLed, HIGH);
25
      EtatLed = 1;      
26
      delay(500);       
27
    } 
28
29
  else         
30
  	{
31
      if (EtatBouton == HIGH && EtatLed==1) 
32
           {
33
              digitalWrite(PinLed, LOW);    
34
              EtatLed = 0;     
35
              delay(500);       
36
            }
37
  	}
38
} 

Code Python

1
# Péparation utilisation Python
2
from pyfirmata import *
3
from time import *
4
carte = Arduino('COM3') #Port de Communication à chercher (voir Introduction)
5
# itérateur permet de ne pas engorger la communication série
6
it = util.Iterator(carte)
7
it.start()
8
9
# Contantes
10
PinLed = 4
11
PinBouton = 6
12
# Variables
13
EtatBouton = 0
14
EtatLed = 0
15
16
# Configuration de départ-------- setup
17
Bouton = carte.digital[PinBouton]
18
Bouton.mode = pyfirmata.INPUT
19
Led = carte.digital[PinLed]
20
21
# Création de la boucle-----------loop
22
while True:
23
    EtatBouton = Bouton.read()
24
25
    if EtatBouton == 1 and EtatLed == 0:
26
        Led.write(1)
27
        EtatLed = 1
28
        sleep(1)
29
    else:
30
        if EtatBouton == 1 and EtatLed == 1:
31
            Led.write(0)
32
            EtatLed = 0
33
            sleep(1)

ComplémentCode Arduino commenté

1
//Objectif = Bouton pour allumer/éteindre une Led
2
//PIN = Personal Identification Number, adresse utilisée pour identifier un module
3
//LED = Light-Emitting Diode (Diode ElectroLuminescente = DEL)
4
5
//Constantes : la valeur ne changera pas pendant l'exécution du programme 
6
const int PinLed =  4;      // J'utilise l'adresse numérique n°4, reliée à une LED, pour associer le nom PinLed
7
const int PinBouton = 6;    // J'utilise l'adresse numérique n°6, reliée au bouton, pour associer le nom PinBouton
8
9
// variables : la valeur peut changer pendant l'exécution du programme:
10
int EtatBouton = 0;         // Je crée une variable, appelée EtatBouton, pour donner un état (appuyé ou non) au bouton 
11
int EtatLed;                // Je crée une variable, appelée EtatLed, pour donner un état (éteind=0 ou allumé=1) à la LED
12
13
// Configuration de départ----------------------------------
14
void setup() 
15
{
16
  // Initilisation du module d'adresse numérique n° 6 (PinBouton) comme une ENTREE 
17
  // = le programme peut recevoir des informations du bouton
18
  pinMode(PinBouton, INPUT);  
19
  
20
  // Initilisation du module d'adresse numérique n° 4 (PinLed) comme une SORTIE 
21
  // = le programme peut envoyer des informations vers la LED
22
  pinMode(PinLed, OUTPUT);
23
}
24
25
//Exécution de la boucle----------------------------------
26
void loop() 
27
{ //Début de boucle
28
29
  // Lire l'entrée numérique n°6 (PinBouton) et mettre la valeur (HIGH ou LOW) dasn EtatBouton
30
  EtatBouton = digitalRead(PinBouton);
31
32
  // est-ce que le bouton est enfoncé et la LED éteinte ?
33
   if (EtatBouton == HIGH && EtatLed==0)        // = EtatBouton est-il en mode HIGH ? 
34
35
     // Si oui, alors 
36
    {
37
      // allumer la LED : envoyer un signal à la sortie n°4 (PinLed) pour se mettre en mode HIGH
38
      digitalWrite(PinLed, HIGH);
39
      EtatLed = 1;      //J'affecte la valeur 1 à EtatLed, cela me sert d'indicateur pour LED allumé
40
      delay(500);       //arrêt d'exécution pendant 500 ms (1/2 seconde)
41
    } 
42
43
  else       // Sinon    
44
  {
45
    
46
    // est-ce que le bouton est enfoncé et la LED allumée ?
47
      if (EtatBouton == HIGH && EtatLed==1) 
48
49
      // Si oui, alors 
50
           {
51
              digitalWrite(PinLed, LOW);    // éteindre la LED : envoyer un signal à la sortie n°4 (PinLed) pour se mettre en mode LOW
52
              EtatLed = 0;      //J'affecte la valeur 0 à EtatLed, cela me sert d'indicateur pour LED éteinte
53
              delay(500);       //arrêt d'exécution pendant 500 ms (1/2 seconde)
54
            }
55
  }
56
57
} //Fin de boucle, retour au début de boucle