/*
Code 12 - Edurobot.ch, destiné à l'Arduino
Le bargraphe
L'objectif est de réaliser un bargraphe, avec 4 LEDs et deux boutons poussoirs: un pour
incrémenter le nombre de LEDs allumées, l'autre pour le décrémenter.
*/
/*
Déclaration des constantes pour les noms des broches
*/
const int btn_minus = 2; //Bouton 1 pour décrémenter le nombre de LEDs allumées
const int btn_plus = 3; //Bouton 2 pour incrémenter le nombre de LEDs allumés
const int led_0 = 8; //Led 0
const int led_1 = 9; //Led 1
const int led_2 = 10; //Led 2
const int led_3 = 11; //Led 3
/*
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
/*
Initilisation des broches en entrée/sortie: entrées pour les boutons, sorties pour les LEDs
*/
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);
}
/*
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 que 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 LEDs 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 que 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
//Arduino à l'école
//61
}
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 4 ou 0 (puisqu'on a 4 LEDs)
if(nombre_led > 4)
{
nombre_led = 4;
}
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);
}
void affiche(int valeur_recue)
{
//on éteint toutes les LEDs
digitalWrite(led_0, LOW);
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, 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
}}