PROGRAMMATION

Un langage adapté à la robotique

Certaines boîtes de construction "FISCHERTEKNIK" (une table traçante, un bras manipulateur à 3 axes) sont proposées avec un système de pilotage en BASIC ou HYPERCARD qui donne peu de satisfaction sur le plan pédagogique dans le cadre d'une utilisation en classe car sa mise en oeuvre est très lourde.

LEGO LINES, développé pour la France est un système de type "presse-bouton" qui ne permet pas de développer des procédures.

En 1986, un premier langage LOGO contenant des primitives de pilotage de robots était conçu avec la collaboration de Seymour Papert. Il était disponible pour les micro-ordinateurs APPLE II puis APPLE IIGs.

En 1987, le logiciel était adapté pour les ordinateurs COMMODORE 64, puis COMMODORE 128 et des élèves commencèrent à réaliser des modélisations.

Très vite cette activité pédagogique pris de l'ampleur. Enfin en septembre 1993, le logiciel LEGO-DACTA Control Lab était disponible pour les ordinateurs MACINTOSH et PC compatible / MS-DOS. Le langage LOGO complet muni de primitives de pilotage était arrivé dans sa pleine maturité. En août 1996 la version française de LEGO-DACTA Control Lab.

Primitives en mode direct

On peut tester le fonctionnement du moteur ou des capteurs au moyen de commandes de base appelées 'Primitives'.. Ces primitives, tapées en mode direct auront un effet immédiat sur le système. (En mode direct, une énumération de primitives ne peut pas être mémorisée et réexécutée par la suite.)
Exemples:

