Exercice : A vous de jouer
Montage avec résistance pull-down (rappel au moins)
Réalisez maintenant le circuit suivant :
Lorsqu'on appuie sur le bouton poussoir, La LED doit s'allumer. Et naturellement, lorsqu'on relâche le bouton poussoir, la LED s'éteint.
Nous allons utiliser une nouvelle instruction: if ... else (si ... sinon). C'est donc une condition.
Voici ce qui va se passer:
Si le bouton poussoir est pressé (digitalRead(4) == 1), allumer la LED (digitalWrite(12, HIGH)), sinon
éteindre la LED (digitalWrite(12, LOW)).
L'instruction == vérifie si deux expressions sont égales. Si elles le sont, alors le résultat sera vrai (true) sinon
le résultat sera faux (false).
Analyse du code:
Copier le code ci-dessous ou télécharge le code (code 7).
/*
Allume LED en fonction de l'état du bouton poussoir
*/
// On déclare les variables
const int bouton = 4; // la broche 4 devient bouton
const int led = 12; // la broche 12 devient led
void setup()
{
pinMode(bouton, INPUT); // Initialise la broche 4 comme entrée
pinMode(led, OUTPUT); // Initialise la broche 12 comme sortie
Serial.begin(9600); // Ouvre le port série à 9600 bauds
}
void loop()
{
// Si bouton poussoir appuyé
if (digitalRead(bouton) == 1 ) //teste si le bouton a une valeur de 1
{
digitalWrite(led, HIGH); // allume la LED
}
// Sinon
else //teste si le bouton a une valeur de 0
{
digitalWrite(led, LOW); // éteint la LED
}
}
Coller le code dans le logiciel Arduino.
Une petite variation de code
Le code précédent est simple, mais manque un peu de finesse; un peu comme un barbare avec une hache à deux mains dans une réception de Monsieur l'Ambassadeur. Voici donc une autre solution:
/*
Allume LED en fonction de l'état du bouton poussoir
*/
const int bouton = 4; // la broche 4 devient bouton
const int led = 12; // la broche 12 devient led
int etatbouton; // variable qui enregistre l'état du bouton
void setup()
{
pinMode(bouton, INPUT); // Initialise le bouton comme entrée
pinMode(led, OUTPUT); // Initialise la led comme sortie
etatbouton = LOW; // Initialise l'état du bouton comme relâché
Serial.begin(9600); // Ouvre le port série à 9600 bauds
}
void loop()
{
etatbouton = digitalRead(bouton); //On mémorise l'état du bouton
if(etatbouton == LOW) //teste si le bouton a un niveau logique BAS
{
digitalWrite(led,LOW); //la LED reste éteinte
}
else //teste si le bouton a un niveau logique différent de BAS (donc HAUT)
{
digitalWrite(led,HIGH); //le bouton est appuyé, la LED est allumée
}
}
Télécharger le code ci-dessous.
Question
Tester ce programme avec la carte Arduino.
Bouton poussoir et LED qui clignote
Imaginons maintenant le cas de figure suivant, avec le même circuit : lorsque nous appuyons sur le bouton,
la LED commence à clignoter.
Question
Modifier le programme pour arriver à ce résultat.