• Aucun résultat trouvé

LED + bouton poussoir

Dans le document Electronique avec Arduino (Page 62-85)

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

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

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

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

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

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) = 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

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

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

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

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 + 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 »

Indique si on entre

const int led_rouge=2;

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

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);

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);

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);

Serial.println(" LOW ");}

const int led_rouge=2;

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

4.1. Objectif

Dans le document Electronique avec Arduino (Page 62-85)

Documents relatifs