La carte Arduino est une carte électronique programmable, qui facilite la programmation aujourd’hui à plusieurs personnes et permet à tout le monde d’intégrer le bon monde de création et de conception (robotique : le fait de faire bouger des choses ou mettre du mouvement, domotique : la commande domestique,..). Je vais être clair sur ce point sur les entrées analogiques et numériques et vous parlez aussi des sorties PWM de l’arduino en bref.
Cette carte possède une puce sur laquelle plusieurs éléments sont centrés. C’est le microprocesseur de la carte Arduino qui orchestre notre programme. On retrouve également des bornes ou broches, ou alors des PINS sur cette carte. Ces PINS sont à bien comprendre pour bien utiliser la carte ARDUINO, c’est l’objectif de ces lignes :
C’est une question de plus que je rencontre surtout et souvent dans des forums qui réunit les utilisateurs de la carte Arduino et plus particulièrement ceux qui débutent en programmation avec cette carte électronique programmable.
J’ai donc choisi inclure ce titre dans cette formation : « Créer vos systèmes électroniques avec Arduino»
En électronique, on a toujours une tension ou non sur les bornes de nos composants électroniques ou partout sur nos circuits. Ces tensions ont des valeurs qui vont des 0 à une centaine de volts (ici je parle bien de l’électronique basique ou élémentaire, car l’électronique de puissance se confond plus facilement à l’électricité car on atteint même une dizaine de kilovolts !!). Ces tensions peuvent dont prendre plusieurs valeurs : progressivement ou au fil du temps ou alors à certaines conditions. C’est là qu’il faut comprendre, pour pouvoir continuer avec la carte Arduino et ses entrées (analogiques et numériques).
Les sorties PWM 3, 5, 6, 9, 10,11
Une carte Arduino possède 13 sorties ( ou broches ou encore pins). Ces sorties servent pour interagir avec les capteurs ou tous les autres composants électroniques extérieurs à l’Arduino. Cependant, nous observons une caractéristique commune à toutes ces broches : obtenir soit une tension de 0V soit une tension de 5volts à la sortie. Nous verrons une particularité pour les broches 3, 5, 6, 9, 10, 11 qui sont des broches dites PWM
Le plus simple moyen de faire varier la luminosité d’une LED , c’est de faire varier le courant qui la traverse. Mais lorsqu’elle est branchée sur la broche d’une carte Arduino, ce n’est pas possible : les broches 1 à 13 sont en effet numériques. C’est- à- dire qu’elles n’ont que deux états: 0 ou 1; allumé ou éteint ( et ces états correspondent aux deux niveaux de tensions 0 et 5 ).
Alors pour faire varier la luminosité d’une LED ( le courant pour une sortie), on va utiliser une fonction appelée PWM : Pulse Width Modulation en Anglais, soit modulation de largeur d’impulsions, en français. Il s’agit de faire varier les périodes hautes (allumé) et basses (éteint) des broches à grande fréquence. Ainsi, lors d’un cycle de 25% en position haute et 75% en position basse, la LED sera moins brillante que pour un cycle à 50%/50%.
En d’autre terme, cela signifie qu’on va faire clignoter très vite les LEDs; tellement vite que l’œil ne percevra qu’une lumière continue. Mais plus en augmentera la durée des périodes où la LED est éteinte, moins il y aura de lumière émise; et donc moins la LED semblera brillante.

Les broches capables de supporter du PWM sont identifiées par un symbole suivant « ~ « . Il s’agit des broches 3, 5, 6, 9, 10 et 11, comme à l’image suivante :

Une autre difference, au lieu d’utiliser la fonction digitalWrite, pour utiliser le PWM, on utilise la fonction analogWrite
La valeur du PWM s’étend sur 256 paliers, de 0 (=0%) à 255 (=100%). On peut ainsi définir la valeur PWM souhaitée avec la formule suivante :
Valeur PWM = (pourcentage : 100) x 255
Si vous êtes un matheux, vous pouvez donc facilement exprimer le pourcentage en fonction de ces autres paramètres, comme suit : Pourcentage = (valeur PWM : 255) x 100.
Projet Arduino : Variateur de lumière pour Led sur sortie PWM
int ledPin = 10; //On renomme la broche 10 en "ledPin"
int timer = 100 ; //On définit une durée de 0,1 seconde pour la variable t imer
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
// LED à 0%.
analogWrite(ledPin, 0);
delay(timer);
// LED à 19.6%.
analogWrite(ledPin, 50);
delay(timer);
// LED à 39.2%.
analogWrite(ledPin, 100);
delay(timer);
// LED à 58.8%.
analogWrite(ledPin, 150);
delay(timer);
// LED à 78.4%.
analogWrite(ledPin, 200);
delay(timer);
// LED à 100%.
analogWrite(ledPin, 255);
delay(timer);
}
Projet Arduino : Modifier la luminosité d’une LED linéairement
int ledPin = 10; //On renomme la broche 10 en "ledPin"
void setup() {
}
void loop() {
// Variation du min au max par addition de 5 jusqu'à 256
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5)
{
// Définition de la valeur de luminosité (de 0 à 255)
analogWrite(ledPin, fadeValue);
// Attente de 30 millisecondes entre chaque palie r pour voir l'effet.
delay(30);
}
// Variation du max au min par soustraction de 5 depuis 256
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue - = 5)
{
// Définition de la valeur de luminosité (de 0 à 255)
analogWrite(ledPin, fadeValue);
// Attente de 30 millisecondes entre chaque pal ier pour voir l'effet.
delay(30);
}
}
- Site officiel Arduino : www.arduino.cc
- Autre site à visiter pour apprendre l’éléctronique : www.electronique-et-informatique.fr/
Merci bien
Bien