const int btn_minus = 2; // Bouton 1 pour décrémenter le nombre de LED allumées
const int btn_plus = 3; // Bouton 2 pour incrémenter le nombre de LED allumées
const int led_0 = 9; // Led 0
const int led_1 = 8; // Led 1
const int led_2 = 7; // Led 2
const int led_3 = 6; // Led 3
const int led_4 = 5; // Led 4
const int led_5 = 4; // Led 5
/*
Déclaration des variables utilisées pour le comptage et le décomptage
*/
int nombre_led = 0; // le nombre qui sera incrémenté et décrémenté
int etat_bouton; // lecture de l'état des boutons (un seul à la fois, mais une variable suffit;
// en effet, il n'est pas prévu d'appuyer sur les deux boutons simultanément)
int memoire_plus = LOW; // état relâché par défaut pour le bouton 2
int memoire_minus = LOW; // état relâché par défaut pour le bouton 1
/*
Initialisation des broches en entrée/sortie : entrées pour les boutons, sorties pour les LED
*/
void setup()
{
pinMode(btn_plus, INPUT);
pinMode(btn_minus, INPUT);
pinMode(led_0, OUTPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
pinMode(led_5, OUTPUT);
}
/*
Et c'est parti pour le programme !
*/
void loop()
{
// Lecture de l'état du bouton d'incrémentation
// (on lit l'état du btn_plus et on l'inscrit dans la variable etat_bouton)
etat_bouton = digitalRead(btn_plus);
// Si le bouton a un état différent de celui enregistré ET que cet état est "appuyé"
if((etat_bouton != memoire_plus) && (etat_bouton == HIGH))
{
nombre_led++; // on incrémente la variable qui indique combien de LED devront s'allumer
}
memoire_plus = etat_bouton; // on enregistre l'état du bouton pour le tour suivant
// et maintenant pareil pour le bouton qui décrémente
etat_bouton = digitalRead(btn_minus); //lecture de son état
// Si le bouton a un état différent de celui enregistré ET que cet état est "appuyé"
if((etat_bouton != memoire_minus) && (etat_bouton == HIGH))
{
nombre_led--; // on décrémente la valeur de nombre_led
}
memoire_minus = etat_bouton; // on enregistre l'état du bouton pour le tour suivant
// on applique des limites au nombre pour ne pas dépasser 6 ou 0 (puisqu'on a 4 LED)
if(nombre_led > 6)
{
nombre_led = 6;
}
if(nombre_led < 0)
{
nombre_led = 0;
}
// On crée une fonction affiche() pour l'affichage du résultat
// on lui envoie alors en paramètre la valeur du nombre de LED à éclairer
affiche(nombre_led);
delay(25);
}
void affiche(int valeur_recue)
{
// on éteint toutes les LED
digitalWrite(led_0, LOW);
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
digitalWrite(led_5, LOW);
// Puis on les allume une à une
if(valeur_recue >= 1) // "si la valeur reçue est plus grande ou égale à 1..."
{
digitalWrite(led_0, HIGH); // "on allume la LED 0
}
if(valeur_recue >= 2) // "si la valeur reçue est plus grande ou égale à 2..."
{
digitalWrite(led_1, HIGH); // "on allume la LED 1 (sous-entendu que la LED 0 est allumée,
// puisque la valeur est plus grande que 1)
}
if(valeur_recue >= 3) // "si la valeur reçue est plus grande ou égale à 3... "
{
digitalWrite(led_2, HIGH); // "on allume la LED 2
}
if(valeur_recue >= 4) // "si la valeur reçue est plus grande ou égale à 4..."
{
digitalWrite(led_3, HIGH); // "on allume la LED 3
}
if(valeur_recue >= 5) // "si la valeur reçue est plus grande ou égale à 4..."
{
digitalWrite(led_4, HIGH); // "on allume la LED 3
}
if(valeur_recue >= 6) // "si la valeur reçue est plus grande ou égale à 4..."
{
digitalWrite(led_5, HIGH); // "on allume la LED 3
}
}