























| | Détection de collision
Les micro-switchs disponibles chez les marchands de composants électroniques.

Comme dit précédemment, il s'avère nécessaire d'équiper notre
robot IRBOT d'un
système de détection de collision.
Le radar infrarouge ne détecte pas tous les objets (par exemple un pied de chaise ou
une plinthe de couleur noire).
Le système de détection de collision se résume à 2 micro-switchs fixés à
l'avant du robot. Les leviers des switchs sont prolongés par des fil rigides
faisant office de "moustaches".

Donc en cas de collision le contact d'un des switchs (ou des deux) s'établie.
Les switchs sont reliés à une entrée de notre PIC16F84 (l'autre extémité du
switch est relié à la masse). Ils génèrent une interruption du programme
principal qui donnent lieu à une manoeuvre de dégagement du robot (un quart de
tour à droite ou à gauche en fonction du switch activé).
La modification à apporter au programme est la suivante. Activation d'une
routine d'interruption en cas de changement d'ètat des entrées B4 à B7.
Cà donne cela:
#define MICRO_S_G PIN_B4 // switch gauche détection de collision
#define MICRO_S_D PIN_B5 // switch droite détection de collision
#int_rb // interruption sur PORTB (micro-switch de collision)
void collision () {
if (input(MICRO_S_G)==0) {
DUREE_MARCHE=0; // priorité à la détection de collision
sens (ROTD,32); // 1/4 de tour à droite pendant 1.5"
}
if (input(MICRO_S_D)==0) {
DUREE_MARCHE=0; // priorité à la détection de collision
sens (ROTG,32); // 1/4 de tour à gauche pendant 1.5"
}
}
Ainsi équipé notre robot est capable de déambuler dans une pièce en évitant
quasiment tous les obstacles. 
Téléchargez programme et schéma électronique ( j'ai réaffecté
les entrées/sorties par rapport à la version précédente).
Détection Collision
La prochaine étape, télécommande par infrarouge.
|