• Aucun résultat trouvé

Electronique avec Arduino

N/A
N/A
Protected

Academic year: 2022

Partager "Electronique avec Arduino"

Copied!
164
0
0

Texte intégral

(1)

Cours sponsorisé par la société

Pascal MASSON

Version projection Edition 2018-2019-V40

(pascal.masson@unice.fr)

Electronique avec Arduino

(ex ATMEL)

(2)

Sommaire

1. Généralités

2. Commande d’une LED 3. LED + bouton poussoir

6. Pulse Width Modulation (PWM) 4. Entrées analogiques

5. Ecran LCD 162

7. Mesure de distance 8. Communications IR

Introduction

(3)

▪ Applications simples pour des étudiants BAC + 1 et 2

Introduction

Robot BAC + 1

Emetteur FM BAC + 2

▪ Objets que les étudiants manipulent au quotidien :

(4)

▪ L’émergence et succès grandissant des cartes de développement

Introduction

▪ C’est l’occasion de réaliser des projets plus ou moins complexes qui correspondent mieux à l’électronique actuelle tout en restant accessibles aux étudiants de BAC+2.

▪ Tous les acteurs du marché s’y lancent

(5)

Introduction

▪ Nous avons choisi la carte Arduino Uno (ou équivalent)

▪ Pas de système d’exploitation

▪ Mini-ordinateur qui traite des données analogiques et numériques provenant de composants et capteurs divers (capteur de température, luminosité, mouvement ou boutons-poussoirs, etc.).

▪ Elle permet aussi de contrôler des objets comme des lampes ou encore des moteurs.

▪ Une quantité « infinie » d’applications sur internet.

(ex ATMEL)

(6)

Introduction

▪ Carte qui permet de travailler sur un mélange d'électronique et de programmation embarquée (informatique embarquée)

▪ L’objectif premier du cours BAC+2 est de concevoir, manipuler et contrôler de petits circuits analogiques (…et numériques)

▪ Les programmes réalisés restent toujours assez simples mais rien n’empêche les étudiants d’en réaliser de plus complexes.

(ex ATMEL)

(7)

▪ Les étudiants ont la possibilité de réaliser leur projet (non noté et en plus des cours) à base d’arduino. Une aide technique et matérielle est fournie dans la mesure du possible

Alarme maison

Fusée avec électronique

embarquée Lanceur de balle de ping-pong

Barduino

Introduction

Projets personnels

(8)

▪ Les étudiants choisissent le projet qu’ils souhaitent réaliser durant les séances encadrées

Wall-E Voiture tout terrain

Drône

▪ 39 projets

Introduction

Projets école

(9)

▪ Il n’est pas possible de renouveler le matériel tous les ans.

▪ Une partie du matériel prêté doit être rendue en parfait état en fin d’année après la dernière séance de projet.

Introduction

Matériel prêté

(10)

▪ Les étudiants doivent avoir à chaque séance :

Introduction

Matériel à apporter

(11)

▪ Premier semestre :

▪ Les cours sont obligatoires donc : 1 absence enlève 0.5 point au dernier DS

✓ Prise en main avec des exemples simples – P. MASSON

▪ Deuxième semestre :

✓ AOP (fréquencemètre) – G. JACQUEMOD

✓ Prise en main du bluetooth, du gyroscope, logiciel plot plotter (simulation d’oscilloscope), connexion avec téléphone portable (androïde) – P. MASSON

✓ Projets – P. MASSON

▪ Les cours se déroulent dans la salle de TP électronique BAC + 1 et 2

Introduction

✓ Numérique – F. MULLER

Déroulement des cours ARDUINO

✓ Projets – N. ABDERRAHMANE, P. MASSON

(12)

Introduction

Dans cette salle

▪ Il est interdit de boire et/ou de manger.

(13)

1.1. Présentation de la carte ARDUINO UNO

1. Généralités

Port USB

Bouton reset

Entrées/sorties logiques

Sortie série Entrée série Régulateur

Alimentation 5V Extérieure 9V, + au centre

Entrées

analogiques Sortie alimentation 3.3 V, 50 mA max

Sortie 5 V

Masse

Alimentation

jusqu’à 12 V

(14)

1.1. Présentation de la carte Xplained MINI

1. Généralités

Port USB

Entrées/sorties logiques (PD2-PD7

& PB0-PB5)

Sortie série (PD1) Entrée série (PD0) Entrées

analogiques Sortie alimentation 3.3 V, 50 mA max

Sortie 5 V

Masse

(15)

1.1. Présentation de la carte Xplained MINI

1. Généralités

▪ Pour accéder à cette carte il faut :

▪ Dans le logiciel IDE il faut sélectionner : 1. Une carte de type « Arduino Nano » 2. Un processeur de type : ATmega328

▪ Très important, un numéro de port doit apparaître dans l’arborescence Outil/Port

1. Un câble USB micro

2. Installer le logiciel « driver-atmel-bundle-7.0.712.exe » que vous trouverez sur mon site :

http://users.polytech.unice.fr/~pmasson/Enseignement-arduino.htm sous l’intitulé :

ATMEL USB driver pour pouvoir utiliser la carte Xplained mini

(16)

1.1. Présentation de la carte Xplained MINI

1. Généralités

▪ Pour accéder à cette carte il faut :

▪ Dans le logiciel IDE il faut sélectionner : 1. Une carte de type « Arduino Nano » 2. Un processeur de type : ATmega328

▪ Très important, un numéro de port doit apparaître dans l’arborescence Outil/Port

