Une led allumée/éteinte à l'aide d'un capteur son

Code Arduino

1
//Objectif = Son pour allumer et éteindre une Led
2
3
const int PinSon = A2;      
4
const int PinLed = 4; 
5
6
int EtatSon;      
7
int EtatLed;     
8
int LimiteSon = 300;
9
10
void setup() 
11
{
12
  pinMode(PinLed, OUTPUT);
13
  pinMode(PinSon, INPUT);
14
  Serial.begin(4800);
15
}
16
17
void loop() 
18
{      
19
  EtatSon = analogRead(PinSon); 
20
  Serial.println(EtatSon);
21
22
  if (EtatSon > LimiteSon && EtatLed==0) 
23
      {
24
        digitalWrite(PinLed, HIGH);       
25
        EtatLed = 1;      
26
        delay(500);      
27
      }
28
29
  else     
30
      {   
31
      if (EtatSon > LimiteSon && EtatLed==1) 
32
            {
33
              digitalWrite(PinLed, LOW);     
34
              EtatLed = 0;      
35
              delay(500);       
36
            }
37
      } 
38
39
} 

ComplémentCode Arduino commenté

1
//Objectif = Son pour allumer et é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 PinSon = A2;      // J'utilise l'adresse Analogique n°A2, relié à un capteur sonore, pour associer le nom PinSon
7
const int PinLed = 4;       // J'utilise l'adresse numérique n°4, reliée à une LED, pour associer le nom PinLed
8
9
// variables : la valeur peut changer pendant l'exécution du programme
10
int EtatSon;      // Je crée une variable, appelée EtatSon, pour lire la valeur du capteur sonore
11
int EtatLed;      // Je crée une variable, appelée EtatLed, pour donner un état (éteind=0 ou allumé=1) à la LED
12
int LimiteSon = 300; // Je crée une variable, appelée LimiteSon, pour comparer l'ambiance sonore à un seuil
13
14
// Configuration de départ----------------------------------
15
void setup() 
16
{
17
  // Initilisation du module de PIN n° 4 (PinLed) comme une SORTIE 
18
  // = le programme peut envoyer des informations vers la LED
19
  pinMode(PinLed, OUTPUT);
20
  
21
  // Initilisation du module de PIN n° A2 (PinSon) comme une ENTREE 
22
  // = le programme peut recevoir des informations du capteur sonore  
23
  pinMode(PinSon, INPUT);
24
  
25
  //Serial.begin est utilisé pour définir la vitesse de communication utiliése 
26
  //en bauds = nombre d'éléments du signal transmis en une seconde
27
  Serial.begin(9600);
28
}
29
30
// Exécution de la boucle-----------------------------------
31
void loop() 
32
{       //Début de boucle
33
34
  // Récupérer les informations depuis l'entrée Analogique n°A2 et les affecter à EtatSon
35
  EtatSon = analogRead(PinSon); 
36
37
  //Afficher le graphique des données sons recueillies dans EtatSon
38
  //Pour les voir : Menu Outils > Traceur série (courbe de valeurs) ou Menu Outils > Moniteur série (valeurs)
39
  Serial.println(EtatSon);
40
41
  // est-ce que le capteur enregistre un signal supérieur à LimiteSon et/avec la LED éteinte ?
42
  if (EtatSon > LimiteSon && EtatLed==0) 
43
      
44
       // Si oui, alors 
45
      {
46
        digitalWrite(PinLed, HIGH);       // allumer la LED = envoyer l'information mettre la LED en mode HIGH
47
        EtatLed = 1;      //J'affecte la valeur 1 à EtatLed, cela me sert d'indicateur pour LED allumé
48
        delay(500);       //arrêt d'exécution pendant 500 ms (1/2 seconde)
49
      }
50
51
  else      // Sinon
52
  {   
53
54
  // est-ce que le capteur enregistre un signal supérieur à LimiteSon et/avec la LED allumée ?
55
  if (EtatSon > LimiteSon && EtatLed==1) 
56
57
      // Si oui, alors 
58
      {
59
        digitalWrite(PinLed, LOW);      // éteindre la LED = envoyer l'information mettre la LED en mode LOW
60
        EtatLed = 0;      //J'affecte la valeur 0 à EtatLed, cela me sert d'indicateur pour LED éteinte
61
        delay(500);       //arrêt d'exécution pendant 500 ms (1/2 seconde)
62
      }
63
  } 
64
65
} //Fin de boucle, retour au début de boucle