Utilisation d'un éditeur Nous allons utiliser le logiciel libre Gedit afin d'écrire nos programmes. Si vous êtes sous Debian ( ou debian-like ) et qu'il n'est pas installé, IL suffit de l'installer via cette commande : sudo apt-get install


Mettre plusieurs capteurs sur une entrée



Yüklə 0,51 Mb.
səhifə32/43
tarix04.01.2022
ölçüsü0,51 Mb.
#61490
1   ...   28   29   30   31   32   33   34   35   ...   43
Mettre plusieurs capteurs sur une entrée

En raison de la nouvelle structure des capteurs NXT et des câbles 6-fils, il n'est pas facile de faire comme avant (comme cela a été fait pour le RCX) pour connecter plusieurs capteurs sur le même port. À mon humble avis, la seule solution fiable serait de construire un capteur tactile multiplexeur analogique à utiliser en combinaison avec un câble convertisseur. L'alternative est un multiplexeur numérique complexe qui permet de gérer la communication I2C avec NXT, mais ce n'est pas vraiment une solution abordable pour les débutants.

Le NXT possède quatre entrées pour connecter des capteurs. Si vous voulez faire des robots plus complexes (et vous avez acheté des capteurs supplémentaires) cela pourrait ne pas être suffisant pour vous. Heureusement, avec quelques astuces, vous pouvez connecter deux (voir plus) capteurs sur une entrée.

Le plus simple est de brancher deux capteurs de contact à une entrée. Si l'un d'eux (ou les deux) est touché la valeur est 1, sinon il est égale à 0. Vous ne pouvez pas distinguer les deux, mais parfois ce n'est pas nécessaire. Par exemple, lorsque vous mettez un capteur tactile à l'avant et un à l'arrière du robot, vous savez que l'on est touché et vous modifiez l'orientation du robot. Mais vous pouvez aussi changer le mode de l'entrée à RAW ce qui vous permet d'obtenir beaucoup plus d'informations. Si vous êtes chanceux, la valeur lorsqu'un capteur sera pressé ne sera pas la même pour les deux capteurs. Si tel est le cas, vous pouvez effectivement faire la distinction entre les deux capteurs. Et quand les deux sont pressés vous obtenez une valeur beaucoup plus faible (environ 30) de sorte que vous pouvez également le détecter.

Vous pouvez également connecter un capteur tactile et un capteur de lumière à une entrée (capteurs RCX seulement). Définissez le type de ce port comment capteur de lumière (sinon le capteur de lumière ne fonctionne pas). Sélectionnez le mode RAW. Dans ce cas, lorsque le capteur de contact est poussée vous obtenez une valeur RAW inférieure à 100. Si ce n'est pas poussé, vous obtenez la valeur du capteur de lumière, qui n'est jamais en dessous de 100. Le programme suivant utilise cette idée. Le robot doit être équipé d'un capteur de lumière orienté vers le bas, et un pare-chocs à l'avant relié à un capteur tactile. Connectez les deux capteurs à l'entrée 1. Le robot avancera au hasard dans une zone. Lorsque le capteur de lumière voit une ligne sombre ( valeur RAW > 750) il recule un peu. Lorsque le capteur tactile touche quelque chose (valeur RAW inférieure à 100), il fait la même chose. Voici le programme:

mutex moveMutex;

int ttt,tt2;

 

task moverandom()



{

while (true)

{

ttt = Random(500) + 40;



tt2 = Random();

Acquire(moveMutex);

if (tt2 > 0) {

OnRev(OUT_A, 75);

OnFwd(OUT_C, 75);

Wait(ttt);

}

else {


OnRev(OUT_C, 75);

OnFwd(OUT_A, 75);

Wait(ttt);

}

ttt = Random(1500) + 50;



OnFwd(OUT_AC, 75);

Wait(ttt);

Release(moveMutex);

}

}



 

task submain()

{

SetSensorType(IN_1, SENSOR_TYPE_LIGHT);



SetSensorMode(IN_1, SENSOR_MODE_RAW);

while (true)

{

if ((SENSOR_1 < 100) || (SENSOR_1 > 750))



{

Acquire(moveMutex);

OnRev(OUT_AC, 75); Wait(300);

Release(moveMutex);

}

}

}



 

task main()

{

Precedes(moverandom, submain);



}

J'espère que le programme est clair. Il ya deux tâches. La tâche moverandom fait bouger le robot d'une manière aléatoire. La tâche principale démarre en premier moverandom, définit le capteur, puis attend que quelque chose se passe. Si la valeur capteur est trop basse (touché) ou trop élevé (sur la zone blanche), il arrête les mouvements aléatoires, recule un peu, et recommence les mouvements aléatoires.




Yüklə 0,51 Mb.

Dostları ilə paylaş:
1   ...   28   29   30   31   32   33   34   35   ...   43




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin