Telechargé par Aziz Rachid

COURS Lab VIEW 12

publicité
!
Texte
Son
Images
mesures
Traitement
Informatique
Données
Résultats
Entrées
Sorties
Texte
Son
Images
mesures
"
#
!
Texte
=> Fichier source
COMPILATEUR
Écrire en respectant la syntaxe
d'un langage, la suite des
tâches devant être exécutées
par l'ordinateur, de façon
logique et structurée
Langage de
programmation
Logiciel
installé dans
l'ordinateur
$
Application
autonome
Fichier
exécutable
%
Langage Evolués :
C, Pascal, Fortran, Basic
Visual Basic, LabVIEW
Assembleur
Compilation = Traduction
Langage Machine
Le seul compréhensible
par l'ordinateur
$
&
$
" '
(
#
"
$
+
(
"
)
*
!
,
)
-
"
,
+
!
%
A lg o r it h m e
S u it e d 'in s t r u c t io n s q u i u n e
f o is e x é c u t é e s c o r r e c t e m e n t
c o n d u it à u n r é s u lt a t d o n n é
A lg o r ith m iq u e
'
S c ie n c e q u i é t u d ie la
s t r u c t u r e lo g iq u e d e s
p ro g ra m m e s
%
Pascal
C
Fortran
Algorithme
LabVIEW
(
-
Visual Basic
,
/0
/
/1
/2
Basic
.
(
%
)
3456!
'
'
-
)
, '
,
!
!
)
1&
)
7 1 8& , 8
9!3
$
'
3446!
:!
!
-
, '
"
;
%
)
%
La face avant est
l’interface avec
l’utilisateur.
Le diagramme
correspond aux circuits
internes de l’appareil et
constitue le cœur du
programme
%
"#
$
' )
-
)
'
)
<
'
)
'
$
' )
<
<
<
'
%
'
'
-
1
")
$
=
=
!
"
#
>=
,
=
'
*
)
Variables
d’entrées
%
'
0
7 )
1
'
>
<
$
=!
!
Variables de
sortie
Programme
?
!
%"#
)
entrées
sorties
o
o
o
o 0
o
>
-
'
,
@
%
!
o
'
o 0
o
/ o
>
<
=
@
;
A
$)
)
B!
*
A
B
!
$!
!
!
FACE ARRIERE : DIAGRAMME
1ère variable
FACE AVANT
2ème variable
'
,
o
o
o
o
$
$ '
%
*
<
"
>=
!
C *
?
'
<
, '
:?
'
=!
La palette d'outils (Tool Palette)
Pour agir sur les
commandes
Bouger
l'ensemble
(diag ou FA)
Texte
Pipette (copier
une couleur)
Colorer un objet
Pour câbler
Placer un point d'arrêt Poser une sonde
(probe)
'
)
D
<
=!
*
"
A
B '
)
,
*
;
'
E
!
"
%
!
!
)
0
)
!
)
"
)
)
' $
!
LA MEMOIRE :
Empilement
d'octets
Un contenu
(valeur) variable
Une adresse fixe
'
)
o
o
'
)
)
'
"
%
%
#
)
%
)
!
PALETTE DE COMMANDES
Les commandes (sauf tableaux)
Palette complète : il suffit de la
parcourir pour tout comprendre
(ou presque)
#
PALETTE DE COMMANDES
Les indicateurs (sauf tableaux)
Palette complète : On retrouve
les commandes et les
indicateurs
)
&
" '
)
'
@ "
'
-
!
)
!
$
&
!
"#
!
'( ) *+ +, 'CODAGE SUR UN OCTET
Sans bit de signe
Valeurs décimales possibles
de 00000000 à 11111111
de
0
à
28 -1 = 255
Type unsigned char (langage C) Type U8 en LabVIEW
Avec bit de signe
positif
Type char (langage C)
Type I8 en LabVIEW
de 00000000 à 01111111
de
0
27 -1 = 127
à
de 11111111 à 10000000
f
négati
Complément à deux
. '// , -
,)
0
1* ,
', ( ,*
de
-1
à
- 27 = -128
-
'( ) *+ % '-
*
CO DAG E S UR DE UX O CTE TS
S ans b i t d e si gne
V aleurs décim ales possibles
de
0
à
2 16 -1 = 65535
Type unsigned int (langage C ) Type U 16 en LabV IE W
A vec b i t d e si gne
p o s it i
f
de
0
à
2 15 -1 = 32767
de
-1
à
- 2 15 = -32768
Type int (langage C)
Type I16 en LabV IE W
n ég at
Com plém ent à deux
%"#
!
if
$
Un nombre à virgule flottante peut toujours s'écrire :
+ 0,662 * 2 - 26
Signe : 1 bit
Mantisse : 23 bits
Exposant :8 bits
Valeurs extrêmes possibles :
Nombre nul : 0
Nombre positifs de : 1,21 10 -38 à 3,40 10 38
Nombres négatifs de : - 1,21 10 -38 à - 3,40 10 38
Type : Float en C, Type SGL en LabVIEW
SIMPLE PRECISION : 4 octets
1 bit
8 bits
23 bits
DOUBLE PRECISION : 8 octets
1 bit
11 bits
52 bits
PRECISION ETENDUE : 10 octets
1 bit
15 bits
64 bits
2"#
!
!
Vraie : True
Variable Booléenne
Fausse : False
Codage sur 1 seul bit
N'existe pas dans tous les langages :
OK en labVIEW mais pas en C !
$
$$
$
'
%
2
$
)
'
"
'
3
OUI
NO
TEST
Instructions 1
Instructions 2
Suite
80 F
%
- &
-
-
$
3
!
;
I )
' )
=
*
*
E
'
#
%
J
H
*
)
G G!
<
'
!
)
J" K" L" M" N" O!
<
=!
'
H)
%
G G!
$ %< J = 1< J =
%
1"
" G G 1" G G
"
$
"
>
!
4
G
0
0
0
) !
;
A '
A '
G1
B 4 L G J 3H
B GJ4
P
1
G M 3H
#
!
;
Q0G Q 088 %
B
%
G
-
A '
- !
Début
Saisir N
OUI
NO
N M 3H
OUI
C = « c’est bien »
C = « c’est insuffisant »
NJ4
NO
C = « c’est assez bien »
Fin
)
*
!
!
' )
' E
E
' $
!
!
)
!
'
)
!
, '
0
;
!
G G
C0 R
)
'
;
, '
!
"
'
!
Cliquer pour visualiser le diagramme réalisé si
condition fausse
Diagramme
délimité, exécuté si
condition vraie
Condition à écrire
R 8&
%
Un seul diag
visible à la fois
,
.
La transmission des
données se fait via un
« tunnel » d'entrée ou de
sortie.
La condition :
met en jeux
un opérateur
de
comparaison
Les tunnels de sortie
doivent être reliés dans les deux
diagrammes conditionnels
Le résultat booléen de la
condition est connecté au
sélecteur « ? »
Le diagramme
caché
"
La comparaison peut être simple : elle met en oeuvre un opérateur de
comparaison (>, <, etc ... ou d'égalité) comme dans l'exemple précédent.
Elle peut être plus complexe et mettre en oeuvre également des opérateurs
logiques.
Les structures
conditionnelles
peuvent
être
imbriquées
Diagramme caché
#
5
!
$
'
'
!
A
7
S!
,
'
,
,
"
!
0
C0 R
!
&
'
C0 R
!
Instructions
à
répéter
TEST
NO
OUI
On peut permuter
dans LabVIEW
Suite
$
%
!
)
-
!
I )
' )
=
*
'
J" K" L" M" N" O!
<
'
)
%
H)
%
G G!
*
#
% 1"
J
" G G 1" G G
$ %< J = 1< J =
"
$
"
>
!
80 F
%
,
'
!
,
!
%
'
,
!
4
"#
!
0
'
G1
2&
1
%
/
)
%
2&! 0
!
/
!
%
!
% 2&
Q0G Q 088 %
Début
L = FAUX
!'+-0
(
,
BP
appuyé
L = VRAI
Fin
!
Diagramme répété
Terminal conditionnel
Terminal d'itération :
compte les répétitions
NON
On ne fait rien
tant que l’on
n’appuie pas
sur le BP !
$
%
,
Pseudo :code correspondant :
Exercice
Variable N type entier
Dessiner
Variable l’organigramme
compt type entier
correspondant
à ce diagramme
N 100
Faire
compt
N-1
afficher compt
attendre 1s
tant que N >0
Fin
Attente (configurée à 1s)
2 possibilités
6.
!
$
$
'
+, ,'/
1(1
/ ,1 (
7' *8
0)
"
;
, ' )
'
!
&
'
)
-
)
"
T , G/3
)
'
- G
G
!
!
-
!
i=0
Ces instructions sont
répétées N fois pour
i variant de 0 à N-1
Instructions
à
répéter
i<N
Suite
i= i+1
OUI
Incrémente le
compteur
d’itérations
. $$
'
NT
'
'
TN !
'
%
)
'
7
*
'
N
!
T,
)
)
@
D 3
!
!
'
!
,TN3UUUU
'
@
%
3!
)
)
)
,
!
&
)
"
$
%
Pour i = 0 à N-1
Instructions à répéter
Suite
*
"
)
!
VI - EXEMPLE
$
6
6@
', 6T"
!
G1
1
- &
-
%
'
"
!
Q0G Q 088
Début
Pour i = 0 à 10
i varie de 0 à 10
Il y aura donc 11
itérations.
S=5*i
Attendre 2s
Fin
!
!
$
"
!
7
%
! 0
80 F
%
Avec 10 tours de boucle, i évoluera de 0 à 9
Diagramme répété
Nombre de tours de
boucle
Terminal d'itération :
compte les répétitions
!
Modifications par l'utilisateur
prises en compte
Valeur transmise au premier
tour de boucle.
Toute intervention de l'utilisateur
devient inutile
Valeur obtenue
au dernier tour
de boucle
"
9
!
4
$
Un tableau permet de regrouper plusieurs variables numériques de même type sous une même
appellation.
Les différents éléments du tableau (array) sont alors repérés par un indice (index).
Le nombre N d’éléments du tableau constitue sa taille (array size)
Exemple : Tableau nommé Tab de 3 entiers
type U8
Chaque élément du
tableau est repéré par
un indice i allant de 0
à N-1
LA MEMOIRE :
Empilement
d'octets
Tab[0]
Tab[1]
Tab[2]
Les trois éléments se
retrouvent à trois adresses
différentes qui se suivent
II – TABLEAUX DANS LabVIEW
Clic droit sur la
face avant
Tableau vide
Indice du 1er
élément visible
Tableau de variables
numériques
Quand
on
dépose
le
tableau sur la
face avant, il
est vide.
Il
convient
donc de le
remplir
à
l’aide du type
de
variable
choisi :
tableau
de
variables
numériques,
tableau
de
booléens,
tableaux
de
chaînes
de
caractères
etc…
#
Tableau vide
Tableau de variables
numériques
!
4
"
$
%
Les fils de
liaisons
des
données
tableaux sont
en traits épais
de la couleur
du type de la
variable : ici,
on
a
des
tableaux
de
variables
numériques à
virgule
flottante, les
connexions
sont donc de
couleur
orange. Indice
et taille du
tableau
sont
des
entiers
donc couleur
bleue.
$
4
"# , , 1
Indexation : Au ième tour de boucle,
le ième élément du tableau
est transmis par le tunnel d'entrée.
Lors du câblage, l'indexation se
réalise automatiquement.
Tous les éléments du tableau
sont multipliés par i
à chaque tour de boucle
Pas d'indexation : le tableau est transmis
à chaque tour de boucle dans son intégralité
par le tunnel d'entrée.
%"# , *'
Pas d'indexation :
la dernière valeur
calculée au dernier tour
de boucle est transmise
via le tunnel de sortie
indexation : un tableau des valeurs
calculées à chaque tour de boucle
est transmis via le tunnel de sortie
quand la boucle est terminée
#Page 124
:.
!
"#
N+1 points régulièrement espacés
ième point
i+1 ème point
a
&
%
$
&
(
0
!
%
% $ N$
, (
%
/3
$N
, +, *+
/1 >+ (
*;<
b
=#
D
D !
/ ?@ ;
/
(
*', > ;
*
%"#
N+1 points régulièrement espacés
ième point
i+1 ème point
log a
&
%
$
&
0
(
%
, (
$ N
D !
!
%
%
$N
N
N<
$
D
/3
V
< ? =3?G
=?GN
D
< ? =3?G N
D
< ? = ?G
N
7
log b
W ! < ? = ?G X
% $ N ! < ? = ?G JNK $ N ! < ? = /3?G ! < ? =3?G
$ /3 ! < ? =3?G
$ N
, +, *+
)1'/1 >+ (
/
/ ?@ ;
$ N ! W< ? =3?G X
(
*', > ; < # = #
$$
Graphes
déroulants
!'+-0
Graphes
0
Graphes
XY
!'+-0 $'
!'+-0 $'
Terminal
graphe
déroulant équivalent à
un indicateur numérique
Terminal
graphe
équivalent à un tableau
Terminal graphe
reçoit 2 tableaux
Graphe dans la boucle
Graphe
boucle
Graphe
boucle
hors
de
la
!
hors
de
la
!
"
"
#
#
%
-
$
% &" '" ("
)
XY
*
.
F
"
'
! 7
!
'
/
-
, ( * '* ( A
4/ ? 4/ ,
(+ ,'/
( ',
$
'
"
, ( * '* ( A
.
1 '( / , / 0
<7 1>+ ,- / ? =
8
%
UUU
∆x = [ Xmax – Xmin ] / (N-1)
∆1 N 1 N 1?G
%
;
∆x = [ Xmax/Xmin] 1/ (N-1)
%
1 JJ 1
Boucle While Graphe
déroulant l’intérieur.
Boucle cadencée par
Te. Déroulement en
temps réel si Te pas
trop faible (Pb de
windows)
∆1 N 1 N Y1?G
C KK C
)
%
+
∆1 N 1?G
YG
, B 00 , C - >+
DD E
$NR
%
D ∆$
N ∆1
%
$NR
! <∆$= ?G
Boucle For, Graphe
ou Graphe XY à
l’extérieur
Boucle For
Graphe XY à
l’extérieur
Gradué en temps :
simulation
temporelle, pas de
temps réel
Début
"#
Saisir Te
i=0
Déroulement en
temps ≈ réel
Calculer y(iTe)
Afficher y(iTe)
i = i+1
Attente Te
OUI
STOP = Vrai
NON
Fin
%"#
2"#
4&
Début
Saisir Xmax,
Xmin, N
Pour i = 0 à N
Début
Début
Saisir T, N, k
Saisir xmin, xmax et N
Pour i = 0 à N
Pour i = 0 à N
∆x = (Xmax – Xmin) / N
Calculer yi (i∆x)
Te = kT/N
Calculer yi (iTe)
∆x = (Xmax – Xmin) / N
xi = i ∆x
Calculer yi (xi)
Afficher yi
Afficher
yi(iTe)
Fin
Afficher yi (xi)
Fin
Fin
!
F
!
A
B 7' /
Le rôle du graphe déroulant : Waveform Chart est d'afficher
l'évolution temporelle d'une donnée variable dans le temps.
Données
perdues
historique
Partie visible
A chaque instant le graphe ne reçoit qu'une donnée à la fois :
Ce n'est pas un tableau de valeurs.
Par programmation, il faut donc répéter l'envoi
des données au graphe, le terminal graphe
doit donc être dans une boucle while.
? / 0 ( ,*
A
Génération d'un
nombre aléatoire
Le Graphe déroulant est un indicateur.
Par défaut son type est DBL.
Ce n'est pas un tableau de valeur (trait fin):
Cet indicateur ne reçoit qu'une valeur à la fois,
il doit être dans la boucle.
-
)
*
@
%
'
@
)
LE FORMATAGE DU GRAPHE
A
B 7' /
Le rôle du graphe est de représenter graphiquement un tableau de
données.
0
1
2
3
4
5
6
7
donnée
5
10
15
20
25
30
35
40
Le graphe reçoit simultanément
l'ensemble des données
sous forme d'un tableau de valeurs.
Les données sont généralement
calculées dans une boucle
Par programmation, il ne faut envoyer
les données au graphe qu'une seule fois,
le terminal graphe doit donc être hors de la boucle.
Le tableau peut être obtenu par indexation
du tunnel de sortie de la boucle
"
!
? / 0 ( ,*
A
L'indice du point
(n° ligne du tableau)
Le Graphe est un indicateur
de type tableau.
Par défaut son type est DBL.
Cet indicateur reçoit toutes les valeurs à la fois,
il doit être hors de la boucle.
4&
Le rôle du graphe XY est de représenter graphiquement un tableau
de données Y en fonction d'un tableau de données X
Donnée X Donnée Y
Le graphe reçoit simultanément
5
0,1
l'ensemble des données
10
0,2
sous forme de 2 tableaux de valeurs.
15
0,3
20
0,4
25
0,5
Les données sont généralement
30
0,6
calculées dans une boucle
35
0,7
40
0,8
Par programmation, il ne faut envoyer
les données au graphe qu'une seule fois,
le terminal graphe XY doit donc être hors de la boucle.
Les 2 tableaux sont obtenus directement
au niveau des 2 tunnels de sortie de la boucle.
Ils sont assemblés pour former un cluster.
#
0*
', ( ,*
A
Connecter le tableau
des abscisses ici
Connecter le tableau
des ordonnées ici
? / 0 ( ,*
A
Tracé de courbe,
échelle linéaire :
xi = xd + i * (xf-xd)/N
apparaît
automatiquement
On dispose ici
d'un cluster
(assemblage)
de 2 tableaux.
$
G
H
4
EXEMPLE : Programmer n!
On sait que n! = (n-1)! . n
Pour calculer n!, il faut avoir d'abord calculé (n-1)!
Pour calculer (n-1)!, il faut avoir d'abord calculé (n-2) !
Pour calculer (n-2)!, il faut avoir calculé (n-3)!
Etc ....
Structure itérative
boucle for
Variable facto type entier
Variable i type entier
facto
1
Pour i = 1 à N faire
facto
facto.i
i
i+1
afficher facto
fin
A la ième itération,
on utilise le résultat
calculé à l'itération
précédente
En Labview cela se fait
grâce au registre à décalage
On utilise des registres à décalage dans les boucles For et dans les
boucles While pour transmettre des valeurs d'une itération à l'itération
suivante.
Au ième tour de boucle, la valeur
calculée est fonction
de la valeur calculée au tour précédent
Calcul
i = N-1
Calcul
i=N
Calcul
i = N+1
Exemple : factorielle n avec registre à décalage :
Factorielle n
Valeurs au dernier tour de boucle
La valeur calculée à la
dernière itération sort par
le tunnel du registre
Clic droit sur le bord de la boucle
III – DECALAGES MULTIPLES
1°/ EXEMPLE
$
%
,@
#
8 N<
8
D
Z
/3
-
D
VH
= ?Z
On répète la mesure périodiquement => boucle while
Pour calculer Mi, on a besoin des valeurs mesurées dans les deux
itérations précédentes.
Acquisition
Calcul Affichage
Acquisition
i = N-1
i=N
Calcul Affichage
Acquisition
Calcul
Affichage
i = N+1
%
La mesure est simulée
par la génération d'un
nombre aléatoire
Tirer avec la
souris pour
disposer de la
donnée
transmise par
la i-2ème
itération
Affichage sur un
graphe déroulant de
la moyenne des trois
derniers
nombres
aléatoires générés
mi
mi-1
mi-2
Dans une boucle, si on retourne
la valeur calculée sur l'entrée
d'un opérateur, il apparaît un
noeud
de
rétroaction,
fonctionnant comme le registre à
décalage.
Noeud de rétroaction
Initialisation du noeud
de rétroaction pour
le 1er tour de boucle
&
,
'
"
I
;
!
@
Langage classique :
Langage LabVIEW :
Flot d'instructions
Flot de données
La structure séquence
permet de reprendre le
contrôle de l’ordre
d’exécution
du
programme
On ne maîtrise pas
l'ordre d'exécution
des « instructions »
Les instructions écrites
s'exécutent séquentiellement
La structure séquence dans LabVIEW :
La structure séquence se présente comme
une succession d'étapes
semblable à la pellicule d'un film
Dans chaque étape (frame) : un diagramme.
Les étapes successives sont exécutées dans l'ordre.
Étape 1
diag 1
Étape 2
diag 2
Étape 3
diag 3
Etc ...
Comme pour la structure condition, un seul diagramme n'est visible.
Comme pour une boucle, on peut passer des valeurs d'une étape à
l'autre.
)
)
*
<
)
,
=
"
E
' $
!
!
@
!
!
4
Etape 0 : Acquisition du temps
Génération du nombre aléatoire
tant qu'il est différent du nombre à atteindre
Etape 1 : Acquisition du temps
Calcul et affichage de la durée
$
Cette structure est souvent utilisée
en informatique d'instrumentation
Étape 1
Étape 2
Configuration
Acquisition
carte d'acquisition Sortie Commande
Étape 3
RAZ carte daq
Cette structure peut également être utilisée également pour
commander un système séquentiel (feux de carrefour)
)
'
'
, '
'
#
!
Par contre dans une séquence empilée, il faut utiliser variable locale de séquence : clic droit sur le
bord de la séquence. On dispose alors d’une flèche entrante distribuant la donnée dans les autres
étapes de la séquence.
"
#
@
!
&
)
<
!
)
)
"
7
' $
/
!
="
'
+
,
"
)
)
<)
)
"
,
*
!
'
=
;
<3TD =[ !
$
7
' $
"
)
!
"
33
)
3
*!
A
G
'
"
!
,
' E
'
)
/
!
!
)
!
*
)
" '
'
@
'
)
'
!
! &
, )
"
)
'
,
, '
'
' E !
"
!
"
' E
,
%
' E
!
;
*
"
'
/
,
' E
"
!
!
)
)
, '
0
7
!
%
"
%
Sélectionner cette case
de la palette de fonction
;
)
' E
!<
,
)
!
*
/
'
=!
!
,"
4
%
I
<
8
H)
0
) !
% 3N D " HN V " ZN [
.
4
'
#
!
"
"
%
4
5" 5"
!<
' $
" @
$-
/
)
)
3^?
'
1 0*
Q N HT
0
E
)
)
$ *
)
'
5" 5" 3\" 3\!
$ *
]
D !
%
N ."9 YΩ"
Hπ =H = X
)
W 3?√<3 D <
Q
"
!
N 3T C"
≈ 3TTT _P!
'
8*
8*
)
3H=
', ( +, - 0-+0
2 '
Z^?
!<
3\" 3\
3T=
)
85
H^?
$
82
4
$
.N ?
8%
)
7
7
F
%=
< $
?
=
'
<
?
;
=
!
4
86
%ϕN/
)
3^? 8
<
Hπ =
' $ . 3^?
H^?
)
Z^?
)
4
!
89
1
+ * ''01 ,*
%
/
/
/
3
H
Z
4
8:
'/
$
$
$
`3
`3
`3
`H
`H
`H
!
!
"
* -'/ 0 ? *
< $HD $D N T=
< 72=!
'
$
$
"
E
<72 =!
)
4
8F
1
$!
)
"
,
+ ( B * ', +-0 ( ,,
3^?
)
"
@
" '
"
!
H^?
)
"@
"
"
!
4
8G
J, * ( -
-K *
;
;
-
$
- !
!
,"2
4
<
2=
28
H
-
K
,
)
-
)
!
≤
"
4
-
28%
H
-
K
≤
N D < / =?H
N D < V =?H
3^? 7
H^? 7
Z^?
'
!
282 . 1
4
'
3H
Z
,
,
,
3^? 7
H^? 7
Z^?
,
'
'& - - '( ./
1 - - '& ./
& - - 1 ./
-
,
-
)
!
!
0
2
3
!
!!
,"5
4
58
!'+-0 (
!
<
5=
,
'
G! 2 %
)
' $
3^? 7
H^? 7
Z^?
'
4
)
' $
'
!
58%
-+
+, ' ,
-
-
)
)
! '
!
' $
G <G
'
4
)
*
)
3^? 7
H^? 7
Z^?
D !
U
)
' $
U
)
!
582 . +
/1 >+
)
!
T
! 3
% .
E
T
3^? 7
H^? 7
Z^?
.^? $
F
=
'
&
'
)
*
4
)
!
!
'
$
!
T
]
4
585
'/
01 '
T
HT
T"6 !
3^? 7
H^? 7
Z^?
'
.^?
*
!
!
)
=
=
'
^
' $
+
'
,
%
< ^
'
=!
-
!
!
,"6
4
68
T
'/
$
<
6=
01 '
HT
3^? 7
H^? 7
Z^?
!
T"6 !
'
4
!
68% . +
)1'/1 >+
)
! 3
T
E
T
3^? 7
H^? 7
Z^?
.^? $
F
)
'
HT
.
-
)
& 5
!
!
'
$
!
T
]
,"9
4
!
4<
9=
98
-
T
%
3T
HT!
8
)
!
4
98%
-
T
3-
HT! <
3T
=!
' $
"
6
"
#
= 0 =
!
)
'
!"
4
982
,( ?
', , *'
-
'
3TT
T"6
!
0
H
4
Q
3T
8
T
*
$
985
!
0 +?
'+-0 * /
36
>+1 *
3T
, '
V
D3T!
T!
3^? 7
H^? 7
Z^?
'
!
,":
4
:8
!
*- ** * ( +, 1-
Q
G"
GD3
4
<
00 0 ,1
'
< 7
9I :I F=
2%.26=
$
'
!
'
4
:8%
!
(1 '+0 ,
)
)
"
a
3 _P
'
<
'
)
)
)
a
)
,
3T
!
=
)
!
a
!
!
3^? 7
H^? 7
Z^?
.^?
/
4
'
!
'
]
:82 .
-
G)
#< = N 3T
)
<H π
=!
*
!
$
)
G
!
!#
G
)
*
' #
U
3^? 7
H^? 7
Z^?
.^? 7
'
!
/
]
4
:85
8
,
4&
)
#< =
4
:86 .
Q
G"
Rb
*- ** * ( +, 1GD3
:89 .
00 0')
'
4& 1-
+
!
/ >+ < 7
2%.26=
$
'
!
'
4
'
00 0')
!
/ >+
'
'
%
Q < = N HT
W3?√<3D<
,
!
G
)
N 3T _P ,
N .9TT Ω"
!Hπ = H = X
!
N 3TTTTT _P
N 3T C!
<
-
=
_P!
3^? 7
H^? 7
Z^?
'
!
!$
,"F
4
G !
<
HT
%
N
'
!
F8%
3T
T
4
)
/3 [
1
3^? 7
H^? 7
Z^?
)
T
!
4
'
N /T"6
D3
N√<
-
)
%
D 3=
!
F82
%
xn
yn
Filtre
numérique
#< = N < = / 3"\35T < / 3= D < / H= D 3"63\3#< / 3= / T"595T#< / H=
% # /3 N T
1
'
% $ N c3"3"3 >! d
K T! $ N T
)
JT!
# VH N T
#
,
x
1
n
3^? 7
H^? 7
Z^?
G=
F8
)
3^? 7
H^? 7
Z^?
FI
'
!
," @
4L
<
@=
@8
DCy
BP1
Led2 Led1
BP2
Capteur position initiale
)
'
'
'
<
'
)
<
3=
-
H=!
:
" '
7 #<
)
'
-
#
2&3
7 #
2&3
=
)
)
!
2&H!
3^? 7
H^? 7
Z^?
'
!
)
!
G! 2 %
4
' $
)
' $
U
@8%
Début
OUI
BP1 = Vrai
NON
Pour i = 0 à 9
Led 1 = Vrai
Attente 3s
Led 1 = Faux
Fin
3^? F
H^? $
Z^? 1
)
'
]
!
!
4
@82
8*
!
/
3T
'
2&!
) !
2&H
3^? 7
H^? 7
Z^?
'
)
!
)
4
7 #
!
@8 5
M + ( 0+/ K *
'
7
3T
"
!
'
)
!
#
) !
7
$-
7
-
3T
.
"
e
)
@8 6
@
*+
( +,
', '
+
*
'
!
)
!
/ * ( ?1-+ ',
!
3^? 7
H^? 7
Z^?
Z
!
!
!
=!
^
#
' $
'
e
^
e "
)
4
<
'
3TTT
4
@8 9
$ +? ( -
7'+
)
"
$
!
!
&
*
<
)
'
4
=!
"
)
,"
4
4
$
!
8
, H
6TT
)
%
% W T " 3T τ X
<3V $ </ ?τ==
τ
)
0@
'
!
%
'
)
!
!
3^?
Rb!
H^? &
" $
Z^?
!
)
)
.^?
Rb!
,
4
-
8%
'
)
)
'
)
)
)
!
!<
<)
Y ?
!
=!
=
120
100
90
60
50
3
1
$
5
6
7
8
8,5 9
!
9,5
10,5 11
4
82
'*
/ , ( * (',,1 *
)
!
+
7
7
1
,
'
%
)
$
!
!
7
f
!
)
-
$
!
)
4
!
85
' $
H
' $
Z
4
86
@
'
)
!
!
'N ,, )0 ** ,
#
#
#
"
+
#
#
)
"
,
,
(
+
(
!
"
#
,
)
/
/
( @
!
#
#
)
(
/
)
8
!
#
"
!
"
'
'
&83T <
-
, 8
3T g =
.5
!
%??:::!
/
/
!
?
? ?
!
3?
h
h h
!
%
h6T!
,
,
!
'
1
1
F
'
)
!&
!
!
*
#
#
5 !
#
]
!
," %
4
%8 A '/
4
+ C N* 1 1* *
#
'
$
)
!
< =
/
!
s
Quand e(t) augmente, s bascule à –10
quand e > 5.
+10
-1
e
5
-10
Quand e(t) diminue, s bascule à +10
quand e < -1
3^?
<
1
$
HT
<: )
=
=
'
<=
#
'
!
e(t)
+8
t
-8
H^? C
;
< =
4
%8%
Rb!
%
<=N
<Hπ
=
<Hπ
=
%
JJ
!
N T"3 _P
)
N 3 _P!
)
HT
!
!
,
)
'
$
Téléchargement