1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| int pinVitesse = 6;
int pinHall = 2;// le capteur de tours
int alpha;
unsigned long arrivee;
int n;
unsigned long depart;
byte compte=0;
byte valid;
unsigned long delai;
void setup() {
pinMode(pinVitesse,OUTPUT);
pinMode(pinHall, INPUT_PULLUP);
analogWrite(pinVitesse, 0);
Serial.begin(9600);
Serial.println("depart");
delay(5000);
}
void loop() {
for (n=2;n<16;n++){
if(n<15){alpha=n*16;} else {alpha=255;}// alpha prendra les valeurs 32, 48,...255
analogWrite(pinVitesse, alpha); //lance le moteur
Serial.print("alpha : ");
Serial.println(alpha);
delay(5000); //délai de stabilisationde la vitesse
valid=1; //autorisela lecture des impulsions Hall
while(compte<=10){
while(digitalRead(pinHall)!=HIGH){// attente d'une impulsion signalant un tour effectué
//delay(1);
}
if (valid==1){//première impulsion Hall : démarrage du décompte des tours
depart=millis();
Serial.println(depart,DEC);
compte=0;
valid=0;
}
else{
compte++; // impulsions suivantes
}
}
arrivee=millis();// on a effectué 10 tours, on relève millis()
Serial.println(compte);
Serial.println(arrivee,DEC);
analogWrite(pinVitesse, 0);
delai=arrivee - depart;// le temps passé pour 10 tours
Serial.print(", 10 tours en ");
Serial.print(delai, DEC);
Serial.println(" ms");
delay(5000);
valid=1; // nouveau cycle avec le alpha suivant
compte=0;
}
} |
Partager