Dans ce projet, nous allons utiliser un capteur piézoélectrique afin de faire varier l'intensité lumineuse d'une LED.Ce projet est simple et permet d'aborder les premiers concept du système de programmation Arduino.
|
|
Les capteurs piézoélectriques sont des composants qui créent un courant électrique lorsque qu'ils sont sollicités par des vibrations ou déformations. Collés sur une surface, ce capteur peut détecter des vibrations. C'est pourquoi dans cet exemple, la pastille piézoélectrique devra être nu et non pas encapsulée dans un boîtier plastique. Nous allons donc voir dans cette première partie, comment connecter un tel capteur à notre carte Arduino et afficher les valeurs captées.
Afin de réaliser ce montage, nous allons connecter la patte négative de notre capteur piézoélectrique à la masse de notre carte Arduino soit une des pins Gnd. Puis, nous connecterons l'autre patte sur la pin Analog In 0 de la carte. Branchez ensuite la résistance, une patte dans une pin Gnd et l'autre dans Analog In 0. et pour finir, scotchez fermement votre capteur sur votre bouteille plastique.
Vous pouvez maintenant copier le programme suivant dans la fenêtre du programme Arduino.
// Variable pour désigner quelle pin est utilisée pour le capteur int capteurPiezo = A0; // pin Analog 0 // Variable pour contenir la valeur du capteur int valeurPiezo ; void setup() { // Établit la connexion sérielle à 9600 bauds Serial.begin(9600); } void loop() { // Lit la pin du capteur et l'assigne à la variable valeurPiezo valeurPiezo = analogRead(capteurPiezo); // Affiche au moniteur sériel la valeur de valeurPiezo Serial.println(valeurPiezo); // Laisse un court délai afin que l'utilisateur puisse lire les valeurs correctement delay(100); }
Sauvegardez maintenant votre programme et vérifiez-le en cliquant sur le bouton Verify. En cas d'erreur un message rouge s’affiche dans la console. Vérifiez alors la syntaxe et orthographe du code (voir chapitre « Bien structurer son code »). Si vous ne rencontrez pas d'erreurs, vous pouvez maintenant téléverser votre programme sur la carte en cliquant sur Upload.
Une fois le téléversement terminé, vous pouvez faire apparaître la fenêtre du moniteur sériel en cliquant sur le bouton Serial Monitor. Assurez-vous que la vitesse de transfert des informations (baudrate) du moniteur sériel est identique à celle spécifiée dans le programme soit dans notre cas, 9600. Ce paramètre peut être changé en bas à droite de la fenêtre.
Après quelques instants, vous devriez voir défiler des chiffres sur le moniteur sériel. Il s'agit de la valeur renvoyée par le capteur piézoélectrique. Vous pouvez maintenant prendre la bouteille dans vos main et la déformer pour faire changer la valeur qui s’affiche dans votre terminal. La valeur doit changer proportionnellement et simultanément à la déformation de la bouteille.
Dans cette partie, nous allons ajouter une LED à notre montage afin d'illustrer les vibrations enregistrée par le capteur piézoélectrique pour faire varier l'intensité lumineuse d'une LED.
Afin de compléter ce montage, il nous suffit de connecter la patte (+) de la LED à la pin 13 et la patte (-) qui est la plus courte, à la masse de votre Arduino soit une des pins Gnd.
Copiez maintenant le programme suivant dans la fenêtre de programmation Arduino.
// Variable pour désigner quelle pin est utilisée pour le capteur int capteurPiezo = A0; // pin Analog 0 // Variable pour contenir la valeur du capteur int valeurPiezo ; // Variable pour désigner quelle pin de l'Arduino est utilisée pour la LED int ledPin = 13; void setup() { // Définit la pin 13 comme une sortie pinMode(ledPin, OUTPUT); // Établit la connextion sérielle à 9600 baud Serial.begin(9600); } void loop() { // Lit la pin du capteur et l'assigne à la variable valeurPiezo valeurPiezo = analogRead(capteurPiezo); // Convertit la valeur du capteur en valeur pour la LED valeurPiezo = map(valeurPiezo, 0, 1023, 0, 255); // Affecte la valeur de puissanceLed à la pin 13 analogWrite(ledPin, valeurPiezo); // Affiche au moniteur sériel la valeur de valeurPiezo Serial.println(valeurPiezo); }
Pour contrôler la luminosité de la LED proportionnellement à la valeur du capteur, nous devons réaliser un conversion. En effet la fonction analogWrite(); prend comme argument une variable dont la plage est de 0 à 255. De son coté la fonction analogRead(); nous donne une valeur entre 0 et 1024. Nous devons donc ramener l’échelle de la fonction analogRead(); à une plage plus petite (0 à 255), c'est pourquoi nous devons utiliser la fonction map ci-dessous.
map (val origine, val origine min, val origine max, val sortie min, val sortie max);
Pour convertir une variable dont la plage est de 0 à 1023 en une variable dont la plage est de 0 à 255, cela donne la fonction suivante
map (valeurPiezo, 0, 1023, 0, 255);
Afin d'aller plus loin, nous pourrions imaginer de remplacer le capteur piézoélectrique par tout autre capteur analogique comme un capteur de lumière ou encore un détecteur de proximité.
Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.
Vous devriez rafraîchir la page.