Presentation et commande des maquettes FischerTechnik
Sommaire
-------
--------- | KIT |---- ------------ --------
| Station | Port | |PIA | |Interface de| |maquette|
| |<=====>| 68000 | |<==>| Puissance |<==>| |
| HP710 | Serie |-------|6821| | Fischer | |Fischer |
--------- |PTM6840|---- ------------ --------
| -------
|
<----->
Reseau de
l'ecole
Une maquette Fischer est un assemblages de "lego" techniques. Elle est
equipee d'actionneurs (mini-moteurs, moteurs pas a pas, lampes, electro-
aimants) et de capteurs (interrupteurs, potentiometres, photoresistances,
thermistances,...).
La station de travail permet de charger dans le kit 68000 et de lancer,
un programme de controle pour un modele de maquette Fischer. L'interface
fischertenik fait le lien, dans les deux sens, entre les signaux du kit
68000 et les composants electriques d'une maquette.
Le kit 68000 pilote et coordonne toutes les actions. Le role de l'interface
de puissance Fischer est d'adapter les signaux logiques trop faibles du kit
68000 pour actionner un moteur ou allumer une lampe. L'interface est capable
d'alimenter 8 lampes ou 4 moteurs M1 a M4 (un moteur a en effet 2 sens de rotation,
il occupe donc 2 lignes de sortie de l'interface). Il permet aussi d'interroger
jusqu'a 8 lignes "tout-ou-rien" (E1 a E8) pour les interrupteurs et 2 lignes
analogiques (EX et EY) pour potentiometres, photoresistances,...
Enfin l'interface dipose une serie de leds luminescentes:
- 1 led rouge qui doit s'allumer pour indiquer un bon fonctionnement de
l'interface avec le dispositif de commande (ici le kit68000).
- 8 leds rouges (E1 a E8) pour les capteurs "tout-ou-rien".
- 4 leds tricolores (M1 a M4) pour l'etat de commande des actionneurs (
qui est fonction de la tension appliquee aux 2 bornes S0 et S1 de
l'actionneur).
__________
/ M1 \ S0 | S1 | LED
--* Actionneur *-- -------------------
| \__________/ | 0 | 0 | eteinte
| | +V | 0 | verte
| | 0 | +V | rouge
* * +V | +V | orange
S0 S1
La tension V d'alimentation de l'interface de puissance est apportee par
une source separee de celle du kit 68000. Vous devez donc brancher une
alimentation entre 5 et 8 voltes maximum sur l'une ou l'autre paire de
ficges (+ et -) indifferemment de l'interface.
Attention: l'interface est realisee a partir de circuits integres en
technologie CMOS. Il vonvient donc de prendre garde a ne pas etre
electostatiquement charge avant de la toucher.
-----------
| |----- -----------
| | P |>--- Load Out --->| Interface |
| | I |>--- Load In ---->| |
| | A |>--- Data Out---->| Fischer |
| KIT 68000 | 6 |>--- Clock ------>| |
| | 8 |>--- Trigger X -->| de |
| | 2 |>--- Trigger Y -->| |
| | 1 |<--- Data IN ----<| puissance |
| |----- -----------
-----------
Signaux | 6821 | Connecteur DB25
| Broche | Port | Fischer
-------------------------------------------
Load Out | 2 | PA0 | 2
Load In | 3 | PA1 | 3
DataOut | 4 | PA2 | 4
Clock | 5 | PA3 | 5
Trigger X | 6 | PA4 | 6
Trigger Y | 7 | PA5 | 7
Data IN | 10 | PB0 | 11
Il y a donc 6 signaux en sorties et 1 signal en entree.
Les signaux DATA OUT, LOAD OUT et CLOCK sont utilises pour commander les
sorties M1 a M4. L'etat des 4 sorties est transmis sur 2 bits (l'un pour
marche/arret, l'autre pour le sens de rotation dans le cas d'un moteur).
L'interface recoit donc 8 bits. L'etat courant des 4 sorties est conserve
dans un registre tampon qui pilote directement les amplificateurs des sorties.
Ces 8 bits sont transmis en serie sur la ligne DATA OUT (poids forts d'abord
donc M4) en synchronisation avec le signal CLOCK.
Chaque impulsion sur le signal CLOCK provoque la copie de l'etat du
signal DATA OUT dans le registe a decalage apres l'avoir decale de 1 bit.
Des que les 8 bits ont ete transmis il faut metre le signal LOAD OUT a
l'etat haut pour provoquer le recopie du registre a decalage dans le registre
tampon.
La mise en marche des amplis de puissances est donnee par une bascule monostable pilotee par
le signal CLOCK et delivrant un signal d'une duree d'environ 0,5 seconde. Ainsi, 0,5
seconde apres la derniere impulsion d'horloge, le monostable retombe dans son etat stable ce
qui stoppe les amplificateurs des sorties et provoque l'arret de la maquette. Il faut donc
generer periodiquement une impulsion d'horloge.
Remarque: Le maintient au niveau bas du signal LOAD OUT empeche la recopie
du registe a decalage dans le registre tampon.
Ce fonctionnement est resume dans le diagramme si dessous:
____ _ _ _ _ _ _ _ _______
CLOCK 1 | |1| |2| |3| |4| |5| |6| |7| |8
0 |____| |___| |___| |___| |___| |___| |___| |___|
_______________________________________________
DATA OUT 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
0_______|_____|_____|_____|_____|_____|_____|_____|_____|___
____ ___
LOAD OUT 1 | |8
0____|__________________________________________________|
Le principe est le meme, le sens de la transmision etant inverse (de l'interface
vers le kit 68000). Une impulsion sur la ligne LOAD IN provoque le transfert
des valeurs dans un registre a decalage ; ces valeurs binaires sont envoyees en serie
au kit 68000 au rythme des impulsions d'horloges (poids forts d'abord, c'est-a-dire
l'entree numero 8 en tete).
Comme c'est le meme signal d'horloge qui est utilise, la lecture des entrees cause
egalement le basculement du monostable de protection des amplificateurs ; il faut
donc maintenir le signal LOAD OUT au niveau haut pour ne pas modifier le
registre a deacalage des sorties.
Ce fonctionnement est resume dans le diagramme si dessous:
____ ___ ___ ___ ___ ___ ___ ___ ___ ____
CLOCK 1 | |1 | |2 | |3 | |4 | |5 | |6 | |7 | |8 | |
0 |_| |_| |_| |_| |_| |_| |_| |_| |_|
___________________________________________________________
DATA IN 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
0 |_____|_____|_____|_____|_____|_____|_____|_____|
_____
LOAD IN 1 |0 |
0____| |_______________________________________________
Elles comportent chacune un circuit monostable, dont la base de temps est regle par
la valeur de la resistance a mesurer. Plus la resistance electrique presente sur
l'entree correspondante est grande, plus longue est la duree de maintient du signal
DATA IN au niveau bas. On peut donc "mesurer" cette duree par programme:
consultez le paragraphe "La fonction potar". Le fonctionnement du
monostable est declenche par les signaux TRIGGER X ou TRIGGER Y.
Ce fonctionnement est resume dans le diagramme si dessous:
____ _______________________________________________
CLOCK 1 | |
0 |_____|
____ _______________________________________________
TRIGGER 1 0| |
X ou Y 0 |_____|
______ _______
DATA IN 1 |<-- Fct de la tension du potentiometre -->|
0 |__________________________________________|
* CLOCK, est le signal d'horloge de l'interface de puissance. Les fronts
de ce signal permettent de synchroniser les bits qui circulent sur les
lignes series Data Out et Data In (voir les chronogrammes).
Pour avoir un fonctionnement continu des actionneurs de la maquette il
faut generer une impulsion d'horloge au moins toute les 0,5 secondes:
la led rouge de l'interface doit s'allumer alors en permanence.
* LOAD OUT, Tant que ce signal est a l'etat bas le registre tampon reste
inchange. Le dispositif de commande (le kit68000) peut donc envoyer ses
8 bits de commande dans le registre a decalage via DataOut et ClOCK.
Le registre a decalage est recopie dans le registre tampon tant que Load
Out est a l'etat haut.
* DATA OUT, les 8 bits de commandes sont envoyes en serie par ce signal
en synchronisation avec CLOCK. A chaque commande il faut envoyer les 8
bits donc commander tous les actionneurs a la fois. Il y a 4 actionneurs
et 2 bits par actionneur, exemple:
12 34 56 78 <--- numero de bit
mot de commande = | 01 | 10 | 11 | 00 |
-------------------
M1 M2 M3 M4
bits| Led (*) | tension en sortie
-----------------------------------
0 0 | eteinte | 0 0
0 1 | verte | 0 +V
1 0 | rouge | +V 0
1 1 | orange | +V +V
(*) n'existe pas sur tous les interfaces Fischer
* LOAD IN est le signal indiquant a l'interface de puissance que le dis-
positif de commande lui demande d'envoyer l'etat des 8 interrupteurs (
tout ou rien). Il faut envoyer une impulsion a 1 pendant une periode
d'horloge pour que l'interface commence a envoyer les 8 bits de donnees
en synchronisation avec CLOCK.
* TRIGGER X, indique a l'interface de puissance que le dispositif de com-
mande lui demande d'envoyer la valeur de son premier potentiometre. Il
faut envoyer une impulsion durant une periode d'horloge pour que l'inter-
face de puissance mette le signal DATA IN au niveau bas pendant une duree
proportionnelle a la tension du potentiometre.
* TRIGGER Y ideme que TRIGGER X mais pour le deuxieme potentiometre.
* DATA IN au repos ce signal est a l'etat 1. C'est la ligne par laquelle
l'interface de puissance envoi ses donnees en serie apres reception d'un
signal LOAD IN, TRIGGER X ou TRIGGER Y.
Le source se trouve dans /user/info_lib/Kit68k.new/src/fischertec/kit68000
Cette librairie contient un ensemble de fonctions qui permettent de pi-
loter une maquette fischer via un kit 68000.
Sur ce kit nous disposons d'un circuit d'entrees/sorties paralleles program-
mable, le PIA 6821, et d'un timer programmable , le PTM 6840.
On utilise le PTM pour activer periodiquement (~0.5 fois par second) une
routine qui genere les impulsions d'horloge du signal clock de l'interface
Fischer.
Les autres signaux sont generes par le PIA comme montre au paragraphe Les
signaux de commande de l'interface FischerTechnik.
Elle initialise les ports du PIA, le PTM et installe la routine de trai-
tement de l'interruption du ptm (le timer).
Algo:
InitFISCHER()
debut
Initialisation du PIA
- PA0 a PA7 en sorties
Load Out = PA0
Load In = PA1
DataOut = PA2
Clock = PA3
Trigger X = PA4
Trigger Y = PA5
- PB0 a PB7 en entrees
Data IN = PB0
- Clock = TriggerX = TriggerY = 1
- LoadIn = LoadOut = DataOut = 0
Placer dans la table des vecteur d'interruptions a
l'adresse 70 hexa (l'autovecteur de niveau 4) l' adresse de
la routine de traitement d'it InterPTM.
Initialisation du PTM
- inhiber tous les compteurs
- programmer le Timer3:
la base de temps est l'horloge de validation,
avec une predivision par 8,
comptage est sur 16 bits,
mode de fonctionnement continu,
avec interruption.
- Chargement du compteur pour une interruption toutes les 1/2 secondes.
- desinhiber tous les compteurs.
fin
Algo:
InterPTM()
debut
Clock = 0
Clock = 1
acquiter l'it du ptm
Relancer le timer 3
fin
La fonction controle( dispositif, action ) permet de controler les actions des dispositifs
M1, M2, M3 et M4:
____
/ \ Action | LED (*) | tension en sortie
--* MX *-- --------------------------------------
| \____/ | 0 | eteinte | 0 0
| | 1 | verte | 0 +5V
| | 2 | rouge | +5V 0
* * 4 | orange | +5V +5V
S0 S1
(*) n'existe pas sur tous les interfaces Fischer
Algo:
controle( Dispositif, Action )
debut
Former un mot de commande Act sur 8 bits en fonction
de Dispositif et de Action.
masquer les its du PTM (niveau 4)
Load Out = 0
POUR p VARIANT DE 1 A 8
debut
Niveau = le pieme bit de Act
SI (Niveau == 1) ALORS Data Out = 1
SINON Data Out = 0
Clock = 0
Clock = 1
fin
Load Out = 1 Provoque la recopie du registe a decalage
dans le registre tampon.
Data Out = 0
Load Out = 0 Maintient du registre tampon.
demasquer les its du PTM (niveau 4)
fin
La fonction inter( Num ) retourne l'etat (0 ou 1) de l'interrupteur tout ou
rien numero "Num" (de 1 a 8).
Algo:
inter( num )
debut
debut sequence "demande etat capteur"
masquer les its du PTM (niveau 4)
Clk = 0
LdIn = 1
Clk = 1
LdIn = 0
POUR i VARIANT DE 1 A 8
debut
SI i == num ALORS val = DataIn
Clk = 0
Clk = 1
fin
demasquer les its du PTM (niveau 4)
retourner(val);
fin
La fonction potar( Num ) retourne une valeur proportionnelle a la tension du
potentiometre numero "Num" (1 ou 2).
Algo:
potar( Num )
debut
masquer les its du PTM (niveau 4)
Clk = 0
SI Num == 1
ALORS
TrigX = 0
SINON SI Num == 2
ALORS
TrigY = 0
SINON
erreur Num doit etre egale a 1 ou 2
fin
FINSI
Clk = 1
TrigX = 1
Trigy = 1
i = 0;
Attendre que DataIn passe a 0
Tant que DataIn est a 0 incementer i de 1
demasquer les its du PTM (niveau 4)
retourner( i );
fin
Ce programme permet de controler le fonctionnement d'une maquette
Fischer. Apres telechargement et execution ce programme vous montre
l'etats des interrupteurs, les niveaux des potenetiometres et avec
l'aide du clavier de la station, vous pouvez tester les actionneurs
M1, M2, M3 ou M4.
Le source se trouve dans $Kits68k/FischerTech/Diag :
Cette maquette offre une commande simple d'ascenseur a` priorite' ou bien une commande par
me'moire de touche d'appel.
Trois interrupteurs (E3, E4 et E5) signalent la position de la cabine d'ascenseur. Trois
autres interrupteurs (E6, E7 et E8) sont place's en tant que touches d'appel aux diffe'rents
e'tages.
L'ascenseur, dans sa commande la plus simple, n'est pas difficile a` programmer. Une position
de consigne est obtenue a` partir des touches d'ordres (E6, E7 ou E8). C'est la varable
PositionConsigne qui indique a` quel e'tage la cabine doit aller. 0 correspond ici au rez-de-
chausse'e, 1 et 2 aux premier et second e'tages. La position re'elle de la cabine est donnee
par la variable PositionCabine. Le codage des e'tages s'effectue avec les me'mes chiffres que
pour la position de consigne.
Le reste est a` pre'sent simple : si la position de consigne est infe'rieure a` la position
re'elle, l'ascenseur doit se de'placer vers le bas, dans le cas contraire, l'ascenseur doit
se de'placer vers le haut. Si les positions re'elle et de consigne sont conformes, le moteur
d'ascenseur est arrˆte'.
Pour la phase d'initialisation, si la cabine ce trouve entre deux etages le moteur est actionne'
pour faire descendre la cabine jusqu'a un etage. Nous pouvons utiliser ce mouvement de de'part
pour e'tablir le sens de rotation du moteur. En effet si vous constatez que la cabine monte c'est
qu'il faut inverser les polaritees du moteur de cabine.
Nous vous proposons comme variante de programme un ascenseur avec une me'moire des touches
d'appel. A pre'sent, il ne faut plus attendre que l'ascenseur s'arrˆte pour entrer un nouvel
appel. Vous pouvez aussi ame'liorer encore l'ascenseur avec une commande de priorite' de
direction. La seconde touche de l'e'tage central entre ici en action. La touche de gauche est
exploite'e en tant que touche d'appel vers le haut, celle de droite en tant que touche d'appel
vers le bas Vous pouvez noter aise'ment ceci, vu que la saillie d'actionneme'nt se trouve en
haut pour la touche de gauche. Pour la touche de droite, la saillie d'actionnement est oriente'e
vers le bas.
Le programme doit a` pre'sent commander l'ascenseur de telle sorte qu'il ne s'arre'te pas a`
l'e'tage central, si le sens de de'placement intervenant n'est pas conforme a` la direction
souhaite'e. Et celui qui recherche encore un autre champ d'activite' peut comple'ter les
touches d'appel qui sont place'es normalement a` l'inte'rieur de la cabine par des touches
du clavier de la station.
Le source se trouve dans $Kits68k/FischerTech/Ascenseur :
Le rotor d'antenne a pour ta^che d'oriente' une antenne. Afin
que le kit68000 sache dans quel sens l'antenne est oriente'e, on
a incorpore' a` son pied un potentiome`tre EY. La roue dente'e
sur laquelle repose l'antenne est actionne'e par le moteur M1.
L'orientation de consigne re'sulte de la position du second po-
tentiome`tre EX. Le sens de rotation du moteur re'sulte de la
diffe'rence entre les positions de consigne et re'elle. En cas
de conformite' des deux, le moteur est arrˆte'.
Des effets curieux apparaissent dans les positions extremes des
potentiome`tres. En effet les plages de valeurs des deux poten-
tiome`tres ne sont pas identiques et les valeurs extremes du
potentiometres de rotor ne peuvent pas etre atteintes. Il est
alors naturellement inutile de faire fonctionner le moteur
contre les bute'es du potentiome`tres.
Le source se trouve dans $kit68k/FischerTech/Rotor :
Vous pouvez visualiser le fichier:
source Rotor.c,
le Makefile pour compiler et son
fichier de commande LinkCom.k pour l'edition des liens.
Mais, qu'est ce qu'un fichier de commande ?
Ce robot peut tourner autour de son axe vertical a l'aide du moteur
M1 et monter et descendre son bras a l'aide du moteur M2.
Gra^ce a` un electro-aimant M3 en guise de main, il peut recueillir
des disques qui sont place'es devant lui en arc de cercle et les de'poser
a` un autre endroit.
le processus de mouvements pour ce robot repose sur un sport ce're'bral
ancien: les Tours de Hanoi.
D'apre`s la tradition, des moines d'un cloitre boudhiste sont occupe's a`
une ta^che qui exige une dose extraordinaire de patience. Trois piliers
de cuivre, d'argent et d'or sont place's sur une planche. Il y a tre`s
longtemps de cela, cent disques troue's e'taient empile's, tous de diam-
e`tres diffe'rents et dispose's par ordre de grandeur, sur le pilier de
depart en cuivre. La ta^che consiste a` de'placer le tas sur le pilier
d'arrive'e en or, en ob-servant les re`gles suivantes:
1 - On ne peut deplacer qu'un disque a` la fois.
2 - On ne peut jamais de'poser un disque sur un autre plus petit.
3 - Seuls les trois piliers peuvent e^tre utilise'es pour de'placer
les disques.
L'histoire nous conte aussi que lorsque le but est atteint, c'est la fin
du monde.
Dans notre exemple, nous avons renonce' aux piliers de cuivre, d'argent et
d'or et n'utilisons tout au plus que 5 disques, pour ne pas provoquer de'-
libe're'ment la fin du monde. Pour les emplacements des tas, nous trouvons
respectivement une position sur le bord avant et arrie`re ainsi qu'au centre
du chassis (voir photo).
Algorythme:
Il est pre'fe'rable de tenir compte de l'observation suivante: afin de faire
passer le disque du dessous du pilier de depart au pilier d'arrive'e, vous
devez tout d'abord d'une facon ou d'une autre de'placer tous les disques du
dessus sur le pilier interme'diaire. Alors le disque du
dessous peut e'tre de'place'. Puis de nouveau, il ne reste plus qu'a` de'placer
le tas restant du pilier interme'diaire sur le pilier d'arrive'e.
Comment re'aliser le de'placement du tas restant ?
Si nous avons 5 disques le tas restant fait 4 disques. Nous pouvons comme pre'cedemment
de'placer le quartie`me disque le plus bas: Nous placons le tas de 3 disques sur
le pilier libre (celui de de'part). Ainsi nous de'placons le proble'me d'un tas a` 4
disques a` un tas a` 3 puis a` 2 disques. En fin de compte nous ommes parvennus dans
la re'flexion a` la situation avec un seul disque. Et de la` il est simple de de'placer
ce disque.
Nous pouvons a` pre'sent de nouveau suivre cette conclusion et affirmer ainsi
que nous maitrisons le jeu de la Tour de Hanoi pour un nombre infini de disques.
C'est exactement selon cette reflexion que fonctionne le programme qui est propose'
ci-apre's.
Le nombre de pas necessaire pour n disques est donnees par la formule (2 puissance n - 1).
Donc pour 5 disques, le robot doit re'aliser ainsi 31 pas. Pour 100 disques, il faut
exactement 126 765 060 000 000 000 000 000 000 000 de pas. Me'me le moine le plus
rapide (1 seconde par coup) devrait travailler environ 40 mille millions de billions
d'annees pour provoquer la fln du monde.
Dans un premier temps le programme demande de reperer la position des trois piliers.
Puis le nombre de disques. Il commence alors le traitement, il affiche le nombre de
pas restant et le deplacement encours.
La fonction de gestion de l'eletro-aimant presente une particularite'. apres chaque
mise hors tension de l'electro-aimant on aliment brie'vement dans le sens contraire
l'electro-aimant. Ce qui permet de reduire la magnetisation d'un disque.
Le source se trouve dans $Kits68k/FischerTech/TeachIn :
Robot Teach-in
Les robots industriels sont utilise's lorsqu'il importe d'exe'cuter une suite de
mouvements de facon imperturbable et avec une pre'cision constante. Lorsque s'a-
joute a` cela le fait que le travail doit e^tre re'alise' dans un environnement
nocif pour l'e^tre humain, par exemple avec des rayons radioactifs, de la chaleur,
de la poussie`re, des bouees de peinture, etc., le robot est alors l'instrument
de travail approprie'. Une autre condition pre'alable a` l'utilisation des robots
est aussi cependant le fait que les ta^ches changent de temps a` autre. Sinon,
il serait certainement plus profitable de construire une machine spe'cialement
concue. Et ceci nous ame`ne au point central des ta^ches : un robot peut e^tre
librement programme' dans sa sequence de mouvements.
Deux me'thodes de programmation des robots sont aujourd'hui courantes. D'une part,
nous pouvons nous asseoir a` une table de travail et e'laborer le programme depuis
le debut. Lorsque le programme est e'tabli, il est entre' dans l'ordinateur de com-
mande du robot et teste' avec ce dernier. Eventuellement, le programme doit e^tre
ensuite corrige' et ame'liore' jusqu'a` ce que l'on obtienne en fin de compte le
re'sultat souhaite'. Ce processus exige certes un investissement de temps important,
mais il est toujours applique' lorsque les mouvements de robot sont fonction de
n'importe quel re'sultat de calcul.
Bien plus fre'quemment est toutefois applique'e le fameux proce'de' "Teach-in". Dans
ce cas, le robot est commande' manuellement par l'utilisateur au moyen d'un clavier
de commande. Le programme installe' dans l'ordinateur enregistre les mouvements.
Au terme de la ta^che, l'ordinateur peut faire renouveler aussi souvent que souhaite'
au robot les mouvements me'morise's.
L'avantage du proce`de' est manifestement la programmation directe du robot, pouvant
e^tre re'alise'e me^me sans connaissances de l'ordlnateur et de son langage de pro-
grammation. L'inconve'nient re'side dans la limitation a` des sequences de mouvements
simples et non ramifie's.
Nous voulons a` pre'sent pre'senter dans ce qui suit un tel programme.
Le robot est ici commande' au moyen de six touches de la console de commande. Les
touches ont, dans le detail, la signification suivante :
Bras leve' (E1)
Bras baisse' (E2)
Rotation a` gauche (E3)
Rotation a` droite (E4)
Marche aimant (E5)
Arre^t aimant (E6)
Deux touches ont une fonction particulie`re. La touche
Apprentissage (E7)
entraine la me'morisation de la position du robot par l'ordinateur. La dernie`re touche
de'marre ensuite le robot :
Start/stop (E8)
Elle sert simultane'ment a` stopper la suite de mouvements inde'finiment renouvele'e du
robot.
Il ressort de cette introduction que le programme se de'compose en deux parties: le module
d'apprentissage pour l'enregistrement des mouvements, et le module d'execution pour la
re'pe'tition des mouvements. Le module d'apprentissage contto^le constamment l'ensemble des
huit touches du pupitre de commande. Si l'une des touches de commande de moteur est appuye'e,
le moteur correspondant est actionne' dans le sens de rotation exige'. Dans un tel cas, la
touche est constamment ve'rifie'e jusqu'a` ce qu'elle soit relache'e. Le robot peut ainsi
e^tre posltionne' de facon tre's pre'cise et l'on empe'che un actionnement multiple des
touches.
Une le'ge`re diffe'rence intervient lors de la commande de l'e'lectroaimant servant de main.
La pression des touches est ici me'morise'e. L'aimant a une fonction durable.
La touche d'apprentissage de'clenche une me'morisation de la position venant d'e^tre atteinte.
Les deux positions des potentiome`tres ainsi que l'e'tat de commutation de l'aimant sont me'-
morise's.
Une pression sur la touche Start fait passer le robot dans le mode exe'cution. Une nouvelle
pression sur cette touche et le robot s'arrete.
Le source se trouve dans $Kits68k/FischerTech/TourHanoi