Modifications

Sauter à la navigation Sauter à la recherche
Ligne 1 : Ligne 1 :  
{{Pololu-Zumo-Shield-Arduino-NAV}}
 
{{Pololu-Zumo-Shield-Arduino-NAV}}
  −
{{traduction}}
      
Ajouter des senseurs au Zumo lui permet de sentir et réagir au monde qui l'entoure. Dans les compétitions sumo où deux robots essayent de se pousser l'un l'autre hors du ring (ring circulaire), il est important que  que le robot puisse détecter le bord du ring afin de ne pas dépasser la frontière. Etant donné que les rings sumo sont noir avec une bordure blanche (tout le long de la frontière), un senseur infrarouge tel que les capteurs QTR <small>[https://www.pololu.com/category/123/pololu-qtr-reflectance-sensors lien pololu]</small> est particulièrement bien adapté. Le réseau de senseur infrarouge du Zumo {{polpl|1419}} est équipé de 6 capteurs QTR sur une carte conçue pour prendre place directement sur le connecteur d'extension situé à l'avant du shield Zumo (note: le {{pl|448|zumo robot pre-assemblé}} {{polpl|2510}} est déjà équipé avec le réseau de senseur infrarouge).
 
Ajouter des senseurs au Zumo lui permet de sentir et réagir au monde qui l'entoure. Dans les compétitions sumo où deux robots essayent de se pousser l'un l'autre hors du ring (ring circulaire), il est important que  que le robot puisse détecter le bord du ring afin de ne pas dépasser la frontière. Etant donné que les rings sumo sont noir avec une bordure blanche (tout le long de la frontière), un senseur infrarouge tel que les capteurs QTR <small>[https://www.pololu.com/category/123/pololu-qtr-reflectance-sensors lien pololu]</small> est particulièrement bien adapté. Le réseau de senseur infrarouge du Zumo {{polpl|1419}} est équipé de 6 capteurs QTR sur une carte conçue pour prendre place directement sur le connecteur d'extension situé à l'avant du shield Zumo (note: le {{pl|448|zumo robot pre-assemblé}} {{polpl|2510}} est déjà équipé avec le réseau de senseur infrarouge).
Ligne 22 : Ligne 20 :     
La possibilité de pouvoir errer à l'intérieur du ring sumo est suffisant pour que votre robot Zumo puisse participer à des compétitions de robot sumo. C'est une fonctionnalité rudimentaire, un croquis/sketch plus avancé permettrait la détection de l'opposant pour se diriger directement sur lui. Pour améliorer votre robot Zumo, vous pourriez considérer l'ajout de plusieurs senseurs, comme ceux permettant d'évaluer la distance <small>[https://www.pololu.com/category/79/sharp-distance-sensors lien pololu]</small> (permettant ainsi de détecter un opposant plutôt que de compter sur la chance de le percuter).
 
La possibilité de pouvoir errer à l'intérieur du ring sumo est suffisant pour que votre robot Zumo puisse participer à des compétitions de robot sumo. C'est une fonctionnalité rudimentaire, un croquis/sketch plus avancé permettrait la détection de l'opposant pour se diriger directement sur lui. Pour améliorer votre robot Zumo, vous pourriez considérer l'ajout de plusieurs senseurs, comme ceux permettant d'évaluer la distance <small>[https://www.pololu.com/category/79/sharp-distance-sensors lien pololu]</small> (permettant ainsi de détecter un opposant plutôt que de compter sur la chance de le percuter).
 +
 +
== Code ==
 +
Voici une copie de l'exemple avec traduction des commentaires pour vous aider à mieux comprendre le fonctionnement du croquis/sketch
 +
 +
Nous recommandons de toujours charger l'exemple depuis les codes d'exemples de la bibliothèque Zumo.
 +
 +
<syntaxhighlight lang="c">
 +
#include <ZumoBuzzer.h>
 +
#include <ZumoMotors.h>
 +
#include <Pushbutton.h>
 +
#include <QTRSensors.h>
 +
