• Aucun résultat trouvé

LED + bouton poussoir

Allumer une LED lorsque l’on appuie sur un bouton et l’éteindre lorsqu’on relache le bouton

Pascal MASSON Electronique avec Arduino (version projection V45) 63

3.2. Montage

Fonctionnement du bouton poussoir

3. LED + bouton poussoir

▪ Il présente 4 pattes qui sont connectées 2 à 2. Les pattes sont électriquement reliées entre elles lorsque l’on appuie sur le bouton

Schéma équivalent

Schéma simplifié

Présence d’une encoche

3.2. Montage

Détection de l’état du bouton poussoir

5 V

3. LED + bouton poussoir

▪ L’entrée I/O de l’arduino présente une impédance de 100 M et se comporte donc comme l’entrée d’un oscilloscope mais avec une résistance plus grand (oscilloscope = 1 M)

V7

R 5 V

0 V

Pascal MASSON Electronique avec Arduino (version projection V45) 65

3.2. Montage

5 V

3. LED + bouton poussoir

▪ L’entrée I/O de l’arduino présente une impédance de 100 M et se comporte donc comme l’entrée d’un oscilloscope mais avec une résistance plus grand (oscilloscope = 1 M)

Rint = 100 M

Arduino

V7

▪ On considère ici l’I/O n°7

▪ Quelle est la valeur de la résistance ?

▪ Quand on appuie pas sur le bouton la valeur de la tension V7 s’obtient avec un simple diviseur de tension

V

Détection de l’état du bouton poussoir

3.2. Montage

5 V

0 V

3. LED + bouton poussoir

▪ Quand on appuie sur le bouton poussoir, on force V7 à 0 V

Rint = 100 M

Arduino

V7

▪ Le courant qui circule dans la résistance R est donc de 0.5 mA ce qui est faible par rapport au courant que peux délivrer le régulateur de tension qui donne le 5 V

R 0 V

Détection de l’état du bouton poussoir

Pascal MASSON Electronique avec Arduino (version projection V45) 67

3.2. Montage

Montage complet avec l’arduino

3. LED + bouton poussoir

5 V 0 V

5 V

3.2. Montage

Montage complet avec l’arduino

3. LED + bouton poussoir

5 V 0 V

0 V

Pascal MASSON Electronique avec Arduino (version projection V45) 69

3.2. Montage

3. LED + bouton poussoir

Montage complet avec l’arduino

X==Y : donne la valeur HIGH si la stricte égalité est vérifiée sinon cela donne la valeur LOW

if(X) {YYYYYY} : permet d’effectuer les opérations YYYYYY si la condition X est vérifiée

else {ZZZZZZ} : sinon on effectue les opérations ZZZZZZ

3.3. Ecriture du programme

3. LED + bouton poussoir

Les nouvelles fonctions

Pascal MASSON Electronique avec Arduino (version projection V45)

digitalRead(X) : Lit l’état LOW ou HIGH de l’I/O X déclarée comme une entrée

71

3. LED + bouton poussoir

digitalRead(7) = 1 5 V

0 V

5 V

Les nouvelles fonctions

3.3. Ecriture du programme

digitalRead(X) : Lit l’état LOW ou HIGH de l’I/O X déclarée comme une entrée

3. LED + bouton poussoir

digitalRead(7) = 0 5 V

0 V

0 V

Les nouvelles fonctions

3.3. Ecriture du programme

Pascal MASSON Electronique avec Arduino (version projection V45) 73

3. LED + bouton poussoir

// déclaration d’une variable globale qui mémorise l’état du bouton

Diagramme fonctionnel

3.3. Ecriture du programme

val=0

// lecture de l’état de l’entrée 7

LED allumée LED éteinte

val=? 0 1

val=?

// condition sur la valeur de val

3. LED + bouton poussoir

val=1 val=0

// lecture de l’état de l’entrée 7

LED allumée LED éteinte

val=? 0 1

val=?

// condition sur la valeur de val

Diagramme fonctionnel

3.3. Ecriture du programme

// déclaration d’une variable globale qui mémorise l’état du bouton

Pascal MASSON Electronique avec Arduino (version projection V45) 75

3. LED + bouton poussoir

val=0 val=0

// lecture de l’état de l’entrée 7

LED allumée LED éteinte

val=? 0 1

val=?

// condition sur la valeur de val

Diagramme fonctionnel

3.3. Ecriture du programme

// déclaration d’une variable globale qui mémorise l’état du bouton

3. LED + bouton poussoir

//LED qui s’allume quand on appuie sur un bouton

const int led_rouge=2; //on définit une constante de type entier

const int bouton=7; //on définit une autre constante de type entier if (val==HIGH) {digitalWrite(led_rouge, HIGH);} // éteint la LED

else {digitalWrite(led_rouge, LOW);} // allume la LED

Le code de base

3.3. Ecriture du programme

Pascal MASSON Electronique avec Arduino (version projection V45) 77

3. LED + bouton poussoir

Le code + indication de démarrage

▪ Dans le setup, on ajoute deux lignes pour allumer la LED pendant 2 s

void setup(){

pinMode(led_rouge, OUTPUT);

pinMode(bouton, INPUT);

digitalWrite(led_rouge, LOW);

delay(2000);

}

▪ Cela permettra de visualiser le démarrage du programme lorsque la carte sera branchée

▪ La LED s’éteint dès la première la boucle infinie (sauf si on appuie sur le bouton)

3.3. Ecriture du programme

Envoi la valeur de val

3. LED + bouton poussoir

Le code + moniteur série

▪ Il faut aussi penser au moniteur série et donc ajouter la communication série dans les parties setup et loop.

3.3. Ecriture du programme

Indique si on entre dans le « if »

digitalWrite(led_rouge, LOW);

delay(2000); }

void loop() { val=digitalRead(bouton);

Serial.print(val);

Serial.print(" ");

if (val==HIGH) {

digitalWrite(led_rouge, HIGH);

Serial.println(" HIGH");}

else {

digitalWrite(led_rouge, LOW);

Pascal MASSON Electronique avec Arduino (version projection V45) 79

3. LED + bouton poussoir

Le code

▪ Il faut aussi penser au moniteur série et donc ajouter la communication série dans les parties setup et loop.

3.3. Ecriture du programme

1

digitalWrite(led_rouge, LOW);

delay(2000); }

void loop() { val=digitalRead(bouton);

Serial.print(val);

Serial.print(" ");

if (val==HIGH) {

digitalWrite(led_rouge, HIGH);

Serial.println(" HIGH");}

else {

digitalWrite(led_rouge, LOW);

Serial.println(" LOW ");}

}

3. LED + bouton poussoir

Le code

▪ Il faut aussi penser au moniteur série et donc ajouter la communication série dans les parties setup et loop.

3.3. Ecriture du programme

1

digitalWrite(led_rouge, LOW);

delay(2000); }

void loop() { val=digitalRead(bouton);

Serial.print(val);

Serial.print(" ");

if (val==HIGH) {

digitalWrite(led_rouge, HIGH);

Serial.println(" HIGH");}

else {

digitalWrite(led_rouge, LOW);

Pascal MASSON Electronique avec Arduino (version projection V45) 81

3. LED + bouton poussoir

Le code

▪ Il faut aussi penser au moniteur série et donc ajouter la communication série dans les parties setup et loop.

3.3. Ecriture du programme

1

digitalWrite(led_rouge, LOW);

delay(2000); }

void loop() { val=digitalRead(bouton);

Serial.print(val);

Serial.print(" ");

if (val==HIGH) {

digitalWrite(led_rouge, HIGH);

Serial.println(" HIGH");}

else {

digitalWrite(led_rouge, LOW);

Serial.println(" LOW ");}

}

3. LED + bouton poussoir

Le code

▪ Il faut aussi penser au moniteur série et donc ajouter la communication série dans les parties setup et loop.

3.3. Ecriture du programme

1 HIGH

digitalWrite(led_rouge, LOW);

delay(2000); }

void loop() { val=digitalRead(bouton);

Serial.print(val);

Serial.print(" ");

if (val==HIGH) {

digitalWrite(led_rouge, HIGH);

Serial.println(" HIGH");}

else {

digitalWrite(led_rouge, LOW);

Pascal MASSON Electronique avec Arduino (version projection V45) 83

3. LED + bouton poussoir

Le code

▪ Il faut aussi penser au moniteur série et donc ajouter la communication série dans les parties setup et loop.

3.3. Ecriture du programme

1 HIGH

digitalWrite(led_rouge, LOW);

delay(2000); }

void loop() { val=digitalRead(bouton);

Serial.print(val);

Serial.print(" ");

if (val==HIGH) {

digitalWrite(led_rouge, HIGH);

Serial.println(" HIGH");}

else {

digitalWrite(led_rouge, LOW);

Serial.println(" LOW ");}

}

3. LED + bouton poussoir

Le code

▪ Il faut aussi penser au moniteur série et donc ajouter la communication série dans les parties setup et loop.

3.3. Ecriture du programme

1 HIGH

digitalWrite(led_rouge, LOW);

delay(2000); }

void loop() { val=digitalRead(bouton);

Serial.print(val);

Serial.print(" ");

if (val==HIGH) {

digitalWrite(led_rouge, HIGH);

Serial.println(" HIGH");}

else {

digitalWrite(led_rouge, LOW);

Pascal MASSON Electronique avec Arduino (version projection V45) 85

4.1. Objectif

Documents relatifs