RGB LED Tutorial (med en Arduino) (RGBL) (5 / 6 steg)
Steg 5: Analog Arduino kod
Att göra detta varje LED kräver 3 PWM stift. Arduino har endast 6 PWM stift kan endast två RGB lysdioder kontrolleras detta sätt på en gång.
När det gäller koden kommer vi använda funktionen analogWrite (pin, värde), för mer information besök koden hänvisningen på Arduino.cc )
Att få spela med den din lysdioder på ett analogt sätt helt enkelt...
- Kopiera och klistra in koden nedan i en tom Arduino skiss
- Kompilera och ladda upp skissen till din Arduino ombord
- Exempel en startar genom att vrida LED magenta (du kan leka med färg att ändra till andra förinställningar, eller definiera egna)
- Nästa kommentera ut raden exempel 1 (lägga till / /)
- O-kommentera exempel 2 (ta bort den / /)
- Kompilera och ladda upp exemplet till din styrelse.
- Nu titta på din LED visar en vitaktig grön färg, ändra siffrorna i matrisen tempColor [] för att ändra visas färgen
- Kommentera bort exempel 2 (lägga till / /)
- Avkommentera exempel 3 (ta bort den / /)
- Kompilera och ladda upp programmet till din styrelse
- Titta på den LED bleknar från rött till grönt till blått. Att se hur detta är accompished titt till funktionen fadeToColor()
- Nästa få kodning och göra din egen kul färg ändra program
(En liten video av testprogrammet)
Tillägg 1: _RGBL_AnalogTest
---bof---RGBL-Analog ingressen / / RGB LED pinsint ledAnalogOne [] = {3, 5, 6}; de tre stiften på de första analoga LED 3 = redPin, 5 = greenPin, 6 = bluePin //These stift måste vara PWMint ledAnalogTwo [] = {9, 10, 11}; tre stiften i de andra analoga LED 9 = redPin, 10 = greenPin, 11 = bluePin //These stift måste vara PWM / / definierade färger (olika RGB (röd, grön, blå) värden för färger//(to add your own ie. fuscia experiment and then add to the list) const byte [röd] = {255, 0, 0}, const byte [ORANGE] = {83, 4, 0}, const byte gul [] = {255, 255, 0}, const byte grön [] = {0 255, 0}; CONST byte blå [] = {0, 0, 255}; CONST byte INDIGO [] = {4, 0, 19}; CONST byte VIOLETT [] = {23, 0, 22}; CONST byte CYAN [] = {0, 255, 255}; CONST byte MAGENTA [] = {255, 0, 255}; CONST byte vit [] = {255, 255, 255}; CONST byte svart [] = {0, 0, 0}; CONST byte rosa [] = {158, 4, 79}; ---eof---RGBL-Analog Preamblevoid setup() {för (int jag = 0; jag < 3; i ++) {pinMode (ledAnalogOne [i], produktionen); //Set tre LED stift som utgångar pinMode (ledAnalogTwo [i], produktionen); //Set tre LED stift som resultat} setColor (ledAnalogOne, svart); //Turn off ledde 1 setColor (ledAnalogTwo, svart); //Turn off ledde 2} void loop() {/ * exempel 1 - definierade färger ställer till en känd färg (du kan använda någon av de ovan definierade färgerna) * / setColor (ledAnalogOne MAGENTA); / * Exempel 2 - varje färguppsättning LED till någon färg du gillar * / //byte tempColor [] = {12,34,12}. RGB (röd, blå gren) värdet för en färg att Visa //setColor (ledAnalogOne, tempColor); / * Exempel 3 - Fading blekna LED mellan två färger (detta kommer att gå från rött till grönt till blått sedan tillbaka till röd) * / //fadeToColor (ledAnalogOne, röd, grön, 10); fadeToColor tar 4 parametrar //ledAnalogOne - en matris med 3 värden definierar de röda, gröna och blå stiften på LED //RED - detta är Startfärg //GREEN - detta är slutet färg //10 - fördröjning (i millisekunder mellan uppdateringar) (bestämmer hastigheten hos fade) //fadeToColor (ledAnalogOne, grön, blå, 10); Bleknar från grönt till blått //fadeToColor (ledAnalogOne, blå, röd, 10); Bleknar från blått till rött} / * anger färgen på LED RGB värde ledde - (int matris med tre värden definierar lysdioder stiften (ledde [0] = redPin, ledde [1] = greenPin, ledde [2] = bluePin)) färg - (byte-array av tre värden defing en RGB-färg att Visa (färg [0] = nya röda värde, färg [1] = nya gröna värde, färg [2] = nya röda värde * / annullera setColor (int * ledde byte * färg) {för (int jag = 0; jag < 3; i ++) {//iterate genom var och en av tre stift (röd grön blå) analogWrite (ledde [i], 255 - color[i]); //set analog utgång värdet av varje stift till indatavärdet (dvs led [0] (röd pin) till 255-färg [0] (röd ingång färg) //we använda 255 - värdet eftersom våra RGB LED är gemensam anod , innebär en färg är full på när vi utgång analogWrite (pin, 0) //and bort när vi utgång analogWrite (pin, 255). {}} / * En version av setColor som tar en fördefinierad färg (nödvändigt att tillåta const int fördefinierade färger * / annullera setColor (int * ledde, const byte * färg) {byte tempByte [] = {färg [0], [1], färg [2]}; setColor (led, tempByte);} / * Bleknar LED från en Startfärg till en Slutfärg på fadeSpeed ledde - (int matris med tre värden definierar lysdioder stiften (ledde [0] = redPin, ledde [1] = greenPin, ledde [2] = bluePin)) startCcolor - (bitmatris tre värden defing start RGB-färgen (startColor [0] = start röda värde, startColor [1] = start grön värde, startColor [2] = start röd värde endCcolor - (byte-array av tre värden defing färdiga RGB-färgen (endColor [0] = slutet röd värde , endColor [1] = slut för den gröna värde, endColor [2] = slutet röd värde fadeSpeed - detta är fördröjningen i millisekunder mellan stegen, definierar hastigheten på fade * / void fadeToColor (int * ledde byte * startColor, byte * endColor, int fadeSpeed) {int changeRed = endColor [0] - startColor [0]; //the skillnaden i två färger för den röda kanalen int changeGreen = endColor [1] - startColor [1]; //the skillnaden i två färger för den gröna kanalen int changeBlue = endColor [2] - startColor [2]. //the skillnaden i de två färgerna för de blå kanalen int steg = max(abs(changeRed),max(abs(changeGreen), abs(changeBlue))); ändra antalet förändring steg högsta kanal (int jag = 0; jag < steg; i ++) {//iterate för kanalen med maximalt ändra byte newRed = startColor [0] + (jag * changeRed / steg); //the newRed intensitet beroende på start intensiteten och ändringen ovan byte newGreen = startColor [1] + (jag * changeGreen / steg); //the newGreen intensitet byte newBlue = startColor [2] + (jag * changeBlue / steg); //the newBlue intensitet byte newColor [] = {newRed newGreen, newBlue}; Definiera en RGB färg matris för den nya färgen setColor (led, newColor); Ange LED till det beräknade värdet delay(fadeSpeed); Dröjsmål fadeSpeed millisekunder innan nästa färg} setColor (led, endColor); LAMPAN bör vara på endColor men in på endColor för att undvika avrundningsfel} / * en version av fadeToColor som tar fördefinierade färger (nödvändigt att tillåta const int fördefinierade färger * / void fadeToColor (int * ledde const byte * startColor, const byte * endColor, int fadeSpeed) {byte tempByte1 [] = {startColor [0], startColor [1], startColor [2]}; byte tempByte2 [] = {endColor [0], endColor [1], endColor [2]}; fadeToColor (led, tempByte1 tempByte2, fadeSpeed);}