Allumer les leds et déclencher le buzzer sur commande
On adopte la convention suivante :
NL0 => 0 V
NL1 => +5 V
Préparation au défi
Fondamental :
Attention :
On observe que lorsque un bouton-poussoir est relâché la broche du microcontrôleur associée se retrouve en l'air car il n'y a pas de résistance de tirage à l'état haut (pull-up).
Heureusement on peut activer une résistance de pull-up à l'intérieur du microcontrôleur par programmation en écrivant :
void setup() {
pinMode(X, INPUT_PULLUP); // X étant le n° de la broche UNO concernée
}
Le défi
Le poussoir K1 allumera les 4 leds et activera le buzzer, le poussoir K2 désactivera les leds et le buzzer. Les méthodes qui suivent vous aiderons à relever ce défi.
Appeler le professeur pour valider le bon fonctionnement.
Méthode : Lire l'état d'une broche
Il faut utiliser l'instruction digitalRead() et stocker le résultat dans une variable logique (booléenne).
// Au dessus du setupbool etat_bp_K1; // on déclare une variable de type boolénne (logique)
const int K1 = 9; // car K1 est raccordé à la broche 9 de l'Arduino Uno
void setup() {
pinMode(K1, INPUT_PULLUP); // car la broche 9 doit être une entrée avec une résistance de pull-up interne
}
void loop() {
etat_bp_K1 = digitalRead(K1); // la variable etat_bp_K1 contiendra 0 ou 1 en fonction de l'état du bp K1 (relâché ou appuyé)
}
Méthode : Générer un niveau logique sur une broche
Il faut utiliser l'instruction digitalWrite() en précisant la broche et le niveau de tension.
// Au dessus du setupconst int D1_BLUE = 2; // car la led bleu D1 est raccordée à la broche 2 de l'Arduino Uno
void setup() {
pinMode(D1_BLUE, OUTPUT); // car la broche 2 doit être une sortie
}
void loop() {
digitalWrite(D1_BLUE, HIGH); // un NL1 est généré sur la broche 2 de l'Arduino Uno
digitalWrite(D1_BLUE, LOW); // un NL0 est généré sur la broche 2 de l'Arduino Uno
}
Méthode : Tester la valeur d'une variable logique
void loop() {
if (etat_bp_K1 == HIGH) {
// code executé si etat_bp_K1 contient 1}
if (etat_bp_K1 == LOW) {
// code executé si etat_bp_K1 contient 0}
}
