Le robot mémorise son parcours
Le fait que l'on puisse télécommander le robot mobile IRBOT ouvre de
nouveaux horizons.
Il serai intéressant d'utiliser les touches RECORD, PLAY et STOP pour mémoriser
le parcours que IRBOT est en train de faire. Puis de le rejouer.
Il y a encore une partie du microcontrôleur PIC16F84 qu'on a pas utilisé, c'est l'EEPROM.
En effet le PIC dispose d'une mémoire EEPROM interne de 64 octets. Cette mémoire
est toute indiquée pour mémoriser le parcours. En plus la mémoire n'est pas
volatile, c'est à dire que l'info reste mémorisée même après coupure de
l'alim.
Quelle information mémoriser ?
Les changements de direction et la durée d'une direction.
Ce sont tout simplement les paramètres de la fonction sens(direction,
durée).
Il suffit donc de mémoriser la valeur de direction et
de durée à chaque appel de la fonction sens.
Combien de bits pour mémoriser ces infos ?
direction peut prendre les valeurs 0 à 7. Donc 3
bits suffisent.
durée est exprimée en fractions de 20ms. C'est un
entier long de 16bits.
Si on se contente de 13bits, ça nous fait une durée max. de 213 *
20 * 10-3, ce qui donne 163 sec.. soit 2'43. C'est tout à fait honnête.
Donc 3 bits pour la direction et 13 bits pour la durée, cela fait 16 bits,
c'est à dire 2 octets.
Sachant que l'EEPROM fait 64 octets, cela nous permet de mémoriser 32
changements de direction d'une durée max de 2'45 par direction.
Comment répartir les données sur 2 octets ?
Premier octet = direction + durée (MSB ou bits de poids fort)
DIR2 DIR1 DIR0 DUR12 DUR11 DUR10 DUR9 DUR8
Deuxième octet = durée (LSB ou bits de poids faible)
DUR7 DUR6 DUR5 DUR4 DUR3 DUR2 DUR1 DUR0
Comment rejouer le parcours ?
Bien sûr si on veut que IRBOT refasses exactement le même parcours, il faut le
placer dans la même position de départ que lors de la mémorisation.
Pour rejouer le parcours il suffit de relire l'EEPROM afin de récupérer les
infos direction et durée,
et d'appeler la fonction sens avec ces paramètres.
Dans le prochain post programme et vidéo
La vidéo
IRBOT doit slalommer entre des poupées russes. Le parcours a d'abord été
effectué en téléguidant IRBOT à l'aide de la télécommande.
Puis, j'ai replacé IRBOT au point de départ et appuyé sur PLAY pour rejouer
le parcours. C'est la séquence PLAY que l'on voit sur la vidéo.
http://pro.wanadoo.fr/yves.heilig/Boutique/Video/irb16.exe
Le programme
Pour mémoriser le parcours dans l'EEPROM, j'ai utilisé la fonction write_eeprom
à chaque appel de la fonction sens.
Pour rejouer, j'ai rajouté la fonction rejoue qui
lit l'EEPROM par read_eeprom et qui appelle la
fonction sens avec les valeurs durée et direction.
Téléchargement
Tout est dans le zip. La vidéo est au format .smv
Mem_Parcours
Prochaine étape : se diriger vers une borne de rechargement