22 octobre 2013

capteur de contact et moteur cc robot zumo pololu


// contrôle de 2 moteurs cc avec 2 capteurs de contact avec chassis pololu zumo

int pwm_a = 9;               // Entrée PWMA du zumo shield  arduino sur broche 9
int pwm_b = 10;            // Entrée PWMB du zumo shield  arduino  sur broche10
int dir_a = 7;                 // Entrée DIRA          "          "           "          sur broche 7
int dir_b = 8;                // Entrée DIRB           "          "           "          sur broche 8
#define BOUTTON_A 4    // capteur de contact A sur broche 4
#define BOUTTON_B 3    // capteur de contact B  sur broche 3
int val = 0;                          // les données val et vall sont égale à 0
int vall =0;                         
void setup()
{
  pinMode(pwm_a, OUTPUT);   // met la broche 9 en sortie
  pinMode(pwm_b, OUTPUT);   //met la broche 10 en sortie
  pinMode(dir_a, OUTPUT);                    
  pinMode(dir_b, OUTPUT);
  pinMode(BOUTTON_A,INPUT);// bouton_A gauche en entrée
  pinMode(BOUTTON_B,INPUT);
  analogWrite(pwm_a,127); // moteurs à 50% de la vitesse maxi (valeur max 255)
  analogWrite(pwm_b,127);
  }
  void loop()
  {
  
  val  = digitalRead(BOUTTON_A); //  les capteurs de contact
  vall = digitalRead(BOUTTON_B);
  if (val == HIGH){                           // si boutton_A égal high (pas de contact)
    digitalWrite(dir_a,LOW);            // moteurs tournent dans un sens
    digitalWrite(dir_b,LOW);
 analogWrite(pwm_a,127);             // à 50% de la vitesse max
  analogWrite(pwm_b,127);
  }
  else{                                             // sinon ,
    digitalWrite(dir_b,HIGH);        //changer de sens moteur
    digitalWrite(dir_a,HIGH);
    delay(250);                                // attendre 2,5 sec
    digitalWrite(dir_b,LOW);         // permet de tourner selon le contact
    digitalWrite(dir_a, HIGH);
    delay(250);
   
  }
  if (vall == HIGH){
    digitalWrite(dir_a,LOW);
    digitalWrite(dir_b,LOW);
analogWrite(pwm_a,127);
  analogWrite(pwm_b,127); 
}
  else{
    digitalWrite(dir_b,HIGH);
    digitalWrite(dir_a,HIGH);
    delay(250);
    digitalWrite(dir_b,HIGH);
    digitalWrite(dir_a,LOW);
    delay(250);
    
   
 
}
  }

Aucun commentaire:

Enregistrer un commentaire