désigne "Mot.A (désigne un moteur connecté dans la prise A)
marche (met en marche un moteur )
arrêt (stoppe un moteur)
ChangeSens (inverse le sens de rotation d'un moteur)


Redéfinition des primitives

La puissance de l'interpréteur LOGO permet en outre de redéfinir les primitives. Par exemple, la primitive 'Marche', qui met en marche un moteur, peut être redéfinie très simplement par la commande 'CONTACT'. Il suffira d'écrire la procédure suivante:

POUR CONTACT
MARCHE
FIN

Les commandes MARCHE et CONTACT auront le même effet.

Les élèves définissent leur propre vocabulaire de pilotage:
La puissance de Logo permet à l'élève de définir ses commandes personnelles, adaptées à un but spécifique:

Pour MonAlarme
Son 100 1
Fin


Création de procédures

Dans une première étape, les élèves construisent des procédures LOGO de type linéaire. (Les commandes seront donc exécutées les une à la suite des autres.)

Les programmes sont tout d'abord tapés dans la fenêtre "PROCÉDURES" (puis peuvent exécutés plus tard ou sauvegardés pour une utilisation ultérieure.)
Il faut alors choisir un nom de procédure et le taper au clavier précédé de "Pour".
exemple:

Pour MonMoteur (nom de la procédure)
Désigne "Mot.B (désigne le moteur B)
MarchePour 5 (mise en route du moteur pendant 5 dixièmes de seconde)
Fin (indique que la procédure est terminée)

Le programme MonMoteur peut être appelé et exécuté si l'on tape tout simplement MonMoteur dans le poste de commande.
Le moteur connecté dans le port B se mettra alors en marche pendant 5 dixièmes de seconde et s'arrêtera.


Des procédures appellent d'autres procédures

Voici le programme d'un élève permettant d'actionner un carillon avec trois cloches:

pour clochea
désigne "mot.A
fpuissance 4
fsens1
marchepour 4
fsens2
marchepour 4
fin

pour clocheb
désigne "mot.b
fpuissance 6
fsens1
marchepour 5
fsens2
marchepour 5
fin

pour clochec
désigne "mot.c
fpuissance 2
fsens1
marchepour 1
fsens2
marchepour 1
fin

pour musique1
répète 4 [clochea attends 1 clochec attends 10 clocheb]
répète 2 [clochec attends 1 clochec attends 9 clochec]
répète 1 [clochea attends 1 clochec attends 5 clocheb]
fin

Cette succession de commandes provoque le balancement de la cloche. Elle est répétée pour chaque cloche. La procédure "Musique1" appelle les procédures clochea, clocheb, clochec et permet ainsi d'actionner des séquences musicales modulables à l'infini.

Autre exemple avec les primitives anglaises:

To ClocheA
Talkto "MotorA on wait 1 off rd wait 1 on wait 1 off
end

To ClocheB
Talkto "MotorB on wait 1 off rd wait 1 on wait 1 off
end

To ClocheC
Talkto "MotorC on wait 1 off rd wait 1 on wait 1 off
end
To Sonnerie
repeat 4 [ClocheA ClocheB ClocheC]
end


Des procédures récursives

Des procédures élaborées, qui appellent elles-mêmes des sous-procédures, sont construites par des élèves qui pilotent des modélisations plus complexes.
L'élève expérimente aussi des procédures qui interrogent l'état de capteurs (mécaniques, thermiques, photo-électriques) et permettent ainsi de "tester" l'environnement du robot.

Pour Test ;(Nom de la procédure)
Si Cont.1 [son 100 2] ;(Si le capteur ( "bouton-poussoir) est pressé, alors un son est produit)
Test ;(La procédure est rappelée pour un test continu)
Fin

Même procédure mais avec les primitives anglaises:
To Test
If touch1 [sound 100 1]
Test
End


Le Projet "Écluse"

Frédéric a réalisé une modélisation de vanne d'écluse et les procédures qui pilotent cette construction:

La vanne est un panneau vertical mobile disposé dans une canalisation pour en régler le débit. (définition trouvée dans le Petit Robert)
Les premières écluses qui ont été construites n'avaient pas de moteur, alors on utilisait des chevaux et des hommes.
Frédéric

Pour Écluse Nom de la procédure principale
FixePuissance 7 Fixe la vitesse du moteur
Désigne "motorA Désigne le moteur branché sur le connecteur B
Ouvrir Appel de la procédure Ouvrir
Fermer Appel de la procédure Fermer
Écluse Appel de la procédure principale
Fin Fin de la procédure principale

Pour Ouvrir
Fsens1 Fixe le sens de rotation à droite
Marche Mise en marche du moteur
AttendsJusque [cont.1] Attends jusqu'à ce que le capteur soit actif (appuyé)
Arrêt Arrêt du moteur
Fin

Pour fermer
Fsens2 Fixe le sens de rotation à gauche
MarchePour 138 Mise en marche du moteur pendant 138 dixièmes de secondes
Arrêt Arrêt du moteur
Fin

Avec les primitives anglaises:

to Écluse
setpower 7
talkto "motorA
Ouvrir
Fermer
Écluse
end

to Ouvrir
setright
on
waituntil [touch1]
off
end

to Fermer
setleft
onfor 138
off
end

Les déclarations de variables

Les variables se déclarent, comme dans les autres LOGO, de façon traditionnelle:

Make "Température 28 (version anglaise)

ou

Donne "Température 28 (version française)

 

Les "procédures- fonctions"

Les "procédures- fonctions" permettent de créer nos propres fonctions à l'aide de la primitive "Output". Celle qui suit retourne un nombre aléatoire entier compris entre une limite inférieure et une limite supérieure.
Ainsi la fonction alea 100 80, retournera un nombre aléatoire compris entre 80 et 100.
Cette fonction a été utilisée pour faire exécuter un nombre de tours aléatoire au moteur d'un carrousel.

to alea :a :a_partir_de
make "a random :a - :a_partir_de
make "a :a + 1
make "a :a + :a_partir_de
output :a :a_partir_de
end


show alea 100 80

Résultat: 9


La composition de pages

Une page avec des textes, dessins et boutons de commande etc... peut être composée. (Il faut sélectionner Nouvelle Page). Dans le menu Fenêtres, l'article "Palette d'outils" affichera les éléments nécessaires à la composition de la page.