Étape 7: Conduite plus LEDs
Bon, avouons-le juste : un peu clignotant LED n’est pas si impressionnant... Donc dans cette étape, je vais montrer comment vous pouvez conduire plus de LEDs.
Calcul des valeurs de résistance pour nos LEDs
Avant de commencer, nous aurons calculer la résistance à utiliser en série avec nos LED. La formule que nous aurons besoin, est la Loi d’Ohm: R = V⁄j’ai
Mais le problème ici est que nous ne savons pas la tension et le courant de la résistance encore... Nous allons trouver !
Nous nous connectons à la résistance en série avec nos LED, et nous savons que la tension de l’Arduino sortie de broche est 5v, donc si l'on y ajoute la tension de la diode à la tension de la résistance, cela doit être égal à 5v. Donc: VR + VL = 5v et VR = 5v - VL.
Puisqu’ils sont en série, cela signifie aussi que tous les électrons qui passent par la LED, passera par la résistance aussi bien. Courant est défini comme la quantité d’électrons par unité de temps, nous savons que le courant qui traverse la résistance est égal au courant par l’intermédiaire de la LED. Donc : J’aiR = IL.
Maintenant, nous pouvons utiliser la Loi d’Ohm pour trouver la résistance de notre résistance : R = VR/iR = (5v - VL) / jeL
(image 1)
Si vous utilisez 3.3V Arduino, vous pouvez simplement remplacer le 5v avec 3.3V. C’est juste la tension d’alimentation, il peut être n’importe quoi.
Les valeurs de VL et IL se trouvent dans la fiche technique de votre LED, ou vous pouvez utiliser le tableau ci-dessous.
J’aiL serais moins de 20mA, dans le cas contraire, vous allez tuer votre LED. Mais la plupart des tss.
Notez que vous devrez diviser cette valeur (en milliampères) par 1000, pour obtenir des ampères, l’unité de mesure de courant. Dans le cas contraire, vous n’obtiendrez pas votre réponse en Ohms (mais en kilo-ohms à la place).
VL est la chute de tension directe de la LED. (Les LEDs qui émettent de luminothérapie inférieur, avec des longueurs d’onde, comme le rouge et infrarouge ont une chute de tension beaucoup plus faible que la lumière avec les photons énergétiques plus élevés, comme la lumière bleue ou ultraviolette).
Couleur | Tension (VL) |
Rouge | 1.7V - 2.2V |
Orange | 2.0V |
Jaune | 2.1V |
Vert | 2.2V |
Bleu | 3.2V - 3.8V |
Blanc | 3.2V - 3.8V |
C’est juste une approximation, cependant, il ne sera pas vrai pour chaque LED.
Vous ne sera pas probablement ont une résistance de la valeur exacte que vous avez calculé juste, donc arrondir à la valeur suivante dans la série E-12. Cette série a seulement les valeurs 1.0, 1.2, 1.5, 1.8, 2.2, 27, 3.3, 3,9, 4.7, 5.6, 6,8, 8.2 et ces valeurs multiplié par une puissance de dix, comme 10, 100, 1 000, 10 000 etc..
Par exemple, mon résultat était 65Ω, alors j’ai pris une résistance de 68Ω.
Il est préférable de prendre une résistance de valeur supérieure, afin que vous ne tuez pas vos LED.
Brancher les LEDs à l’Arduino
Comme je l’ai expliqué plus tôt, une LED est fondamentalement une diode, donc il permet le passage actuel que dans un sens. Si nous nous connectons à la LED l’autre manière autour, rien ne se passera.
Une LED est une anode et une cathode : représentation schématique, le sens de la flèche est la direction du flux de courant conventionnel, afin qu’il pointe vers le côté négatif : la cathode.
Lorsque vous prenez un coup d’oeil étroit à une LED, vous verrez qu’un côté est plat, et l’autre est ronde. En outre, une jambe est plus courte que l’autre : le côté plat, avec la jambe courte est la cathode, et nous allons connecter ce côté à la négative, ou la masse de l’Arduino.
Il n’importe pas où vous mettez la résistance, tant que c’est en série avec la LED, donc vous pouvez le brancher à l’anode ou la cathode.
Si nous savons que seul del sera allumé en même temps, nous pouvons utiliser une résistance pour toutes nos LEDs.
Jetez un oeil à images 2-3-4, puis connecter la résistance à la terre et l’un des rails horizontaux de votre maquette et une diode avec la jambe courte dans le même rail et la longue jambe dans l’axe de 12 sur l’Arduino.
Notez que vous devez calculer la résistance spécifique pour vos LED. Vous pouvez utiliser la formule ci-dessus, ou utilisez un outil en ligne, ou une application (que j’utilise cet outil et ce soft). Si vous cliquez sur les points d’interrogation en regard des champs, l’outil vous donnera quelques informations supplémentaires, et l’application a un menu déroulant pour sélectionner la couleur.
Si vous êtes dans le doute, ou - comme moi - tout simplement trop paresseux pour chercher et trouver la résistance de droite, vous pouvez simplement utiliser toute résistance, entre 220Ω et 330Ω. Cela est uniquement valable si vous l’utilisez avec un Arduino 5v ! 270Ω et 330Ω sont un peu élevés à utiliser avec un Arduino 3v3, dans ce cas, utilisez quelque chose entre 100Ω et 220Ω. Si vous souhaitez utiliser une LED avec une tension plus élevée, vous aurez besoin de le calculer.
Lorsque vous avez connecté la LED et la résistance à l’Arduino, vous pouvez remplacer la broche 13 dans l’exemple de Blink par 12. Vous pouvez utiliser le raccourci CTRL + F: dans le champ « Recherche », entrez 13, dans le champ « Remplacer par », entrez 12, puis cliquez sur « Remplacer tout ». Maintenant télécharger le croquis de votre Arduino : la LED vous avez attaché doit maintenant clignoter.
Toujours pas impressionné ? Non ? Eh bien, tu as raison...
Mais maintenant vous avez les bases, nous pouvons faire quelque chose de plus spectaculaire...
LED plus
Branchez 5 LEDs supplémentaires, aux broches 2, 4, 6, 8 et 10 avec leurs jambes plus longues et leur jambe plus courte sur le même rail sur le montage d’essai comme la LED sur la broche 12 et la résistance.
Maintenant télécharger le fichier zip avec les autres exemples, l’extraire et ouvrir Blink6-a dans l’IDE Arduino.
Si vous vous souvenez de l’exemple de clignotement, il ne devrait pas être trop difficile de prévoir ce que fait ce programme. Transférez-le sur votre Arduino et vérifier si votre hypothèse est correcte !
Optimiser le code
Si vous regardez de plus près, vous verrez que certaines pièces du code sont juste 6 fois les mêmes commandes, grâce à un numéro de pin différentes... Eh bien, il existe un moyen de résoudre ce problème : nous l’appelons le de la boucle for.
Ouvrir l’esquisse de Blink6-b depuis le fichier zip. Quand vous le télécharger à l’Arduino, vous verrez qu’il fait exactement le même que Blink6-a, mais il a beaucoup moins de lignes de code.
C’est grâce aux deux pour les boucles qui sont utilisés.
Mais avant je peux expliquer la boucle for, je vais devoir tout d’abord expliquer comment fonctionnent les variables :
Sur la première ligne, il y a une nouvelle expression ' int delayTime = 200; » Il s’agit de la déclaration de la variable « delayTime ». Une variable est juste un morceau de mémoire, où vous pouvez stocker assez bien ce que vous voulez. Une variable a un type de données, un nom et une valeur : dans ce cas, le type de données est « int »: un entier, un nombre entier et peut positif ou négatif. Le nom « delayTime », c’est juste un nom arbitraire vous donner la variable, elle peut avoir des lettres et des chiffres dedans et quelques symboles comme un trait de soulignement. Si le nom comporte plusieurs mots, lettres capitales sont utilisés pour chaque nouveau mot, parce que vous ne pouvez pas utiliser les espaces. Choisir des noms appropriés pour vos variables fera une énorme différence dans la lisibilité de votre code. Avec « int delayTime; », la variable est correctement déclarée, mais n’a pas une valeur encore. Assigner une valeur initiale à la variable est appelée lors de l’initialisation. Dans ce cas, nous initialisons la variable /Delay à 200. Maintenant chaque fois que nous utilisons « delayTime » dans notre code, il est remplacé par le nombre de 200. Si vous lisez une variable sans la première initialisation, il vous donnera juste 0, dans le meilleur des cas, mais probablement juste une valeur aléatoire qui se trouvait dans cet endroit de la mémoire, pouvant provoquer des erreurs dans votre programme.
Il faut également savoir qu’une variable a une soi-disant portée. Dans cet exemple, delayTime est déclaré en haut, donc c’est une variable globale. Cela signifie que vous serez en mesure d’y accéder à l’intérieur de chaque fonction, chaque boucle, dans l’ensemble du programme. Une variable peut aussi être locales, ce qui signifie que vous ne pouvez l’utiliser dans le champ d’application dans lequel il est défini. Par exemple, si nous devions passer la première ligne à l’installation, nous obtiendrions l’erreur
« delayTime » n’a pas été déclarée dans cette portée
Quand nous essayerions d’y accéder dans la boucle principale (delay(delayTime);), parce qu’il s’agit d’une portée différente que le programme d’installation.
Mais les variables locales peuvent être utiles, lorsque vous n’avez pas beaucoup de mémoire à revendre, par exemple, puisque le local sont « supprimé » lorsque vous quittez le champ d’application, elles sont déclarées dans.
La plupart du temps, les limites de portée sont supports incurvés.
Mais pourquoi utiliser cette variable ? Eh bien, au lieu de devoir modifier toutes les delay(200) ; fonctions, nous pouvons changer juste la première ligne. Dans ce cas, il n’est pas très utile, mais si vous avez vraiment grand programme, c’est vraiment important.
Référence de l’Arduino : variables
Référence de l’Arduino : int
Référence de l’Arduino : portée des variables
Une autre chose utile sur les variables, c’est que vous pouvez les changer, alors que votre code s’exécute. Et c’est exactement ce qui se passe dans une boucle for. La première partie entre crochets est simplement la déclaration d’une certaine variable « i », et nous les initialisez-la à 2. La partie suivante est "J’ai < = 12', cela signifie que la boucle for répétera tant que j’ai est inférieure ou égale à 12. La troisième et dernière partie ' i = i + 2' signifie que chaque fois que la boucle se répète, la valeur d’i sera prolongée par 2.
Tout cela signifie qu’il s’exécutera tout d’abord le code à l’intérieur des crochets avec une valeur de 2 car moi, ensembles broche 2 en tant que sortie. Maintenant elle a atteint la fin du code, donc 2 est ajouté à i → i est maintenant égal à 4 et l’exécution du code à nouveau avec cette nouvelle valeur pour i: broche 4 est définie en tant que sortie. 2 est ajouté encore une fois, j’ai est maintenant égal à 6, le code est exécuté à nouveau, 2 est ajouté... et ainsi de suite. Jusqu'à ce que j’ai est égale à 12. Lorsque la boucle est exécutée pour i = 12, tout est normal, mais lorsqu’il atteint la fin du présent code et 2 est ajoutée encore une fois, je ne respecte pas la condition ' j’ai ≤ 12' (j’ai est maintenant 14). Le programme s’arrête la boucle for.
Chaque cheville avec une LED attachée est maintenant défini en tant que sortie, avec seulement deux lignes de code, au lieu de six.
Référence de l’Arduino : boucle for
Résumé :
Trouver la bonne résistance pour vos LED
- Recherchez la tension directe dans la fiche technique de la LED, ou dans le tableau ci-dessus. Il s’agit de VL
- Chercher le courant vers l’avant dans la fiche technique : les LED, ou utiliser quelque chose entre 2 et 20 ma et convertir ce nombre en ampères. Il s’agit jeL
- Trouver la tension de votre alimentation, 5 v ou 3,3 v pour microcontrôleurs plus comme Arduino. Il s’agit de Vs
- Maintenant utiliser cette formule pour trouver la valeur de la résistance: R = (Vs - VL) / j’aiL
- Autour de cette valeur maximale de la résistance plus proche de vous que vous avez. Vous pouvez toujours utiliser une valeur supérieure à la résistance que vous avez calculé, mais si vous utilisez une résistance plus faible, cela réduira considérablement la durée de vie de vos LED. Si la résistance est trop élevée, le voyant sera très faible.
- Le côté rond de la LED, avec la jambe plus longue, est l’anode et le côté positif.
- Le côté plat de la LED, avec la jambe courte, est la cathode et le côté négatif.
- CTRL + F ouvre la fenêtre Rechercher/Rechercher/Remplacer dans l’IDE Arduino
- int delayTime ; Il s’agit de la déclaration d’une variable de type de données int, appelé « delayTime »
- int delayTime = 200 ; Il s’agit de la déclaration d’une variable de type de données int, appelé « delayTime » et son initialisation à une valeur de 200.
- Les variables globales sont accessibles partout dans le programme, les variables locales uniquement dans la portée lorsqu’elles ont été déclarées.
- pour (int i = 0; j’ai < 10 ; j’ai = i + 1) {} est une boucle qui initialise la variable j’ai une valeur de 0, ajoute 1 au j’ai chaque fois qu’il se répète et se répète tant que j’ai < 10 (10 fois).
Bonus : Calculer la puissance dissipée dans la résistance
Si vous utilisez une alimentation de 5v, comme celle sur l’Arduino, une résistance normale ¼ watt sera suffisant, mais lorsque vous utilisez une alimentation de tension plus élevée, ou une LED qui attire le plus courant, la puissance dissipée dans la résistance sera trop élevée, et il brûlera.
Par conséquent, nous devons calculer quelle est la puissance dissipée dans la résistance.
(Image 6)
La formule pour calculer la puissance est P = V∙I. Alors seulement, nous pouvons calculer la tension aux bornes de la résistance : la tension d’alimentation moins la tension aux bornes de la LED: VR = Vs - VL.
Et le courant qui traverse la résistance est le même que le courant qui traverse la LED: jeR = IL.
Donc: PR = (Vs - VL) ∙IL
Dans l’exemple illustré sur l’image 6, la puissance dissipée dans la résistance est très faible, donc une résistance de ¼ watt sera suffisante, mais si la valeur calculée est supérieure, vous aurez besoin un plus puissant (= plus épais) résistance.
Ces valeurs sont, cependant, seulement une hypothèse théorique.
Si vous voulez vraiment savoir la puissance réelle de la résistance se dissipe, vous devrez mesurer le courant ou la tension à travers elle, ou dans le meilleur des cas, tous les deux.
Dans le cas, vous pouvez mesurer aussi bien le courant et la tension (cas A), vous pouvez utiliser la même formule.
Si vous le pouvez, cependant, ne mesurent qu’une de ces valeurs, vous pouvez utiliser la Loi d’Ohm pour substituer la tension ou le courant dans la formule de la puissance. (cas B et C)
Seulement les cas A vous donne la dissipation de puissance réelle, dans les cas B et C, vous aurez besoin de la valeur de la résistance. La valeur écrite sur la résistance a une certaine tolérance, donc vous aurez quelques écart dans votre puissance ainsi.