IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours complet pour apprendre à programmer un Arduino


précédentsommairesuivant

XVI. Premier contact

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 concepts du système de programmation Arduino.

Image non disponible

XVI-A. Matériel nécessaire à la réalisation du projet

  • Une carte Arduino
  • Un capteur piézoélectrique
  • Une LED
  • Une résistance 1 Mega Ohm
  • Un peu de ruban adhésif
  • Une bouteille en plastique vide

XVI-B. Première partie

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 nue 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.

XVI-B-1. Schéma de montage

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.

XVI-B-2. Programme

Vous pouvez maintenant copier le programme suivant dans la fenêtre du programme Arduino.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
// 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 l'orthographe du code (voir chapitre « Bien structurer son codeBien coder »). 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.

XVI-C. Deuxième partie : LED et variation de luminosité

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.

XVI-C-1. Schéma de montage

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 à l'une des pins Gnd.

XVI-C-2. Programme

Copiez maintenant le programme suivant dans la fenêtre de programmation Arduino.

 
Sélectionnez
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.
// 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 connexion 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.

 
Sélectionnez
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

 
Sélectionnez
map (valeurPiezo, 0, 1023, 0, 255);

XVI-D. Pour aller plus loin

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é.


précédentsommairesuivant

Ce cours est publié sous licence GPLv2, peut être lu et copié librement.