Objectif

On souhaite commander l'intensité lumineuse de la DEL à l'aide d'un potentiomètre en exploitant une entrée analogique de la carte Arduino.

La DEL est connectée à la sortie numérique n°3 et le curseur du potentiomètre est relié à l'entrée analogique A0.

Complément : Sorties numériques et niveau ajustable

Une sortie numérique ne peut délivrer que deux valeurs de la tension : 0 V ou +5 V.

Certaines sorties numériques de la carte Arduino sont repérées par le symbole ~. Il s'agit de sorties dites PWM, pour Pulse Width Modulation. Autrement dit, elles peuvent délivrer des trains d'impulsions entre 0 et 5 volts où le pourcentage de temps à l'état haut est ajustable sur 256 paliers (voir illustration ci-contre)

La commande permettant de générer ces impulsions sur une sortie numérique repérée par la variable pinLed est la suivante :

1
analogWrite(pinLed,niveau);

La variable niveau est du type entier, et peut prendre une valeur comprise entre 0 et 255.

Le programme commenté

On note en particulier la conversion de la valeur lue sur l'entrée A0 qui peut varier entre 0 et 1023 en une valeur comprise entre 0 et 255).

1
niveau = map(analogRead(A0), 0, 1023, 255, 0);

La fonction map renvoie nécessairement un entier. Elle est donc à proscrire quand une plus grande précision est nécessaire.

1
int pinLed = 3;//Numéro de la sortie numérique alimentant la DEL
2
int niveau;//Variable réglant la luminosité de la DEL
3
void setup() {
4
  // put your setup code here, to run once:
5
  pinMode(pinLed, OUTPUT);//L'E/S est utilisée en SORTIE
6
}
7
8
void loop() {
9
  // put your main code here, to run repeatedly:
10
  niveau = map(analogRead(A0), 0, 1023, 255, 0);
11
  /*
12
  Le rapport cyclique de la sortie numérique est ajustable
13
  sur 256 niveaux.
14
  La convertisseur analogique/numérique de l'arduino en A0
15
  convertit la tension lue en 1024 niveaux possibles.
16
  La fonction map adapte les deux échelles et stocke la valeur
17
  dans la valiable niveau
18
  */
19
  analogWrite(pinLed, niveau);//On commande la sortie numérique avec le niveau correct
20
  //Notez le analogWrite au lieu du digitalWrite qui ne permet que du tout ou rien
21
  }