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