Regardez le tutoriel vidéo

Une diode électroluminescente (DEL) ou simplement LED (Light-Emitting Diode en Anglais) est une source de lumière à semi-conducteur, quand polarisée, elle émet de la lumière.
Les LED sont principalement utilisés pour indiquer l’état des circuits électroniques, par exemple pour indiquer que le courant électrique circule dans le circuit, mais de nos jours, elles sont utilisées dans de nombreuses applications.

Les premières LED émettaient la lumière rouge de faible intensité, mais aujourd’hui une luminosité élevée et en plusieurs couleur est disponible (blanc, bleu, rouge, vert, jaune ou même infrarouge).
Les DEL ont de nombreux avantages par rapport aux ampoules traditionnelles (ampoules au néon ou en incandescence) telles que: basse tension de fonctionnement, la consommation d’énergie très faible, petite taille, la durée de vie élevée, disponible dans de nombreuses couleurs, etc. Dans de nombreuses applications à haut rendement énergétique, les LED tendent à remplacer les ampoules traditionnelles.

Chacun d’entre nous ont commencé à apprendre un nouveau langage de programmation avec le fameux « Hello World » ou « Bonjour tout le monde ». Dans la programmation des microcontrôleurs l’exemple « Bonjour tout le monde » c’est généralement clignoter une LED, dans cet article nous allons apprendre comment faire clignoter une LED avec Arduino.

Raccordement d’une LED

Une diode électroluminescente est semblable à une diode, Comme toute diode elle comporte une anode (borne +) qui est la patte la plus longue et une cathode (borne -) qui est la patte la plus courte.

Pour qu’une LED s’allume il faut obligatoirement relier sa patte à la borne de l’alimentation et sa patte + à la borne + de l’alimentation. Si la LED est branchée à l’envers elle ne s’allumera pas (le courant ne la traversera pas). L’intensité de la lumière émise par une LED dépend de la quantité de courant direct passé à travers le dispositif, mais il faut prendre soin de ne pas dépasser un courant trop fort plus que c’est qui est admissible à travers la LED et aussi ne pas tirer plus de courant que la broche de sortie d’Arduino peut gérer. C’est pourquoi on doit toujours connecter une LED en series avec  une résistance de 470Ω ou 1kΩ , à moins que un courant trop fort est nécessaire pour une application particulière.

Pour réaliser le montage on utilise une Breadboard ou plaque de prototypage qui permet de concevoir des circuits électroniques sans faire de soudure. La figure 1 ci-dessous montre une LED connecté à la broche D7 de l’Arduino. Ceci est l’un des avantages d’Arduino, ça facilite le prototypage. Avec une plaque de prototypage et une carte Arduino, vous pouvez faire des merveilles. La broche d’anode de la diode D7 est connectée à une résistance de 470Ω pour limiter le courant .

Figure 1: une LED sur une plaque de prototypage connectée à la broche D7 d’Arduino

Programmation

Rédigeons un simple Sketch  en vue de clignoter une LED externe connectée au broche numérique (supposons 7) d‘Arduino.  Le temps de marche sera de 2 secondes et celui d’arrêt d’ 1 seconde.

Figure 2: Clignoter une LED connectée à la broche D7 d’Arduino

Arduino attend toujours que vous avez créé deux fonctions: void setup() (configuration) et une boucle void loop(). Pour écrire une fonction, vous lui donnez un nom suivi de deux parenthèses fermés et deux accolades pour regrouper un bloc de codes ensemble. setup () est l’endroit où vous mettez tout le code que vous voulez exécuter une fois au début de votre programme, et loop() contient le noyau de votre programme, qui est exécuté à plusieurs reprises. Nous avons besoin d’un boucle (loop) pour exécuter le code à plusieurs reprises parce Arduino comme d’autres microcontrôleurs, ne ressemble pas à un ordinateur ordinaire, il ne peut pas s’arrêter lors de l’exécution d’un programme, il doit exécuter un code à plusieurs reprises. Lorsque vous alimentez la carte au courant électrique, le code est exécuté, lorsque vous voulez arrêter, vous pouvez simplement couper l’alimentation.

Tout texte commençant par // ou n’importe quel texte entre / * * / est ignoré par Arduino. Ces lignes sont des commentaires, qui sont des notes que vous laissez dans le programme pour vous-même, de sorte que vous pouvez vous rappeler de ce que vous avez fait quand vous avez écrit le code, ou pour quelqu’un d’autre de comprendre votre code.

Explications du programme

Pour que la compilation aboutisse il faut que le texte du programme ne comporte aucune erreur de syntaxe. Cela nécessite de respecter rigoureusement les noms des instructions, l’emploi des parenthèses, des accolades et des crochets ainsi que des virgules et points-virgules.

void setup (): Cette ligne indique à Arduino que le prochain bloc de code sera une fonction nommée setup(). Avec cette ouverture d’accolade: {un bloc de code commence:

pinMode (7, OUTPUT); pinMode() indique à Arduino comment configurer un certain broche. Les broches numériques peuvent être utilisés soit en tant qu’entrée ou sortie, mais nous devons préciser d’abord. Cette fonction a besoin de deux arguments, le premier argument indique à pinMode () quel broche que nous allons configurer et le second argument indique si nous voulons utiliser cette broche en tant qu’entrée ou en sortie. INPUT (Entrée) et OUTPUT (Sortie) sont des constants prédéfinies dans le langage Arduino, Dans ce cas, nous devons définir D7 comme broche de sortie pour contrôler notre DEL.

void loop () {: ceci est où vous spécifiez le morceau de code qui sera répété à plusieurs reprises jusqu’à ce que vous débranchez l’alimentation de la carte Arduino.

digitalWrite (7, HIGH); digitalWrite() active (ou désactive) toute broche qui a été configuré en tant que sortie. Notre fonction digitalWrite() a besoin que vous lui indiquiez quelle broche elle doit modifier et s’il faut forcer l’état électrique de la broche à l’état haut (HIGH) ou bas (LOW), donc cette fonction aura besoins de deux arguments aussi. LOW va éteindre notre LED tandis que HIGH va l’allumer.

delay(1000); Pour faire clignoter notre LED nous devons provoquer un allumage suivi d’une extinction dans la boucle loop() et non dans la fonction de démarrage setup() qui s’execute qu’une seule fois. Nous aurons besoin d’une autre fonction: delay(). veut simplement dire délai et rend le microcontrôleur assis là et ne rien faire pendant la durée de millisecondes que vous passez comme argument, donc ça crée une pause dans l’execution du programme. Milliseconds sont des millièmes de secondes, donc 1000 millisecondes est égal à 1 seconde. Nous pouvons modifier la vitesse de clignotement en modifiant cette valeur de delay(). Dans notre exemple nous allons allumer la LED pendant 2 seconds et l’éteindre pendant 1 second.

Vérifiez et téléverser le code dans votre carte Arduino.

Simuler Arduino avec Proteus ISIS

Proteus est l’un des outils les plus puissants pour simuler des circuits de microcontrôleurs. Suivez ces quelques étapes pour simuler votre circuit Arduino avec Proteus:

  • Exécutez le logiciel Arduino.  À partir du menu Fichier, sélectionnez « Preferences » (Préférences), et régler les paramètres du logiciel ARDUINO comme dans la figure 3 ci-dessous. Cela nous permettra d’obtenir le fichier .HEX après la compilation de notre sketch.

Figure 3: Préférences

  • Compiler votre sketch et copiez l’adresse de l’emplacement du fichier .HEX générer en appuyant sur (CTRL + C)

Figure 4: Copier l’emplacement du fichier .HEX

  • Cliquez-droit sur la carte Arduino dans PROTEUS et coller l’adresse de l’emplacement du fichier .HEX que vous avez copié dans la section du « Program File » comme indiqué sur la figure 5 ci-dessous.

Figure 5: Copier le fichier .HEX

  • Maintenant vous pouvez lancer votre simulation comme indiqué ci-dessous dans la figure 6.

Figure 6: Exécution de la simulation

Vous pouvez télécharger tous les fichiers du projet (projet Arduino et Proteus) ci-dessous ici. Tous les fichiers sont compressés, vous aurez besoin de les décompresser (Télécharger une version gratuite de l’utilitaire Winzip pour décompresser les fichiers).

Télécharger: Blink_LED_Arduino_Project

Télécharger: Arduino_Blink_Proteus