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
|
// Faire tourner le moteur à une vitesse constante
// Récupérer chaque changement d'état grace à une interruption sur l'une des 2 voies
// Calculer la vitesse du réducteur en tr/min et l'afficher sur la liaison série
const int _MOTEUR = 9; // Digital pin pour commande moteur
unsigned long temps; // variable de temps en microsecondes, car avec micros() direct, ça marche pas !!
unsigned long tempsinit; // instant initial
float vitesse ;
/* Routine d'initialisation */
void setup() {
pinMode(_MOTEUR, OUTPUT); // Configuration de la broche en sortie
analogWrite(_MOTEUR, 255); // Commande PWM de 0 à 255 Max (de 0 à 100% de la "tension d'alimentation")
delay(5000); // Pause de 5 sec pour laisser le temps au moteur de s'arréter si celui-ci est en marche
attachInterrupt(0, compteur, CHANGE); // Interruption sur tick de la codeuse (interruption 0 = pin2 arduino mega)
Serial.begin(230400) ;
tempsinit = micros();
}
/* Fonction principale */
void loop(){
}
/* Interruption sur tick de la codeuse */
void compteur(){
temps = micros();
vitesse = (1000000/float(temps-tempsinit))*60/6/53 ;
Serial.println(vitesse);
tempsinit=temps;
} |
Partager