Presentation et commande des maquettes FischerTechnik


Sommaire


Presentation:

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

Les signaux de commande de l'interface FischerTechnik:

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

Commande des sorties M1 a M4.

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____|__________________________________________________|

Lecture des entrees "tout-ou-rien" E1 a E8.

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____| |_______________________________________________

Lecture des entrees analogique EX et EY.

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

Resume du fonctionnement des signaux:

* 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.

Description de la librairie iofischer00 pour kit68000

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.

La fonction InitFISCHER()

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

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

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

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

Programme de diagnostique pour maquette fischer:

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 :

Un Ascenceur.

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.

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 ?

    La Tour de Hanoi.

    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 :

    Le Robot Teach-in.

    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