Modifications

Sauter à la navigation Sauter à la recherche
aucun résumé de modification
Ligne 20 : 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
 +
 +
<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