Sommaire |
Nous allons réaliser un système qui permet d'enregistrer et répéter des séries d'impacts reçu par un objet tel un perroquet qui répète ce qu'il entend.
1/Réaliser le circuit
2/Lancer le logiciel arduino
3/Copier le code
/////////// Déclaration des variables
// ces variables sont constantes
const int CAPTEUR = A0;// le piézo est connecté à la broche Analogue 0
const int LED = 13;//la LED est connecté à la broche 13
const int ENCEINTE = 12;//l'enceinte est connecté à la broche 12
const int SEUIL = 1;//valeur de seuil
const int ANTIREBOND = 100;//temps de fonctionnement de l'antirebond
const int FIN = 2000;//temps d'attente après le dernier coup
const int NOMBREMARQUEURS = 50;//nombre de coups maximum
// ces variables changent
int lectureCapteur = 0;// variable pour stocker la valeur du capteur
int ledEtat = LOW;//etat de la LED, LOW:eteint, HIGH:allumé
int mode = 1;//ecriture ou lecture
int posTableau = 0;//
long temps = 0;
long marqueurTemps[NOMBREMARQUEURS];
int i = 0;
boolean DEBUG = false;
boolean BOUCLE = false;
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
/////////// Boucle principale
void loop() {
switch(mode) {
case 1: //mode enregistrement
digitalWrite(LED, HIGH);
if(DEBUG == true) Serial.println("mode 1");
// lecture de la valeur du piézo
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) {
marqueurTemps[posTableau] = millis() - temps;
posTableau++;
temps = millis(); //mise à jour du temps courant
}
if (millis() - temps >= FIN && posTableau >=1) {
posTableau = 0;
mode = 2;
if (DEBUG == true) Serial.println("mode 2");
temps = millis();
}
break;
case 2:
digitalWrite(LED, LOW);
if (lectureCapteur >= 0 ) {
for (i=1; i<NOMBREMARQUEURS; i++) {
tone(ENCEINTE, 1800, 100);
delay(marqueurTemps[i]);
marqueurTemps[i]=0;
}
posTableau = 0;
mode = 1;
if (DEBUG == true) Serial.println("mode 2 stop");
temps = millis();
break;
}
break;
}
}
4/Relier l'arduino au pc
5/Téléverser le programme
1/Réaliser le circuit
2/Téléverser le programme
3/Attendre que la LED soit allumée
4/Produire une série de sons
5/Attendre que la LED soit éteinte
6/Écouter la série de sons
7/Attendre que la LED soit allumée
8/Recommencer
Après une série de sons entendu par l'objet, nous attendons que la LED s’éteigne puis nous entendons la série de sons entendu.Puis la LED se rallume nous signalant la possibilité de réitérer l’expérience.
Le programme enregistre la série de sons reçu puis après un temps d'attente sans bruit, il envoi un signal à l'enceinte qui le restituera.
La LED est allumé tant que l'on peut enregistrer et est éteinte lorsqu'elle lit la série de sons.
Après chaque son reçu il faut un temps avant de pouvoir recevoir un autre son, on l'appelle l'antirebond. Il permet de ne pas enregistrer deux sons lorsqu'un seul est produit.
Pour que le son soit enregistré il faut qu'il dépasse le seuil de détection car sinon il y aurait trop de son détecté.
Une LED est un composant qui s'illumine quand un courant la traverse. La propriétés de la LED est qu'elle ne s'illumine que si le courant la traverse dans un seul sens, de l'ANODE (la patte la plus longue) à la CATHODE (la patte la plus courte).
Un piezo est constitué d'une lamelle qui, lorsqu'elle est déformée, émet une impulsion électrique. A l'inverse lorsqu'elle reçoit une impulsion, la lamelle vibre et émet un son.
Indiquer ici les expériences de Wikidébrouillard.
Autres expériences avec le même concept, recherche sur internet (indiquer les liens).
C'est de la culture, ça aide à comprendre le monde !! N'hésitez pas à lancer la discussion de votre fiche (après l'avoir sauvegarder !) afin de trouver de l'aide pour la compléter
Tout endroit en dehors d'un lieu humide ou trop bruyant.
Arduino
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique