Tachymètre minimaliste avec une carte Arduino (version interruption)

par skywodd | | Langue : C++ | Licence : GPLv3

Description :

Tachymètre minimaliste avec une carte Arduino (version interruption).

Code source :

Voir le code source brut | Télécharger tachymeter_interrupt.ino | Télécharger tachymeter_interrupt.ino.zip

/**
 * Tachymétre minimaliste avec une carte Arduino
 */

// Bug-fix pour Arduino 1.0.6
#define NOT_AN_INTERRUPT -1

/* constantes pour la broche de mesure */
const byte PIN_SIGNAL = 2;

/* Variables pour la mesure */
volatile unsigned long periode = 0;

/** Fonction d'interruption pour la mesure entre deux fronts */
void tick() {
  static unsigned long previousMicros = 0;
  unsigned long currentMicros = micros();
  
  /* Calcul le temps écoulé depuis le précédent front */
  periode = currentMicros - previousMicros;
  
  /* Met à jour la variable pour la prochaine interruption */
  previousMicros = currentMicros;
}

/** Fonction setup() */
void setup() {
  
  /* Initialise le port série */
  Serial.begin(115200);
  
  /* Met la broche en entrée */  
  pinMode(PIN_SIGNAL, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(PIN_SIGNAL), tick, FALLING);
  
  /* Permet une première màj de "periode" */
  delay(500);
}

/** Fonction loop() */
void loop() {

  /* Affiche le résultat de la mesure en RPM */
  Serial.println(1000000 / periode * 60);
  delay(1000);
}