1. Un câble USB micro

2. Installer le logiciel « driver-atmel-bundle-7.0.712.exe » que vous trouverez sur mon site :

http://users.polytech.unice.fr/~pmasson/Enseignement-arduino.htm sous l’intitulé :

ATMEL USB driver pour pouvoir utiliser la carte Xplained mini

(17)

1.3. Présentation du logiciel

1. Généralités

http://arduino.cc/en/Main/Software

(18)

2.1. Objectifs

2. Commande d’une LED

1) Faire clignoter une LED

2) Apprendre à réaliser un montage

3) Apprendre à écrire un programme simple en langage arduino

4) Apprendre à dépanner le montage et le programme

(19)

2.2. Montage

2. Commande d’une LED

▪ Une diode ne laisse passer le courant que dans un sens. Elle peut aussi recevoir ou émettre de la lumière

Rappel sur la diode

Patte plus longue

(20)

2.2. Montage

2. Commande d’une LED

▪ Modélisation simple de la diode :

Rappel sur la diode

Diode boquée : V

D

< V

S

et I

D

= 0

Diode passante : V

D

> V

S

et V

D

= V

S

+ R

S

.I

D

avec : V

S

= 1.77 V

R

S

= V

D

/I

D

= 4.4 

cathode anode

V

D

I

D

P

▪ Vue schématique : N

▪ Exemple de courbe :

(21)

2.2. Montage

2. Commande d’une LED

▪ On constate que pour la LED rouge, que si on fait passer un courant de 20 mA la tension à ses bornes vaut typiquement 2 V

Polarisation de la LED

(22)

2.2. Montage

2. Commande d’une LED

▪ Le schéma électrique se résume à celui étudié au début du cours sur la diode en PeiP1 où E

G

représente une des sorties de l’arduino

Choix de la résistance

E

G

V

D

R I

D

▪ Il faut déterminer la valeur de la résistance R et pour cela on peut se placer dans les conditions typiques indiquées par le constructeur soit I

D

= 20 mA et V

D

= 2 V

 

 150

I V R E

D D G

▪ Pour les valeurs extrêmes on trouve que R est compris entre 140  et 160 .

5 V 2 V

20 mA

(23)

▪ La marge d’erreur est de 0.4 V ce qui est bien au dela de la tension aux bornes de la résistance série de la diode :

2.2. Montage

2. Commande d’une LED

▪ Si on branche directement la diode directement sur le 5 V elle laissera passer un courant de :

mA 4 730

. 4

77 . 1

I D  5  

D S S

G V R . I

E  

▪ Ce courant grille la diode : donc on place toujours une résistance de protection en série de la diode

Choix de la résistance

mV 80 02

. 0 4 I

.

R S D   

(24)

2.2. Montage

2. Commande d’une LED

▪ Donc pour 150  il faut le code : marron / vert / marron

Choix de la résistance

▪ Il n’existe pas toutes les valeurs possibles de résistances et il faut en choisir une qui s’approche : 120, 150, 180, 220 

▪ Il faut aussi vérifier la puissance à dissiper

▪ Donc une résistance 1/4 de Watt suffit W

06 . 0 I

. R

P  D 2

(25)

2.2. Montage

2. Commande d’une LED

▪ Les sorties numériques de l’arduino peuvent aussi être configurées comme des entrées (I/O) et cela devra être précisé lors de l’écriture du programme.

Sortie/entrée numérique de l’arduino

Arduino

I/O Générateur

de tension

Voltmètre OUTPUT

INPUT

▪ Si l’I/O est configurée comme une sortie, un « interrupteur » bascule dans

l’arduino et sélectionne un générateur de tension (0 et 5 V) sinon

l’interrupteur sélectionne un voltmètre qui ne lit que les tensions 0 et 5 V.

(26)

▪ Les sorties peuvent délivrer ou absorber du courant mais il est préférable de ne pas demander de courant au micro-controleur. Une I/O peut délivre 40 mA

2.2. Montage

2. Commande d’une LED

Sortie/entrée numérique de l’arduino

▪ On choisit (arbitrairement) l’I/O n°2

(27)

2.2. Montage

2. Commande d’une LED

▪ Si la sortie n°2 est à 0, alors un courant circule et la diode s’allume

Sortie/entrée numérique de l’arduino

0

I

D

(28)

2.2. Montage

2. Commande d’une LED

Sortie/entrée numérique de l’arduino

1

▪ Si la sortie n°2 est à 1 (donc 5 V), alors aucun courant circule et la diode est

éteinte

(29)

2.2. Montage

2. Commande d’une LED

Circuit sur la plaque de test

▪ La plaque utilisée dans ce cours comporte 830 points de connexion dans lesquels on enfiche les pattes des composants.

▪ Une partie des points de connexions sont reliés

entre eux

(30)

2.2. Montage

2. Commande d’une LED

▪ La plaque utilisée dans ce cours comporte 830 points de connexion dans lesquels on enfiche les pattes des composants.

Circuit sur la plaque de test

▪ Une partie des points de connexions sont reliés entre eux

▪ Les montages que vous allez réaliser devront être soignés et sans risque de courts-circuits.

BIEN

(31)

2.2. Montage

2. Commande d’une LED

▪ La plaque utilisée dans ce cours comporte 830 points de connexion dans lesquels on enfiche les pattes des composants.

Circuit sur la plaque de test

▪ Une partie des points de connexions sont reliés entre eux

