Stap 5: Analoge Arduino Code
Vereist om te doen deze elke LED 3 PWM pinnen. Zoals de Arduino slechts 6 PWM pinnen heeft kan slechts twee RGB LEDs kan deze manier tegelijk worden gecontroleerd.
In termen van de code zullen we gebruikt u de functie analogWrite (pin, waarde) voor meer informatie bezoek de referentie code op Arduino.cc )
Aan het spelen krijgen met de uw LEDs op analoge wijze gewoon...
- Kopieer en plak de onderstaande code in een lege schets van de Arduino
- Compileren en uploaden van de schets aan de Arduino board
- In het volgende voorbeeld zal men beginnen door te draaien aan de LED magenta (u kunt dan spelen met de kleur te veranderen naar andere presets of definiëren van uw eigen)
- Volgende commentaar uit de voorbeeld 1 lijn (toevoegen / /)
- Un-Comment voorbeeld 2 (verwijderen de / /)
- Compileren en uploaden van het voorbeeld aan uw Raad van bestuur.
- Nu kijken naar uw LED blijkt een witachtige groene kleur, het wijzigen van de getallen in de matrix tempColor [] om de weergegeven kleur veranderen
- Commentaar uit voorbeeld 2 (toevoegen / /)
- Voorbeeld 3 uncomment (verwijderen de / /)
- Compileren en uploaden van het programma naar je board
- Kijk als de LED verdwijnt van rood naar groen naar blauw. Om te zien hoe dit accompished kijken naar de fadeToColor()-functie
- Vervolgens krijgen codering en maken van uw eigen plezier kleur veranderende programma's
(Een kleine video van het testprogramma)
Aanhangsel 1: _RGBL_AnalogTest
---bof---RGBL-analoge preambule / / RGB LED pinsint ledAnalogOne [] {3, 5, 6} =; de drie pinnen van de eerste analoge LED 3 = redPin, 5 greenPin, 6 = bluePin = //These pinnen moet [PWMint ledAnalogTwo] = {9, 10, 11}; de drie pinnen van de tweede analoge LED 9 = redPin, 10 = greenPin, 11 = bluePin //These pinnen moet PWM / / gedefinieerd kleuren (verschillende RGB (rood, groen en blauw)-waarden voor kleuren//(to add your own ie. fuscia experiment and then add to the list) const byte rood [] = {255, 0, 0}; const byte oranje [] = {83, 4, 0}; const byte YELLOW [] = {255, 255, 0}; const byte [] groene = {0 255, 0}; Const byte BLUE [] = {0, 0, 255}; Const byte INDIGO [] = {0, 4, 19}; Const byte VIOLET [] = {0, 23, 22}; Const byte cyaan [] = {0, 255, 255}; Const byte MAGENTA [] = {0, 255, 255}; Const byte WHITE [] = {255, 255, 255}; Const byte BLACK [] = {0, 0, 0}; Const byte PINK [] = {158, 4, 79}; ---eof---RGBL-analoge Preamblevoid Setup {voor (int ik = 0; ik < 3; i ++) {pinMode (ledAnalogOne [i], OUTPUT); //Set de drie LED pins zoals uitgangen pinMode (ledAnalogTwo [i], OUTPUT); //Set de drie LED pinnen als uitgang} setColor (ledAnalogOne, zwart) //Turn uit onder leiding van 1 setColor (ledAnalogTwo, BLACK); //Turn uit onder leiding van 2} void loop {/ * voorbeeld 1 - gedefinieerd kleuren ingesteld op een bekende kleur (u kunt een van de hierboven gedefinieerde kleuren) * / setColor (ledAnalogOne MAGENTA); / * Voorbeeld 2 - elke kleur ingesteld de LED naar een kleur die u als * / [//byte tempColor] = {12,34,12}; de RGB (rood, gren blauw)-waarde voor een kleur weer te geven van //setColor (ledAnalogOne, tempColor); / * Voorbeeld 3 - Fading vervagen de LED tussen twee kleuren (dit zal gaan van rood naar groen naar blauw vervolgens terug naar rood) * / //fadeToColor (ledAnalogOne, rood, groen, 10); fadeToColor neemt 4 parameters //ledAnalogOne - een matrix met 3 waarden definiëren de rode, groene en blauwe pinnen van de LED-//RED - dit is de start kleur //GREEN - dit is het einde kleur //10 - de vertraging (in milliseconden tussen updates) (bepaalt de snelheid van het vervagen) //fadeToColor (ledAnalogOne, groen, blauw, 10); Vervaagt van groen tot blauw //fadeToColor (ledAnalogOne, blauw, rood, 10); Verdwijnt van blauw naar rood} / * de kleur van de LED op een RGB-waarde led - Sets (int matrix met drie waarden definiëren de LEDs pinnen (leidde [0] = redPin, leidde [1] = greenPin, leidde [2] = bluePin)) kleur - (byte-matrix van drie waarden defing een RGB-kleur weer te geven (kleur [0] = nieuwe waarde voor rood, kleur [1] = nieuwe groenwaarde, kleur [2] = nieuwe rode waarde * / void setColor (int * geleid byte * kleur) {voor (int ik = 0; ik < 3; i ++) {//iterate door elk van de drie pinnen (rood groen blauw)-analogWrite (geleid [i], 255 - color[i]); //set de waarde van de analoge uitgang van elke pin aan de invoerwaarde (dwz led [0] (rode pin) tot 255-kleur [0] (input rood) //we gebruiken, 255 - de waarde omdat onze RGB LED gemeenschappelijk anode is , dit betekent dat een kleur is vol op wanneer we analogWrite (pin, 0) uitgang //and af wanneer we uitgang analogWrite (pin, 255). }} / * Een versie van setColor, waarmee een vooraf gedefinieerde kleur (nodig zodat const int vooraf gedefinieerde kleuren * / void setColor (int * geleid, const byte * kleur) {byte tempByte [] = {kleur [0], kleur [1], kleur [2]}; setColor (led, tempByte);} / * Verdwijnt de LED van een kleur aan een eindkleur op fadeSpeed led - (int matrix met drie waarden definiëren de LEDs pinnen (leidde [0] = redPin, leidde [1] = greenPin, leidde [2] = bluePin)) startCcolor - (byte-matrix van drie waarden defing de start RGB-kleur (startColor [0] = start waarde voor rood, startColor [1] = start groene waarde, startColor [2] = start waarde voor rood endCcolor - (byte-matrix van drie waarden defing de afgewerkte RGB-kleur (endColor [0] = einde waarde voor rood , endColor [1] = einde groenwaarde, endColor [2] = einde waarde voor rood fadeSpeed - dit is de vertraging in milliseconden tussen stappen, bepaalt de snelheid van de fade * / void fadeToColor (int * leidde byte * startColor, byte * endColor, int fadeSpeed) {int changeRed = endColor [0] - startColor [0]; //the verschil in de twee kleuren voor de rode kanaal int changeGreen = endColor [1] - startColor [1]; //the verschil in de twee kleuren voor de groene kanaal int changeBlue = endColor [2] - startColor [2]; //the verschil in de twee kleuren voor het blauwe kanaal int stappen = max(abs(changeRed),max(abs(changeGreen), abs(changeBlue))); het aantal stappen wijzigen de maximale verandering aanbrengen voor (int ik = 0; ik < stappen; i ++) {//iterate voor het kanaal met de maximum wijzigen byte newRed startColor [0] = + (ik * changeRed / stappen); //the newRed intensiteit afhankelijk van de intensiteit van de start en de wijziging bepaald boven byte newGreen = startColor [1] + (ik * changeGreen / stappen); //the newGreen intensiteit byte newBlue startColor [2] = + (ik * changeBlue / stappen); //the newBlue intensiteit byte [newColor] = {newRed newGreen, newBlue}; Definiëren van een RGB-kleur matrix voor de nieuwe kleur setColor (led, newColor); Stel de LED op de berekende waarde delay(fadeSpeed); Vertraging fadeSpeed milliseconden voordat u naar de volgende kleur op} setColor (led, endColor); De LED moet worden op de endColor maar endColor instellen om te voorkomen dat afrondingsfouten} / * een versie van fadeToColor waarmee vooraf gedefinieerde kleuren (nodig zodat const int vooraf gedefinieerde kleuren * / void fadeToColor (int * leidde 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);}