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