Une led allumée/éteinte par pression d'un bouton
Méthode : Montage

Code Arduino
1
//Objectif = Bouton pour allumer/éteindre une Led2
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 Python2
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érie6
it = util.Iterator(carte)
7
it.start()
8
9
# Contantes10
PinLed = 4
11
PinBouton = 6
12
# Variables13
EtatBouton = 0
14
EtatLed = 0
15
16
# Configuration de départ-------- setup17
Bouton = carte.digital[PinBouton]
18
Bouton.mode = pyfirmata.INPUT
19
Led = carte.digital[PinLed]
20
21
# Création de la boucle-----------loop22
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ément : Code Arduino commenté
1
//Objectif = Bouton pour allumer/éteindre une Led2
//PIN = Personal Identification Number, adresse utilisée pour identifier un module3
//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 bouton18
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 LED22
pinMode(PinLed, OUTPUT);
23
}
24
25
//Exécution de la boucle----------------------------------26
void loop()
27
{ //Début de boucle28
29
// Lire l'entrée numérique n°6 (PinBouton) et mettre la valeur (HIGH ou LOW) dasn EtatBouton30
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 HIGH38
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