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



Yüklə 0,51 Mb.
səhifə31/43
tarix04.01.2022
ölçüsü0,51 Mb.
#61490
1   ...   27   28   29   30   31   32   33   34   ...   43
Capteur de rotation

Le capteur de rotation est un type de capteur très utile. Le capteur de rotation possède un trou dans lequel vous pouvez passer un axe. Ce qui permettra de mesurer la position angulaire relative. Une rotation complète de l'axe compte 16 étapes ( ou -16 si la rotation se fait dans l'autre sens ), ce qui fait 22,5° l'étape... Loin du respect à 1° près des servomoteurs. L'avantage du vieux capteur est qu'il est très facile à faire tourner alors que les nouveaux nécessitent un couple important.

Si vous avez besoin d'une résolution plus fine que 16 pas par tour, vous pouvez toujours utiliser une démultiplication pour augmenter le nombre de pas par tour.

Une application standard est d'avoir deux capteurs de rotations relié aux deux roues du robot que vous contrôlez avec les deux moteurs. Pour un mouvement rectiligne vous voulez que les deux roues tournent à la même vitesse. Malheureusement, les moteurs ne fonctionnent pas toujours à la même vitesse. En utilisant les capteurs de rotation, vous pouvez voir qu'une roue tourne plus vite. Vous pouvez alors arrêter temporairement un moteur ( en utilisant float ()) jusqu'à ce que les capteurs soient de nouveau à la même vitesse. Le programme qui suit fait cela. Il permet tout simplement au robot d'avancer en ligne droite. Pour l'utiliser, modifier votre robot en reliant les deux capteurs de rotation pour les deux roues. Branchez les capteurs à l'entrée 1 et 3.

task main()

{

SetSensor(IN_1, SENSOR_ROTATION);



ClearSensor(IN_1);

SetSensor(IN_3, SENSOR_ROTATION);

ClearSensor(IN_3);

while (true)

{

if (SENSOR_1 < SENSOR_3) {



OnFwd(OUT_A, 75);

Float(OUT_C);

}

else if (SENSOR_1 > SENSOR_3) {



OnFwd(OUT_C, 75);

Float(OUT_A);

}

else


OnFwd(OUT_AC, 75);

}

}



Le programme indique d'abord que les deux capteurs sont des capteurs de rotation, et les remet à zéro. Ensuite, il commence une boucle infinie. Dans la boucle, nous vérifions que les deux valeurs du capteur sont égales. Si elles le sont, le robot se déplace tout droit. Si l'une est plus grande, le moteur s'arrête jusqu'à ce que les deux valeurs soient à nouveau égales.

Clairement, ce programme est très simple. Vous pouvez étendre ceci pour que le robot fasse une distance très précise.




Yüklə 0,51 Mb.

Dostları ilə paylaş:
1   ...   27   28   29   30   31   32   33   34   ...   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