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);
}
}
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire