Page 94 - arduino_Neat
P. 94

////////// Boucle principale
            void loop() {
                // lecture de la valeur du piézo
                lectureCapteur = analogRead(CAPTEUR);
                // envoi de la valeur à l'ordinateur
                if (lectureCapteur > 0) // fera s'afficher toute valeur supérieure à zéro
                {
                    Serial.println(lectureCapteur, DEC);
                }
            }
            DEUXIÈME ÉTAPE

            Nous devons maintenant introduire au code deux nouvelles fonctions. La première nous
            permettra de déterminer à partir de quelle valeur analogique captée nous considérons que le
            capteur détecte un impact. Cette fonction est un seuil qui nous permettra de mesurer le
            temps écoulé entre chaque impact. La deuxième fonction (ANTIREBOND) que nous devons
            introduire est une fonction de filtrage qui nous permettra d'éviter que le programme
            enregistre plusieurs impacts lorsqu'un seul impact est donné. Pour mesurer le temps, nous
            utiliserons la fonction millis() qui nous permet de connaître à tout moment le temps écoulé
            depuis le démarrage du programme.

            ////////// Déclaration des variables
            const int CAPTEUR = A0;     // le Piezo est connecté à la pin Analogue 0
            int lectureCapteur = 0;     // variable pour stocker la valeur du capteur
            const int LED = 13;         // LED connectée à la broche digital 13
            const int SEUIL = 1;        // choix du seuil de détection
            const int ANTIREBOND = 600; // choix du filtre anti-rebond
            long temps = 0;             // variable pour mémoriser le temps
            ////////// Initialisation
            void setup() {
                pinMode(LED, OUTPUT); // définir la pin associée à LED comme sortie
                Serial.begin(9600);   // configurer le port série
            }
            ////////// Boucle principale
            void loop() {
                // lecture de la valeur du Piezo
                lectureCapteur = analogRead(CAPTEUR);
                // si la valeur captée est supérieure au seuil choisi et
                // que le temps écoulé depuis le dernier impacte est
                // supérieur au temps de l'ANTI-REBOND,
                // alors on rentre dans la condition
                if (lectureCapteur >= SEUIL && millis() - temps >= ANTIREBOND) {
                    // envoi de l'information à l'ordinateur
                    Serial.println("impact");
                    temps = millis(); // mise à jour du temps courant
                }
                else {
                    // on ne fait rien
                }
            }
            RÉGLAGE DU SEUIL ET DU FILTRE ANTIREBOND

            Pour que votre programme fonctionne correctement il vous faut ajuster les constantes SEUIL
            et ANTIREBOND.
            const int SEUIL = 1;        // choix du seuil de détection
            const int ANTIREBOND = 600; // choix du filtre anti-rebond
            La constante SEUIL vous permet de supprimer les parasites éventuellement présents dans le
            signal capté. Plus la valeur de cette constante est élevée, plus il faudra taper fort pour
            déclencher l'enregistrement de l'impact.
            La constante ANTIREBOND définit un temps durant lequel la lecture de l'entrée Analogique
            n'est pas active. Ce temps permet de filtrer le signal d'entrée car le capteur peut produire
            plusieurs signaux pour un seul impact. L'idée est donc d'enregistrer le premier signal et de
            fermer la lecture pendant un court instant pour ne pas enregistrer les signaux résiduels.

            LES FONCTIONS LOGIQUES (ET) ET (OU)



            94
   89   90   91   92   93   94   95   96   97   98   99