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 57 58 59 60 61 62 63 64 65 66 67
| //-----------------------------------------------------------
// Inclusion de la bibliothèque pour les messages en Français
#include <PrintFr.h> //Source : <a href="https://github.com/EpixFr/Arduino-PrintFr" target="_blank">https://github.com/EpixFr/Arduino-PrintFr</a>
/* Déclaration des constantes définissant l'utilisation des broches */
//Broche utilisée pour les données du contact ILS
const int pin_ils = 10;
bool chronoStatus;
bool aimantPassage;
/* Déclaration des variables globales */
//Etat du contact ILS
int etat_ils = 0;
unsigned long millisON = millis();
unsigned long millisOff = 0;
void setup() {
//Initialisation de la broche ILS en entrée numérique
pinMode(pin_ils, INPUT_PULLUP);
Serial.begin(9600);
chronoStatus = true;
}
void loop() {
etat_ils = digitalRead(pin_ils);
delay(100); // Pour couvrir les rebonds
if (etat_ils == LOW) // Si aimant sur ILS
{
aimantPassage = true; // Noter le pasage de l'aimant
}
if (aimantPassage) // L'aimant est devant l'ILS
{
if (chronoStatus == false) // Si chrono arrêté cela veut dire demarrer le chrono
{
millisON = millis();
Serial.println("Chrono ON");
chronoStatus = true;
}
else // Autrement arreter le chrono
{
millisOff = millis() - millisON;
Serial.println("Chrono OFF = " + String(millisOff));
chronoStatus = false;
}
aimantPassage = false;
}
/*
Attendre que l'aimant quitte l'ILS
Ainsi le chrono se déclenche dès l'aimant sur l'ILS
Pour déclencher le chrono une fois que l'aimant quitte l'ILS
mettre cette boucle While, juste avant if (aimantPassage)
*/
while(etat_ils == LOW) // Attendre que l'aimant quitte l'ILS
{
etat_ils = digitalRead(pin_ils);
}
} |