RGB sked Light (4 / 6 steg)
Steg 4: Arduino kod
Obs: jag inte skriva här koden själv, det är från ett gammalt projekt till mig där jag lånade denna enkla kod att lära av. Jag minns inte men den ursprungliga författaren. Men jag tror det är från Sparkfun startpaket för att lära sig använda RGB lysdioder.
Ledningarna är sådan att jag använder en common-anod (common ground). Du kan enkelt använda en common-katod setup men du måste ändra koden för att vända toppar och dalar. Arduinoen sjunker anoderna till sina marker och kontrollerar varje enskilda RGB-kanal med PWM stift (Digital) 9, 10, 11. Det spelar ingen roll i vilken ordning. Jag använde en 100 ohms motstånd (1/2 W) före varje LED. Jag gillade inte hur svagt det var med ett högre värde, och eftersom varje LED är bara på under en kort tid det är inte för stor en affär. Jag vet att inte är det korrekta värdet att använda, men det verkar fungera bäst.
Det bör noteras att det ingen spelar roll vilken pin som du ansluter till vilken RGB pin. Med vilket jag menar kan du ansluta grönt till blått och rött till rött och blått till grönt och det kommer fortfarande arbete (eller en kombination). Allt det gör är ändra vilka färger visas vid vilken punkt i tid, som koden kommer att gå igenom varje kombination ändå.
Hursomhelst, här är arduino koden nedan:
int rött = 9. RÖD pin led till PWM stift 9
int grön = 10; GRÖNA pin led till PWM stift 10
int blå = 11; BLÅ nålen led till PWM stift 11
int DELAY_TIME = 10; förändringar som rusas av blekning
int MAX_BRIGHT = 255; Anger maximal ljusstyrka, 255 max ljusstyrka
int COLOR_MIX = 0; variabel ändra de färger som blandas i switch-sats
void fade_in(int x) //loop som gradvis tänds lysdioden med PWM
{
int counter;
för (counter = 0; motverka < x; counter ++)
{
led_mixer (COLOR_MIX, counter);
Delay(DELAY_TIME);
}
}
void fade_out(int x) //loop som gradvis släcks LED med PWM
{
int counter;
för (räknare = x; counter > 0; counter--)
{
led_mixer (COLOR_MIX, counter);
Delay(DELAY_TIME);
}
}
void led_mixer (int färg, int x) //uses switch uttalande att blanda färgkombinationer
{
Switch(Color)
{
fall 0:
analogWrite (röd, x);
bryta;
fall 1:
analogWrite (grön, x);
bryta;
fall 2:
analogWrite (blå, x);
bryta;
fall 3:
analogWrite (blå, x);
analogWrite (grön, x);
bryta;
fall 4:
analogWrite (röd, x);
analogWrite (blå, x);
bryta;
fall 5:
analogWrite (röd, x);
analogWrite (grön, x);
bryta;
standard:
analogWrite (grön, x);
analogWrite (blå, x);
analogWrite (röd, x);
bryta;
}
}
void setup()
{
ingenting för installationsprogrammet
}
void loop() //loop forever
{
fade_in(MAX_BRIGHT); gradvis aktivera LED till max ljusstyrka
fade_out(MAX_BRIGHT); gradvis stänga av lampan
COLOR_MIX ++; öka till nästa färgkombination
IF(COLOR_MIX == 7) //if alla färgkombinationer har visats, återställa cykeln
{
COLOR_MIX = 0;
}
}