Les broches numériques N°3, 5, 6, 9, 10 et 11 peuvent délivrer des signaux PWM (Pulse Width Modulation), notés ~ sur la carte.
Une sortie PWM permet de contrôler la puissance dans la charge qu’elle commande (ex : luminosité d’une led, vitesse de rotation d’un moteur). La variation de la durée de l’état haut d’un signal, dont la fréquence est constante, entraîne la variation de la valeur moyenne de ce signal. C'est pour cette raison que l'on peut considérer cette sortie comme étant analogique.
Pour l’Arduino, la fréquence du signal PWM est de 490 Hz (Fréquence du quartz/215) soit une période de 2ms.
LES SORTIES ANALOGIQUES
Quelques exemples de signaux PWM :
L'instruction permettant de générer un signal PWM est analogWrite(broche,N), où broche représente le numéro de la broche concernée et N le rapport cyclique du signal (compris entre 0 et 255).
LES ENTREES ANALOGIQUES
La carte Arduino Uno possède six entrées analogiques notées A0 à A5. Nous pouvons appliquer sur ces entrées des tensions comprises entre 0 et 5V et le convertisseur analogique-numérique (à approximations successives des ATMega) transforme ces tensions en mots binaires de 10 bits.
L'instruction permettant de lancer la conversion analogique-numérique est analogRead(broche), où broche représente le numéro de la broche concernée.
Exemple :
Nous faisons varier l'intensité lumineuse d'une led branchée sur la broche N°3 en fonction de la valeur de la tension appliquée sur la broche A0.
#define potentiometre A0
#define led 3
int val=0;
void setup()
{
pinMode(led,OUTPUT);
pinMode(potentiometre,INPUT);
}
void loop()
{
val=analogRead(potentiometre); //conversion AN
val=map(val, 0, 1023, 0, 255); // mise à l'échelle de val
analogWrite(led,val); // le rapport cyclique de la sortie led varie en fonction de la variable val
}
Remarque : Nous ne déclarons pas les entrées/sorties analogiques dans le Setup du programme.