▪ Les montages que vous allez réaliser devront être soignés et sans risque de courts-circuits.

PAS BIEN

(32)

2.2. Montage

2. Commande d’une LED

▪ La plaque utilisée dans ce cours comporte 830 points de connexion dans lesquels on enfiche les pattes des composants.

Circuit sur la plaque de test

▪ Une partie des points de connexions sont reliés entre eux

▪ Les montages que vous allez réaliser devront être soignés et sans risque de courts-circuits.

PAS BIEN DU TOUT

(33)

2.2. Montage

2. Commande d’une LED

Montage final

(34)

2.3. Ecriture du programme

2. Commande d’une LED

// indique une ligne de commentaire

; indique la fin d’une instruction

A ne pas oublier

Structure d’un programme

// Nom du programme et description de ce qu’il fait // Déclaration des constantes et variables

void setup(){ //début du programme

} // fin de définition du début de programme avec les variables void loop() { // écriture de ce que fait le programme

} // indique la fin du programme qui recommencera au début

(35)

Les nouvelles fonctions

2.3. Ecriture du programme

2. Commande d’une LED

const : on définit une « variable » qui est en fait « constante »

int : correspond à une variable de type « entier » dont la valeur est comprise entre  2 147 483 648 et + 2 147 483 647

delay(X) : permet d’arrêter le déroulement du programme durant X

millisecondes

(36)

Les nouvelles fonctions

2.3. Ecriture du programme

2. Commande d’une LED

pinMode (X,Y) : permet de configurer une entrée/sortie (I/O) en sortie ou en entrée. X correspond au numéro de l’I/O (2, 3, 4 ….) et Y au mode : INPUT ou OUTPUT

digitalWrite (X,Y) : permet d’affecter la valeur 0 ou 1 à la sortie numérique X, Y prend la valeur LOW ou HIGH

Arduino

I/O n°2 Générateur

de tension

Voltmètre

OUTPUT INPUT

pinMode(2,OUTPUT) digitalWrite(2,LOW)

0 V

0 V

0 V

(37)

Les nouvelles fonctions

2.3. Ecriture du programme

2. Commande d’une LED

pinMode (X,Y) : permet de configurer une entrée/sortie (I/O) en sortie ou en entrée. X correspond au numéro de l’I/O (2, 3, 4 ….) et Y au mode : INPUT ou OUTPUT

digitalWrite (X,Y) : permet d’affecter la valeur 0 ou 1 à la sortie numérique X, Y prend la valeur LOW ou HIGH

Arduino

I/O n°2 Générateur

de tension

Voltmètre

OUTPUT INPUT

pinMode(2,OUTPUT) digitalWrite(2,HIGH)

0 V

5 V

5 V

(38)

Les nouvelles fonctions

2.3. Ecriture du programme

2. Commande d’une LED

pinMode (X,Y) : permet de configurer une entrée/sortie (I/O) en sortie ou en entrée. X correspond au numéro de l’I/O (2, 3, 4 ….) et Y au mode : INPUT ou OUTPUT

digitalWrite (X,Y) : permet d’affecter la valeur 0 ou 1 à la sortie numérique X, Y prend la valeur LOW ou HIGH

Arduino

I/O n°2 Générateur

de tension

Voltmètre

OUTPUT INPUT

pinMode(2,INPUT)

0 ou 5 V

(39)

Algorithme

2.3. Ecriture du programme

2. Commande d’une LED

LED allumée

LED éteinte Attente

Attente

I/O n°2 : OUTPUT

Delay : 1s I/O n°2 : LOW

Delay : 0.2 s

I/O n°2 : HIGH

(40)

2.3. Ecriture du programme

2. Commande d’une LED

//LED qui clignote const int led_rouge=2;

void setup(){

}

void loop() {

}

Le code

LED allumée

LED éteinte Attente

Attente

I/O n°2 : OUTPUT

Delay : 1s I/O n°2 : LOW

Delay : 0.2 s

I/O n°2 : HIGH

(41)

2.3. Ecriture du programme

2. Commande d’une LED

//LED qui clignote const int led_rouge=2;

void setup(){

pinMode(led_rouge, OUTPUT);

}

void loop() {

}

Le code

LED allumée

LED éteinte Attente

Attente

I/O n°2 : OUTPUT

Delay : 1s I/O n°2 : LOW

Delay : 0.2 s

I/O n°2 : HIGH

(42)

2.3. Ecriture du programme

2. Commande d’une LED

LED allumée

LED éteinte Attente

Attente

//LED qui clignote const int led_rouge=2;

void setup(){

pinMode(led_rouge, OUTPUT);

}

