Brancher plusieurs boutons poussoir sur une entrée analogique et piloter différentes Leds avec Arduino

Niveau APPRENTISSAGE :   Intermédiaire

 

    Prérequis :

Matériel :

Version IDE :

 

 

Vidéo de démonstration :

 

Schéma de câblage :

 

Code :

// La broche numérique 6 est reliée à la led verte. On lui donne le nom LedVerte.
int LedVerte = 6;
// Etc...
int LedRouge = 5;
int LedJaune = 4;
int LedBlanche = 3;

// La valeur Analogique du Bouton 1 appuyé est égale à 0.
int ValeurAnaBT1 = 0;
int ValeurAnaBT2 = 67;
int ValeurAnaBT3 = 181;
int ValeurAnaBT4 = 306;

// Déclaration variable Tolérance qui va servir à stocker une valeur au format int.
//On servira à définir une tolérance de 10 pour les valeurs analogiques des boutons.
int Tolerance = 10;

// Déclaration variable DetctBTe qui va servir à stocker une valeur au format boolean soit 0 ou 1.
boolean DetctBT;

void setup()
{
  // Initialiser la communication série à 9600 bits par seconde
  Serial.begin(9600);
  // Définit LedVerte comme sortie.
  pinMode(LedVerte, OUTPUT);
  // Etc...
  pinMode(LedRouge, OUTPUT);
  pinMode(LedJaune, OUTPUT);
  pinMode(LedBlanche, OUTPUT);
}
void loop()
{
  // Lit la broche analogique A0 et stock ça valeur dans ValeurA0 au format int.
  int ValeurA0 = analogRead(A0);
  // Imprime la valeur de "ValeurA0" dans le moniteur série.
  Serial.println(ValeurA0);

  // Si ValeurA0 est plus petit ou égal à ValeurAnaBT1 + la Tolerance
  // Et que la variable DetctBT est à 0
  if (ValeurA0 <= ValeurAnaBT1 + Tolerance && DetctBT == 0) {
    //Alors on allume la LedVerte
    digitalWrite(LedVerte, HIGH);
    //Et on modifie la valeur de DetctBT à 1
    DetctBT = 1;
  }
  // Sinon si ValeurA0 est plus petit ou égal à ValeurAnaBT2 + la Tolerance
  // Et que la variable DetctBT est à 0
  else if (ValeurA0 <= ValeurAnaBT2 + Tolerance && DetctBT == 0) {
    digitalWrite(LedRouge, HIGH);
    DetctBT = 1;
  }
  else if (ValeurA0 <= ValeurAnaBT3 + Tolerance && DetctBT == 0) {
    digitalWrite(LedJaune, HIGH);
    DetctBT = 1;
  }
  else if (ValeurA0 <= ValeurAnaBT4 + Tolerance && DetctBT == 0) {
    digitalWrite(LedBlanche, HIGH);
    DetctBT = 1;
  }
  // Sinon si ValeurA0 est plus grande que la ValeurAnaBT4 + la Tolerance
  // Et que la variable DetctBT est à 1
  //(Signifie que tous les boutons sont revenus au repos après un appuie.)
  else if (ValeurA0 > ValeurAnaBT4 + Tolerance && DetctBT == 1) {
    //Alors on éteint toutes les sorties
    digitalWrite(LedVerte, LOW);
    digitalWrite(LedRouge, LOW);
    digitalWrite(LedJaune, LOW);
    digitalWrite(LedBlanche, LOW);
    //Et on modifie la valeur de DetctBT à 0
    DetctBT = 0;
    //On attend 40 ms pour éviter les anti-rebonds.
    delay(40);
  }
}

 

Simulation TINKERCAD :

 


+ Infos sur le langage utilisé :

1. Fonctions
2. Variables
3. Stucture

 

Laisser un commentaire