Outils pour utilisateurs

Outils du site


vittascience:labyrinthe

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
vittascience:labyrinthe [2026/03/06 05:26] adminvittascience:labyrinthe [2026/03/06 16:23] (Version actuelle) – [algorythme essai] admin
Ligne 52: Ligne 52:
        *14 Arrêt du robot lorsque la sortie du labyrinthe est détectée.        *14 Arrêt du robot lorsque la sortie du labyrinthe est détectée.
 </code> </code>
 +
 +==== algorythme essai ====
 +
 +  * 1- régler vitesse des moteurs entre 20% et 50%
 +  * 2- Création de sous programmes : avancer , reculer, tourner droite 90° , tourner gauche 90°, stop,  test distance
 +  * 3- avancer jusqu'à distance obstacle < 3 cm 
 +  * 4- si distance < 3 cm => stop 
 +  * 5- Tourner à droite => test distance obstacle
 +  * 6- si distance > 20 => avancer jusqu'à distance obstacle < 3 cm 
 +  * 7- sinon si distance < 3 cm => tourner encore à droite ( en tout depuis l'arret = 180 °)
 +  * 8- test rotation si rotation => 180°  
 +  * 8- tourner encore de 180° ( 2 fois tourner droite) 
 +  * 8- si distance > 20 => avancer
 +
 +
 +{{ :vittascience:capture_d_ecran_du_2026-03-06_16-23-12.png?direct&600 |}}
 +
 +
 +{{ :vittascience:capture_d_ecran_du_2026-03-06_16-17-09.png?direct&600 |}}
 +
 +<code c laby0033.ino>
 +#include <MeMCore.h>
 +#include <Arduino.h>
 +#include <Wire.h>
 +#include <SoftwareSerial.h>
 +
 +MeDCMotor motor_L(9);
 +MeDCMotor motor_R(10);
 +// Ultrasonic on PORT_3
 +MeUltrasonicSensor ultrasonic_3(PORT_3);
 +
 +int distancemax;
 +int pause;
 +int vitesse;
 +
 +void mBot_setMotorLeft(int8_t dir, int16_t speed) {
 +  speed = speed/100.0*255;
 +  motor_L.run((9) == M1 ? -(dir*speed) : (dir*speed));
 +}
 +
 +void mBot_setMotorRight(int8_t dir, int16_t speed) {
 +  speed = speed/100.0*255;
 +  motor_R.run((10) == M1 ? -(dir*speed) : (dir*speed));
 +}
 +
 +void avancer() {
 +  while (ultrasonic_3.distanceCm() >= distancemax) {
 +    mBot_setMotorRight(1, vitesse);
 +    mBot_setMotorLeft(1, vitesse);
 +  }
 +  mBot_setMotorRight(0, 0);
 +  mBot_setMotorLeft(0, 0);
 +  delay(1000*pause);
 +}
 +
 +void droite() {
 +  mBot_setMotorRight(-1, vitesse);
 +  mBot_setMotorLeft(1, vitesse);
 +  delay(1000*pause);
 +  mBot_setMotorRight(0, 0);
 +  mBot_setMotorLeft(0, 0);
 +}
 +
 +void gauche() {
 +  mBot_setMotorLeft(-1, vitesse);
 +  mBot_setMotorRight(1, vitesse);
 +  delay(1000*pause);
 +  mBot_setMotorRight(0, 0);
 +  mBot_setMotorLeft(0, 0);
 +}
 +
 +
 +void setup() {
 +  distancemax = 3;
 +  pause = 1;
 +  vitesse = 22;
 +  avancer();
 +  droite();
 +  avancer();
 +  gauche();
 +  avancer();
 +  gauche();
 +  avancer();
 +  droite();
 +  mBot_setMotorRight(1, 50);
 +  mBot_setMotorLeft(1, 50);
 +  delay(1000*1);
 +  mBot_setMotorRight(0, 0);
 +  mBot_setMotorLeft(0, 0);
 +}
 +
 +void loop() {
 +}
 +</code>
 +
 +
 +==== Code à Tester ====
 <code c Laby001.ino> <code c Laby001.ino>
 int capteurAvant = A0; int capteurAvant = A0;
/home/chanteri/www/fablab37110/data/attic/vittascience/labyrinthe.1772771168.txt.gz · Dernière modification : de admin