void loop() {

digitalWrite(led_rouge, LOW delay(1000);

}

Le code

I/O n°2 : OUTPUT

Delay : 1s I/O n°2 : LOW

Delay : 0.2 s

I/O n°2 : HIGH

(43)

2.3. Ecriture du programme

2. Commande d’une LED

//LED qui clignote const int led_rouge=2;

void setup(){

pinMode(led_rouge, OUTPUT);

}

void loop() {

digitalWrite(led_rouge, LOW delay(1000);

digitalWrite(led_rouge, HIGH);

delay(200);

}

Le code

LED allumée

LED éteinte Attente

Attente

I/O n°2 : OUTPUT

Delay : 1s I/O n°2 : LOW

Delay : 0.2 s

I/O n°2 : HIGH

(44)

2.3. Ecriture du programme

2. Commande d’une LED

//LED qui clignote

void setup(){

pinMode(2, OUTPUT);

}

void loop() {

digitalWrite(2, LOW

delay(1000);

digitalWrite(2, HIGH);

delay(200);

}

▪ Il n’est pas obligatoire de définir une variable led_rouge et on peut directement écrire digitalWrite(2, LOW);

▪ Par contre si vous écrivez un programme avec plusieurs centaines de lignes et que vous décidez de changer de sortie, il faudra changer le numéro dans le programme à chaque apparition

Le code

(45)

2. Commande d’une LED

▪ L’ordinateur convertit le programme en une succession d’instructions que l’arduino peut comprendre.

0000000 313a 3030 3030 3030 3030 3943 3634 3031 0000010 3030 3943 3734 3033 3030 3943 3734 3033 0000020 3030 3943 3734 3033 4230 0d36 3a0a 3031 0000030 3030 3031 3030 4330 3439 3337 3030 4330 0000040 3439 3337 3030 4330 3439 3337 3030 4330 0000050 3439 3337 3030 3439 0a0d 313a 3030 3230 0000060 3030 3030 3943 3734 3033 3030 3943 3734 0000070 3033 3030 3943 3734 3033 3030 3943 3734 0000080 3033 3830 0d34 3a0a 3031 3030 3033 3030 0000090 4330 3439 3337 3030 4330 3439 3337 3030 00000b0 3437 0a0d 313a 3030 3430 3030 3030 3943 00000c0 3134 3037 3031 3943 3734 3033 3030 3943 00000d0 3734 3033 3030 3943 3734 3033 4230 0d46

2.4. Compilation et programmation de l’arduino

Compilation

(46)

Envoi du programme à l’arduino

2.4. Compilation et programmation de l’arduino

2. Commande d’une LED

Compilation Compilation

+ envoi à l’arduino

Rapport de fin de

compilation et

d’envoi à l’arduino

(47)

2.5. Déroulement du programme

2. Commande d’une LED

▪ On voit la LED clignoter avec une période de 1.2 s.

▪ Vous pouvez modifier la durée des temps haut et bas

▪ Vous pouvez aussi changer d’I/O

▪ Le programme étant dans la mémoire ROM de l’arduino, si on débranche la

carte et qu’on la rebranche, le programme recommence du début

(48)

2.6. Dépannage

2. Commande d’une LED

Les pannes fréquentes

▪ Le montage présente des coupures du circuit au niveau de la plaquette (erreur de branchement)

▪ Ce n’est pas la bonne I/O (on compte à partir de 0)

▪ La diode est court-circuitée

▪ La diode est branchée à l’envers

▪ La diode a été branchée directement sur le 5 V …. Il faut la remplacer

▪ Les pattes des composants sont coupées

trop court et ne touchent pas les pistes

métalliques de la plaque de test

(49)

2. Commande d’une LED

Les pannes fréquentes

▪ Le montage présente des coupures du circuit au niveau de la plaquette (erreur de branchement)

2.6. Dépannage

(50)

2. Commande d’une LED

Les pannes fréquentes

▪ Le montage présente des coupures du circuit au niveau de la plaquette (erreur de branchement)

▪ Ce n’est pas la bonne I/O (on compte à partir de 0)

2.6. Dépannage

(51)

2. Commande d’une LED

Les pannes fréquentes

▪ Le montage présente des coupures du circuit au niveau de la plaquette (erreur de branchement)

▪ Ce n’est pas la bonne I/O (on compte à partir de 0)

▪ La diode est court-circuitée

2.6. Dépannage

(52)

2. Commande d’une LED

Les pannes fréquentes

▪ Le montage présente des coupures du circuit au niveau de la plaquette (erreur de branchement)

▪ Ce n’est pas la bonne I/O (on compte à partir de 0)

▪ La diode est court-circuitée

▪ La diode est branchée à l’envers

2.6. Dépannage

(53)

2. Commande d’une LED

Les pannes fréquentes

▪ Le montage présente des coupures du circuit au niveau de la plaquette (erreur de branchement)

▪ Ce n’est pas la bonne I/O (on compte à partir de 0)

▪ La diode est court-circuitée

▪ La diode est branchée à l’envers

▪ La diode a été branchée directement sur le 5 V …. Il faut la remplacer

2.6. Dépannage

(54)

2. Commande d’une LED

Les pannes fréquentes

▪ Le montage présente des coupures du circuit au niveau de la plaquette (erreur de branchement)

▪ Ce n’est pas la bonne I/O (on compte à partir de 0)

▪ La diode est court-circuitée

▪ La diode est branchée à l’envers

▪ La diode a été branchée directement sur le 5 V …. Il faut la remplacer

▪ Les pattes des composants sont coupées trop court et ne touchent pas les pistes métalliques de la plaque de test

BIEN

PAS BIEN DU TOUT

2.6. Dépannage

(55)

2. Commande d’une LED

▪ Pour vérifier si le montage fonctionne, il faut mettre 0 V sur l’entrée 2 et le moyen le plus simple (sans passer par le programme) est de prendre le fil relié à l’entrée 2 et de le mettre à la masse (GND)

Validation du montage « sans arduino »

2.6. Dépannage

(56)

2. Commande d’une LED

▪ Le programme n’a pas été téléversé

▪ Le programme présente des erreurs et nous allons demander à l’arduino d’envoyer des informations à l’ordinateur sur les étapes qu’il effectue

Si ça ne fonctionne toujours pas

2.6. Dépannage

(57)

2.7. Communication par liaison série

▪ Il existe plusieurs moyens pour faire communiquer des systèmes électroniques entre eux et la carte arduino est équipée d’une liaison série (appelée aussi RS 232) de type full-duplex. Cela signifie que les 2 systèmes connectés peuvent parler et écouter en même temps.

masse (qui sert de référence) émission

réception

▪ La liaison série nécessite 3 fils :

▪ L’échange d’informations est géré par un protocol qui définit le langage utilisé

2. Commande d’une LED

(58)

▪ Lorsque on demande l’envoi d’une information, elle est stockée en mémoire jusqu’à ce qu’elle puisse être envoyée

▪ Lorsque la carte arduino reçoit une information, elle est stockée en mémoire (buffer de réception) jusqu’à ce qu’on l’utilise. Les informations sont stockées dans l’ordre d’arrivée et on ne peut les lire que caractère par caractère.

2.7. Communication par liaison série

2. Commande d’une LED

(59)

Nouvelles fonctions

Serial.begin(X) : définit la vitesse X (en bits par seconde) de transfert des données. Cette fonction doit apparaitre dans le setup du programme. Il existe plusieurs vitesse de transmission des données : 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 250000

serial.print(X) : permet d’envoyer l’information X qui doit être entre   si c’est du texte

serial.println(X) : même action que print mais avec un retour à la ligne à la fin du message

2.7. Communication par liaison série

2. Commande d’une LED

(60)

2. Commande d’une LED

Programme final //LED qui clignote

const int led_rouge=2; //constante de type entier void setup(){ //début du programme

pinMode(led_rouge, OUTPUT); // l'I/O 2 est utilisée comme une sortie Serial.begin(9600); // initialisation de la transmission série

} // fin de définition du début de programme avec les variables void loop() { // écriture de ce que fait le programme

digitalWrite(led_rouge, LOW); // mettre la sortie 2 à l'état bas

Serial.println(" LOW "); //envoi de l’état de la diode à l'ordinateur delay(1000); // ne rien faire pendant 1000 ms = 1s digitalWrite(led_rouge, HIGH); // mettre la sortie 2 à l'état haut

Serial.println(" HIGH "); //envoi de l’état de la diode à l'ordinateur delay(200); //attendre à nouveau

} // indique la fin du programme qui recommencera au début

2.7. Ecriture du programme

(61)

2.8. Déroulement du programme

2. Commande d’une LED

▪ Ouvrir le moniteur série

▪ Vous devriez voir défiler l’état de la sortie 2

▪ La LED orange nommée TX (absente sur la carte Xplained) doit clignoter à

chaque envoi d’information

(62)

3.1. Objectif

3. LED + bouton poussoir

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

relache le bouton

(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

(64)

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

V

7

R 5 V

0 V

(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)

R

int

= 100 M

Arduino

V

7

▪ 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 V

7

s’obtient avec un simple diviseur de tension

V 5 5 R .

R V R

int

7 int 

 

R 5 V

0 V

Détection de l’état du bouton poussoir

(66)

3.2. Montage

5 V

0 V

3. LED + bouton poussoir

▪ Quand on appuie sur le bouton poussoir, on force V

7

à 0 V

R

int

= 100 M

Arduino

V

7

▪ 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

(67)

3.2. Montage

Montage complet avec l’arduino

3. LED + bouton poussoir

5 V 0 V

5 V

(68)

3.2. Montage

Montage complet avec l’arduino

3. LED + bouton poussoir

5 V 0 V

0 V

(69)

3.2. Montage

3. LED + bouton poussoir

Montage complet avec l’arduino

(70)

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

(71)

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

(72)

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

(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

(74)

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

(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

(76)

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 int val=0; // variable globale qui mémorise l’état du bouton void setup(){ //début du setup

pinMode(led_rouge, OUTPUT); // l'I/O 2 est utilisée comme une sortie pinMode(bouton, INPUT); // l'I/O 2 est utilisée comme une sortie digitalWrite(led_rouge, LOW); // allume la LED

delay(2000); // et attendre 2 s } // fin du setup

void loop() { // début de la boucle infinie val=digitalRead(bouton); // lecture de l’état de l’entrée 7 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

(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

(78)

Envoi la valeur de val

const int led_rouge=2;

const int bouton=7;

int val=0;

void setup(){

Serial.begin(9600);

pinMode(led_rouge, OUTPUT);

pinMode(bouton, INPUT);

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

(79)

const int led_rouge=2;

const int bouton=7;

int val=0;

void setup(){

Serial.begin(9600);

pinMode(led_rouge, OUTPUT);

pinMode(bouton, INPUT);

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

(80)

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

const int led_rouge=2;

const int bouton=7;

int val=0;

void setup(){

Serial.begin(9600);

pinMode(led_rouge, OUTPUT);

pinMode(bouton, INPUT);

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

(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

const int led_rouge=2;

const int bouton=7;

int val=0;

void setup(){

Serial.begin(9600);

pinMode(led_rouge, OUTPUT);

pinMode(bouton, INPUT);

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

(82)

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

const int led_rouge=2;

const int bouton=7;

int val=0;

void setup(){

Serial.begin(9600);

pinMode(led_rouge, OUTPUT);

pinMode(bouton, INPUT);

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

(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 1

const int led_rouge=2;

const int bouton=7;

int val=0;

void setup(){

Serial.begin(9600);

pinMode(led_rouge, OUTPUT);

pinMode(bouton, INPUT);

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

(84)

const int led_rouge=2;

const int bouton=7;

int val=0;

void setup(){

Serial.begin(9600);

pinMode(led_rouge, OUTPUT);

pinMode(bouton, INPUT);

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

1 HIGH

1 HIGH

1 HIGH

0 LOW

0 LOW

0 LOW

0 LOW

1 HIGH

1 HIGH

(85)

4.1. Objectif

4. LED + bouton poussoir + mémoire

Ajouter une mémorisation au chapitre précédent : on appuie sur le bouton et

la LED s’allume et elle reste allumée quand on relâche le bouton. Même

raisonnement pour éteindre la LED.

(86)

▪ Nous allons créer une fonction qui permet de détecter quand l’utilisateur vient d’appuyer sur le bouton : détection du passage 5 V à 0 V.

t

I/O n °7

0 5

▪ Pour cela on conserve en mémoire l’état dans lequel était le bouton poussoir dans la boucle d’avant

val=1 ancien_val=1

4.2. Détection d’un front descendant

4. LED + bouton poussoir + mémoire

(87)

t

I/O n °7

0 5

▪ Pour cela on conserve en mémoire l’état dans lequel était le bouton poussoir dans la boucle d’avant

val=1 ancien_val=1

▪ Nous allons créer une fonction qui permet de détecter quand l’utilisateur vient d’appuyer sur le bouton : détection du passage 5 V à 0 V.

4.2. Détection d’un front descendant

4. LED + bouton poussoir + mémoire

(88)

t

I/O n °7

0 5

▪ Pour cela on conserve en mémoire l’état dans lequel était le bouton poussoir dans la boucle d’avant

Changement d’état

val=0 ancien_val=1

▪ Nous allons créer une fonction qui permet de détecter quand l’utilisateur vient d’appuyer sur le bouton : détection du passage 5 V à 0 V.

4.2. Détection d’un front descendant

4. LED + bouton poussoir + mémoire

(89)

t

I/O n °7

0 5

▪ Pour cela on conserve en mémoire l’état dans lequel était le bouton poussoir dans la boucle d’avant

Pas de changement d’état

val=0 ancien_val=0

▪ Nous allons créer une fonction qui permet de détecter quand l’utilisateur vient d’appuyer sur le bouton : détection du passage 5 V à 0 V.

4.2. Détection d’un front descendant

4. LED + bouton poussoir + mémoire

(90)

t

I/O n °7

0 5

▪ Pour cela on conserve en mémoire l’état dans lequel était le bouton poussoir dans la boucle d’avant

On relâche le bouton mais la transition 0 vers 1 ne changement pas l’état de la LED

val=1 ancien_val=0

▪ Nous allons créer une fonction qui permet de détecter quand l’utilisateur vient d’appuyer sur le bouton : détection du passage 5 V à 0 V.

4.2. Détection d’un front descendant

4. LED + bouton poussoir + mémoire

(91)

t

I/O n °7

0 5

▪ Pour cela on conserve en mémoire l’état dans lequel était le bouton poussoir dans la boucle d’avant

val=1 ancien_val=1

Pas de changement d’état

▪ Nous allons créer une fonction qui permet de détecter quand l’utilisateur vient d’appuyer sur le bouton : détection du passage 5 V à 0 V.

4.2. Détection d’un front descendant

4. LED + bouton poussoir + mémoire

(92)

▪ (X==Y) && (Z==W) : donne la valeur HIGH si les strictes égalités sont vérifiées sinon cela donne la valeur LOW. C’est la fonction ET.

4.3. Les nouvelles fonctions

4. LED + bouton poussoir + mémoire

(93)

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

// changement de la valeur en mémoire // ancienne valeur

de l’état // entrée n°7 // sortie n°2

4. LED + bouton poussoir + mémoire

Algorithme

4.4. Ecriture du programme

val=1 etat=1

val=?

ancien_val=?

0 1

autre etat=1etat ancien_val=1

ancien_val =val

LED allumée LED éteinte

etat=? 0

1

(94)

val=1 etat=1

val=?

ancien_val=?

0 1

autre etat=1etat ancien_val=1

ancien_val =val

LED allumée LED éteinte

etat=? 0 1

4. LED + bouton poussoir + mémoire

Algorithme

4.4. Ecriture du programme

val=1

etat=1

ancien_val=1

(95)

val=1 etat=1

val=?

ancien_val=?

0 1

autre etat=1etat ancien_val=1

ancien_val =val

LED allumée LED éteinte

etat=? 0 1

4. LED + bouton poussoir + mémoire

Algorithme

4.4. Ecriture du programme

val=0

etat=1

ancien_val=1

(96)

val=1 etat=1

val=?

ancien_val=?

0 1

autre etat=1etat ancien_val=1

ancien_val =val

LED allumée LED éteinte

etat=? 0 1

4. LED + bouton poussoir + mémoire

Algorithme

4.4. Ecriture du programme

val=0

etat=0

ancien_val=1

(97)

val=1 etat=1

val=?

ancien_val=?

0 1

autre etat=1etat ancien_val=1

ancien_val =val

LED allumée LED éteinte

etat=? 0 1

4. LED + bouton poussoir + mémoire

Algorithme

4.4. Ecriture du programme

val=0

etat=0

ancien_val=0

(98)

val=1 etat=1

val=?

ancien_val=?

0 1

autre etat=1etat ancien_val=1

ancien_val =val

LED allumée LED éteinte

etat=? 0 1

4. LED + bouton poussoir + mémoire

Algorithme

4.4. Ecriture du programme

val=0

etat=0

ancien_val=0

(99)

val=1 etat=1

val=?

ancien_val=?

0 1

autre etat=1etat ancien_val=1

ancien_val =val

LED allumée LED éteinte

etat=? 0 1

4. LED + bouton poussoir + mémoire

Algorithme

4.4. Ecriture du programme

val=0

etat=0

ancien_val=0

(100)

//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

int val=1; // déclaration d’une variable globale qui mémorise l’état du bouton int etat=1;

int ancien_val=1;

void setup(){

pinMode(led_rouge, OUTPUT); // l'I/O 2 est utilisée comme une sortie pinMode(bouton, INPUT); // l'I/O 2 est utilisée comme une sortie digitalWrite(led_rouge, LOW); // allume la LED durant 1 s

delay(1000);

digitalWrite(led_rouge, HIGH); // allume la LED durant 1 s }

void loop() {

val=digitalRead(bouton); // lecture de l’état de l’entrée 7 if ((val==LOW)&&(ancien_val==HIGH)) {etat=1-etat;}

ancien_val=val;

if (etat==HIGH) {digitalWrite(led_rouge, HIGH);} // éteint la LED

4. LED + bouton poussoir + mémoire

Code

4.4. Ecriture du programme

(101)

Qu’est qu’un rebond ?

▪ Un bouton poussoir ne passe pas « proprement » de l’état ouvert à l’état fermé.

▪ En effet, lorsque l’on appuie sur le bouton, les fils en métal que l’on met en contact vont rebondir l’un sur l’autre avant de se stabiliser. On obtient ainsi plusieurs fois la transition ouvert/fermé.

4. LED + bouton poussoir + mémoire

4.5. Problème de rebond du bouton poussoir

t

I/O n °7

0

5

(102)

Impact sur l’état de la LED

▪ Il existe 2 méthodes pour éliminer l’influence de ces rebonds : une méthode logicielle et une méthode matérielle.

▪ L’arduino fonctionne à 16 MHz ce qui signifie que le programme peut effectuer plusieurs fois la partie void loop() durant les rebonds et donc faire comme si on avait appuyé plusieurs fois sur le bouton

4. LED + bouton poussoir + mémoire

4.5. Problème de rebond du bouton poussoir

▪ En conséquence, l’état allumé ou éteint de la LED est complètement

aléatoire par rapport à l’appui sur le bouton

(103)

Solution logicielle

▪ Après avoir détecté la « première » transition du bouton poussoir, on peut demander au programme de faire une pause pour permettre au bouton de se stabiliser

t

I/O n °7

0 5

Mise en pause du programme

▪ Un delay de quelques milli-secondes est suffisant

4. LED + bouton poussoir + mémoire

4.5. Problème de rebond du bouton poussoir

if ((val==LOW)&&(ancien_val==HIGH)) { etat=1etat;

delay(20);}

(104)

Solution matérielle

▪ On place un condensateur en parallèle avec le bouton

5 V

Arduino

V

7

R 5 V

C t

I/O n °7

0 5

▪ Initialement le condensateur est chargé à la tension 5 V

4. LED + bouton poussoir + mémoire

4.5. Problème de rebond du bouton poussoir

(105)

▪ On place un condensateur en parallèle avec le bouton

5 V

Arduino

V

7

R 0 V

C t

I/O n °7

0 5

▪ Initialement le condensateur est chargé à la tension 5 V

▪ Lorsque l’on appuie sur le bouton, il se décharge instantanément et la tension à ses bornes devient nulle

Solution matérielle

4. LED + bouton poussoir + mémoire

4.5. Problème de rebond du bouton poussoir

(106)

▪ Lors du premier rebond, le condensateur n’est plus court-circuité et il va se charger via la résistance de 10 k donc avec une constante de temps RC

5 V

Arduino

V

7

R

C t

I/O n °7

0 5

▪ Cette constante de temps doit être très longue par rapport au temps des rebond

▪ Ainsi la tension V

7

reste très proche de 0 V et elle est assimilée par l’entrée à un état LOW

HIGH RC LOW

Solution matérielle

4. LED + bouton poussoir + mémoire

4.5. Problème de rebond du bouton poussoir

(107)

▪ Si on choisit un condensateur de 10 nF, la constante de temps a pour valeur RC = 0.1 ms

5 V

Arduino

V

7

R

C t

I/O n °7

0 5

HIGH RC LOW

Solution matérielle

4. LED + bouton poussoir + mémoire

4.5. Problème de rebond du bouton poussoir

(108)

5.1. Présentation des entrées analogiques

▪ L’arduino possède 6 entrées analogiques numérotées A0 à A5. Elles sont numérotées PC0 à PC5 sur la carte Xplained Mini.

5. Entrées analogiques

▪ Le fonctionnement de l’arduino étant numérique, les entrées vont convertir le signal analogique en signal numérique

▪ Il est possible de modifier la tension de référence de la conversion en appliquant sa nouvelle valeur sur l’entrée AREF

AREF

▪ L’impédance d’entrée des entrées analogiques est de 100 M

(109)

5.2. Conversion analogique/digitale

▪ Il existe plusieurs techniques plus ou moins rapides pour convertir un signal analogique en signal numérique

5. Entrées analogiques

▪ Il y a par exemple les convertisseurs à simple rampe, Sigma Delta et Flash

Echantillonnage

Méthode de conversion

0 t 5

▪ Périodiquement (notion de fréquence d’échantillonnage, F

P

) la tension est mesurée et convertie en mots binaires

0011 0111 0110

0001

1/F

(110)

5.3. Cas de l’arduino

5. Entrées analogiques

▪ La fréquence d’échantillonnage est de 10 kHz donc la tension que l’on doit convertir ne doit pas varier plus vite que cela.

▪ La conversion se fait sur 10 bits ce qui signifie qu’il y a 1024 combinaisons pour coder la tension qui doit être comprise entre 0 et 5 V (sauf si on change la référence).

Données clés

(111)

Plage de variation qui ne change pas la valeur numérisée

5.3. Cas de l’arduino

5. Entrées analogiques

Visualisation de la quantification

Num

V (V) 0

1 q 0

▪ Le minimum de variation (appelé quantum et noté « q ») de tension que l’on

peut détecter est : 4 . 89 mV

1024 q 5

V   

 q = 4.89 mV

t (s) 0 0

q

V (V)

(112)

Plage de variation qui ne change pas la valeur numérisée

5.3. Cas de l’arduino

5. Entrées analogiques

Visualisation de la quantification

Num

0 1 q 0

▪ Le minimum de variation (appelé quantum et noté « q ») de tension que l’on

peut détecter est : 4 . 89 mV

1024 q 5

V   

 q = 4.89 mV

0 0 q

V (V)

(113)

Plage de variation qui ne change pas la valeur numérisée

5.3. Cas de l’arduino

5. Entrées analogiques

Visualisation de la quantification

Num

V (V) 0

1 q 0

▪ Le minimum de variation (appelé quantum et noté « q ») de tension que l’on

peut détecter est : 4 . 89 mV

1024 q 5

V   

t (s) 0 0

q

V (V)

q = 4.89 mV

(114)

Plage de variation qui ne change pas la valeur numérisée

5.3. Cas de l’arduino

5. Entrées analogiques

Visualisation de la quantification

Num

1 q 0

▪ Le minimum de variation (appelé quantum et noté « q ») de tension que l’on

peut détecter est : 4 . 89 mV

1024 q 5

V   

0 0

0 q

V (V)

q = 4.89 mV

(115)

5.3. Cas de l’arduino

5. Entrées analogiques

Visualisation de la quantification

Num

V (V) 1 q

0

▪ Le minimum de variation (appelé quantum et noté « q ») de tension que l’on

peut détecter est : 4 . 89 mV

1024 q 5

V   

t (s) 0 0

0 q 2q

2 2q

V (V)

2q = 9.77 mV

(116)

5.3. Cas de l’arduino

5. Entrées analogiques

Visualisation de la quantification

Num

1 q 0

▪ Le minimum de variation (appelé quantum et noté « q ») de tension que l’on

peut détecter est : 4 . 89 mV

1024 q 5

V   

0 0

V (V)

0 2q

2 2q

3

3q

3q

q

3q = 14.6 mV

(117)

5.3. Cas de l’arduino

5. Entrées analogiques

Visualisation de la quantification

Num

V (V) 1 q

0

▪ Le minimum de variation (appelé quantum et noté « q ») de tension que l’on

peut détecter est : 4 . 89 mV

1024 q 5

V   

t (s) 0 0

V (V)

0 2q

2 2q

3

3q

3q

q 1023

1022

5q 5

5

5q

(118)

5.3. Cas de l’arduino

5. Entrées analogiques

Visualisation de la quantification

Num

1 q

0 0 0

V (V)

0 2q

2 2q

3

3q

3q

q 1023

1022

5q 5

5 5q

▪ Pour une tension de 3 V, on obtient le nombre suivant : 3 V  . 3 614

5

1024 

(119)

▪ Remarque : il n’est pas nécessaire de déclarer l’utilisation d’une entrée analogique dans la partie setup. En effet et contrairement aux I/O, une entrée analogique ne peut pas fonctionner comme une sortie et il n’y a pas

« d’interrupteur » à faire basculer.

5.4. Les nouvelles fonctions

analogRead(X) : lit la tension sur l’entrée X (X allant de 0 à 5) et la convertit en un nombre compris entre 0 et 1023

▪ Le nombre obtenu est un entier (INT) mais on peut le sauver en tant que nombre a virgule en ayant au préalable défini une variable flottante :

float tension_num=0; tension_num=analogRead(0);

▪ Il est possible de faire des calculs avec la fonction analogRead mais au moins un des nombres utilisés doit comporter une virgule

float tension=0; tension=analogRead(0)/204.8;

int tension_num=0; tension_num=analogRead(0);

5. Entrées analogiques

Références

Documents relatifs

Pascal MASSON Electronique avec Arduino (version projection V34) 1 École Polytechnique Universitaire de Nice Sophia-Antipolis.. Cycle

[r]

Quel est le coefficient de proportionnalité qui exprime la remise en fonction du montant des achats?. (Montant des achats) ×

En général, la notation |.| n'a pour utilité que de simplier la dénition d'une fonction. Fonction

(a) du point C tel que ABC soit un triangle rectangle isocèle direct en A.. (b) du point D tel que BCD soit un triangle rectangle isocèle direct

Tant que x≥.... 2) Complétez et/ou modifiez cet algorithme afin que son exécution simule 10000 tentatives de traversée et renvoie la fréquence de traversées réussies. 3) En

Il suffit donc de calculer le produit t AA et de chercher sous quelle condition n´ ecessaire et suffisante on retrouve la matrice identit´ e Id 3.. On commence par chercher

On chercher à factoriser le numérateur et le dénominateur.. La valeur interdite est