Étape 5: Analog Code Arduino
Pour faire cette chaque LED nécessite 3 broches PWM. Comme l’Arduino a seulement 6 broches PWM seulement deux LEDs RVB peut être contrôlées de cette façon à la fois.
En ce qui concerne le code, nous allons utiliser la fonction analogWrite (pin, valeur), pour plus de détails, visitez la référence du code sur Arduino.cc )
Pour commencer à jouer avec le votre LED de manière analogique tout simplement...
- Copiez et collez le code ci-dessous dans un sketch Arduino vide
- Compiler et charger le croquis sur votre carte Arduino
- Exemple on va commencer en tournant le magenta de LED (vous pouvez ensuite jouer avec la couleur de le changer d’autres paramètres prédéfinis ou définir vos propres)
- Ensuite mettez en commentaire la ligne de l’exemple 1 (ajouter / /)
- Un commentaire exemple 2 (supprimer les / /)
- Compiler et télécharger l’exemple de votre planche.
- Maintenant, regardez votre LED s’avère une couleur verte blanchâtre, changer les chiffres dans le tableau [] tempColor pour modifier la couleur affichée
- Exemple 2 en commentaire (ajouter / /)
- Exemple 3 de décommenter (supprimer les / /)
- Compiler et télécharger le programme sur votre planche
- Regardez comme les fondus de LED du rouge au vert à bleu. Pour voir comment cela est accompli coup d’oeil à la fonction fadeToColor()
- Ensuite obtenir codage et faire votre propre plaisir programmes de changement de couleur
(Une petite vidéo du programme de test)
Annexe 1: _RGBL_AnalogTest
---bof---préambule RGBL-Analog / / RGB LED pinsint ledAnalogOne [] = {3, 5, 6} ; les trois broches des analogique 3 LED = redPin, 5 = greenPin, 6 = bluePin //These bornes doivent être PWMint ledAnalogTwo [] = {9, 10, 11} ; les trois broches du deuxième analogique 9 LED = redPin, 10 = greenPin, 11 = bluePin //These bornes doivent être PWM / / couleurs définies (différentes valeurs de RVB (rouges, verts, bleus) des couleurs//(to add your own ie. fuscia experiment and then add to the list) const byte [rouge] = {255, 0, 0}; const byte [ORANGE] = {83, 4, 0}; const byte jaune [] = {255, 255, 0}; vert de const byte [] = {0 255, 0} ; BLEU de const byte [] = {0, 0, 255} ; const byte [] INDIGO = {4, 0, 19} ; const byte [VIOLET] = {0, 22, 23} ; const byte [CYAN] = {0, 255, 255} ; const byte MAGENTA [] = {0, 255, 255} ; BLANC de const byte [] = {255, 255, 255} ; NOIR de const byte [] = {0, 0, 0} ; Rose de const byte [] = {4, 158, 79} ; ---eof---RGBL-Analog Preamblevoid setup() {pour (int j’ai = 0; j’ai < 3; i ++) {pinMode (ledAnalogOne [i], sortie); //Set la LED trois broches comme sorties pinMode (ledAnalogTwo [i], sortie); //Set la LED trois broches comme sorties} setColor (ledAnalogOne, noir); //Turn hors conduit 1 setColor (ledAnalogTwo, noir); //Turn off led 2} void loop() {/ * exemple 1 - défini les couleurs définies à une couleur connue (vous pouvez utiliser une des couleurs définies ci-dessus) * / setColor (ledAnalogOne MAGENTA) ; / * Exemple 2 - toute couleur définie la LED à une couleur vous comme * / //byte tempColor [] = {12,34,12} ; la valeur RVB (rouge, gren bleu) d’une couleur afficher //setColor (ledAnalogOne, tempColor) ; / * Exemple 3 - Fading Fade la LED entre deux couleurs (cela va aller du rouge au vert au bleu puis au rouge) * / //fadeToColor (ledAnalogOne, rouge, vert, 10) ; fadeToColor prend 4 paramètres //ledAnalogOne - un tableau avec 3 valeurs définissant les broches rouges, verts et bleus de la //RED LED - c’est la couleur de début //GREEN - c’est la fin couleur //10 - le délai (en millisecondes entre les mises à jour) (détermine la vitesse du fondu) //fadeToColor (ledAnalogOne, vert, bleu, 10) ; Passe du vert au bleu //fadeToColor (ledAnalogOne, bleu, rouge, 10) ; Passe du bleu au rouge} / * définit la couleur de la LED pour n’importe quelle valeur RGB led - (int tableau de trois valeurs définissant les broches de la LED (menaient [0] = redPin, a conduit [1] = greenPin, a conduit [2] = bluePin)) couleur - (tableau d’octets de trois valeurs defing une couleur RVB pour afficher (couleur [0] = nouvelle valeur rouge, couleur [1] = nouvelle valeur verte, couleur [2] = nouvelle valeur rouge * / void setColor (int * a conduit byte * couleur) {pour (int j’ai = 0; j’ai < 3; i ++) {//iterate par l’intermédiaire de chacune des trois broches (rouge vert bleu) analogWrite (conduit [i], 255 - color[i]) ; //set la valeur de sortie analogique de chaque goupille pour la valeur d’entrée (c’est à dire led [0] (pin rouge) à 255-couleur [0] //we (couleur rouge d’entrée) utiliser 255 - la valeur car nos LED RGB est anode commune , cela signifie une couleur est pleine sur nous lors de la sortie analogWrite (broches, 0) //and hors de nous lors de la sortie analogWrite (broches, 255). }} / * Une version de setColor qui prend une couleur prédéfinie (nécessaire pour permettre les couleurs prédéfinies de const int * / void setColor (int * conduit, const byte * couleur) {byte tempByte [] = {color [0], [1] de couleur, couleur [2]}; setColor (led, tempByte);} / * S’estompe la LED d’une couleur de départ à une couleur de fin à fadeSpeed led - (int tableau de trois valeurs définissant les broches de la LED (menaient [0] = redPin, a conduit [1] = greenPin, a conduit [2] = bluePin)) startCcolor - (tableau d’octets de trois valeurs defing la couleur RGB de départ (startColor [0] = start valeur rouge, startColor [1] = start vert valeur, startColor [2] = start valeur rouge endCcolor - (tableau d’octets de trois valeurs defing la couleur de RVB finie (endColor [0] = fin de la valeur rouge , endColor [1] = fin de valeur vert, endColor [2] = fin rouge valeur fadeSpeed - c’est le délai en millisecondes entre les étapes, définit la vitesse de la fondu * / void fadeToColor (int * a conduit octets * startColor, byte * endColor, int fadeSpeed) {int changeRed = endColor [0] - startColor [0]; //the différence dans les deux couleurs pour la couche rouge int changeGreen = endColor [1] - startColor [1]; //the différence dans les deux couleurs pour la couche verte int changeBlue = endColor [2] - startColor [2]; //the différence dans les deux couleurs pour les étapes d’int canal bleu = max(abs(changeRed),max(abs(changeGreen), abs(changeBlue))) ; faire le nombre d’étapes de changement le changement de canal pour (int j’ai = 0; j’ai < étapes; i ++) {//iterate pour le canal avec le maximum changer newRed octets = startColor [0] + (j’ai * changeRed / étapes); //the newRed intensité dépend de l’intensité de démarrage et le changement déterminé ci-dessus newGreen octets = startColor [1] + (j’ai * changeGreen / étapes); //the newGreen intensité octet newBlue = startColor [2] + (j’ai * changeBlue / étapes); //the newBlue intensité newColor Byte = {newRed newGreen, newBlue} ; Définir un tableau de couleur RVB pour la nouvelle couleur setColor (led, newColor) ; La valeur de la LED à la delay(fadeSpeed) de la valeur calculée ; Delay fadeSpeed millisecondes avant de passer à la prochaine couleur} setColor (led, endColor) ; La LED doit être à l’endColor mais valeur endColor pour éviter les erreurs d’arrondi} / * une version de fadeToColor qui prend des couleurs prédéfinies (nécessaire pour permettre les couleurs prédéfinies de const int * / void fadeToColor (int * conduit, const byte * startColor, const byte * endColor, int fadeSpeed) {byte tempByte1 [] = {startColor [0], startColor [1], [2] de startColor}; tempByte2 Byte = {endColor [0], endColor [1], [2] d’endColor}; fadeToColor (led, tempByte1 tempByte2, fadeSpeed);}