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