#include <ZumoReflectanceSensorArray.h>
 +
 +
#define LED 13
 +
 +
// Cette valeur aura peut être besoin d'être ajusté pour les
 +
// différentes conditions d'éclairages, surfaces, etc.
 +
#define QTR_THRESHOLD  1500 // microseconds
 +
 
 +
// A ajuster en en fonction des différents types de moteur
 +
#define REVERSE_SPEED    200 // 0 est stoppé, 400 à pleine vitesse
 +
#define TURN_SPEED        200
 +
#define FORWARD_SPEED    200
 +
#define REVERSE_DURATION  200 // ms
 +
#define TURN_DURATION    300 // ms
 +
 +
ZumoBuzzer buzzer;
 +
ZumoMotors motors;
 +
Pushbutton button(ZUMO_BUTTON); // Bouton poussoir sur la broche 12
 +
 +
#define NUM_SENSORS 6
 +
unsigned int sensor_values[NUM_SENSORS];
 +
 +
ZumoReflectanceSensorArray sensors(QTR_NO_EMITTER_PIN);
 +
 +
# Attendre après le bouton et faire le décompte
 +
void waitForButtonAndCountDown()
 +
{
 +
  digitalWrite(LED, HIGH);
 +
  button.waitForButton();
 +
  digitalWrite(LED, LOW);
 +
 
 +
  // Jouer un décompte audio
 +
  for (int i = 0; i < 3; i++)
 +
  {
 +
    delay(1000);
 +
    buzzer.playNote(NOTE_G(3), 200, 15);
 +
  }
 +
  delay(1000);
 +
  buzzer.playNote(NOTE_G(4), 500, 15); 
 +
  delay(1000);
 +
}
 +
 +
void setup()
 +
{
 +
  // Dé-commenter pour corriger le sens de rotation des moteurs (si nécessaire)
 +
  //motors.flipLeftMotor(true);
 +
  //motors.flipRightMotor(true);
 +
 
 +
  pinMode(LED, HIGH);
 +
 
 +
  waitForButtonAndCountDown();
 +
}
 +
 +
void loop()
 +
{
 +
  if (button.isPressed())
 +
  {
 +
    // Si le bouton est pressé, arrêter et attente une seconde
 +
    // pression du bouton pour continuer
 +
    motors.setSpeeds(0, 0);
 +
    button.waitForRelease();
 +
    waitForButtonAndCountDown();
 +
  }
 +
 
 +
 +
  sensors.read(sensor_values);
 +
 
 +
  if (sensor_values[0] < QTR_THRESHOLD)
 +
  {
 +
    // Si le senseur le plus à gauche détecte une ligne, reculer et tourner à droite
 +
    motors.setSpeeds(-REVERSE_SPEED, -REVERSE_SPEED);
 +
    delay(REVERSE_DURATION);
 +
    motors.setSpeeds(TURN_SPEED, -TURN_SPEED);
 +
    delay(TURN_DURATION);
 +
    motors.setSpeeds(FORWARD_SPEED, FORWARD_SPEED);
 +
  }
 +
  else if (sensor_values[5] < QTR_THRESHOLD)
 +
  {
 +
    // Si le senseur le plus à droit détecte une ligne, reculer et tourner à gauche
 +
    motors.setSpeeds(-REVERSE_SPEED, -REVERSE_SPEED);
 +
    delay(REVERSE_DURATION);
 +
    motors.setSpeeds(-TURN_SPEED, TURN_SPEED);
 +
    delay(TURN_DURATION);
 +
    motors.setSpeeds(FORWARD_SPEED, FORWARD_SPEED);
 +
  }
 +
  else
 +
  {
 +
    // Sinon, aller tout droit
 +
    motors.setSpeeds(FORWARD_SPEED, FORWARD_SPEED);
 +
  }
 +
}
 +
</syntaxhighlight>
    
{{Pololu-Zumo-Shield-Arduino-TRAILER}}
 
{{Pololu-Zumo-Shield-Arduino-TRAILER}}
29 917

modifications

Menu de navigation