Faire varier la luminosité d’une LED avec un potentiomètre

Nous allons le reprendre le programme précédent et nous allons ajouter les lignes nécessaires à la gestion de la sortie

1
const int analogOutPin = 9; // Sortie analogique sur laquelle la led est branchée
2
int ValeurSortie = 0;        // variable danslaquelle sera stockée la valeur à transmettre à la LED

Le bloc setup reste inchangé

Nous passons ensuite au bloc loop.

. Nous allons utiliser analogRead qui renvoie une valeur numérique comprise entre 0 et 1023.

Nous allons donc récupérer dans la variable Valeur un nombre que nous allons ensuite renvoyer dans une LED pour définir son intensité lumineuse.

Il est en effet possible d'allumer une LED un petit peu grâce à la fonction analogWrite qui prend deux paramètres : le premier est le numéro de la broche qui va recevoir le courant. Le second paramètre est la valeur que nous voulons écrire comprise cette fois-ci entre 0 et 255.

1
analogWrite(analogOutPin, ValeurSortie);

Ici nous rencontrons un problème.

En effet la valeur du capteur est comprise entre 0 et 1023 tandis que la valeur de sortie doit être comprise entre 02 et 255 !

Pour corriger cela nous allons utiliser une fonction appelée map qui est offerte par le langage Arduino et qui permet de faire passer une valeur située dans une intervalle vers un autre.

Les paramètres de ces fonctions sont les suivants :

  1. valeur dans l'intervalle initiale

  2. début de l'intervalle initiale

  3. fin de l'intervalle initiale

  4. début de l'intervalle visée

  5. fin de l'intervalle visée

Grâce à cette fonction, nous allons donc nous retrouver avec une valeur proportionnelle comprise entre 0 et 255 que nous allons envoyer dans la LED grâce à la fonction analogWrite.

1
// changer l'intervalle :
2
ValeurSortie = map(Valeur, 0, 1023, 0, 255);

Pour compléter le programme nous allons indiquer dans le moniteur série la correspondance entre la valeur de sortie et la valeur d’entrée.

1
// print the results to the Serial Monitor
2
// envoyer du texte vers l'ordinateur :
3
  Serial.print("Capteur = ");
4
  Serial.print(Valeur);
5
  Serial.print("\t sortie = ");
6
  Serial.println(ValeurSortie);