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.