Digispark RGB LED Fader (4 / 7 steg)
Steg 4: Arduino Program
ARDUINO STYRELSEN IDE 1.0.3 KOD
Deklarera alla variabler
int LED1; dessa variabler kommer att användas för att hålla ledde PWM värden
int LED2;
int LED3;
int p0 = 0; / * dessa variabler kommer att tilldela en variabel att ta emot PWM värden och förmedla dem till sina respektive stift * /
int p1 = 1;
int p4 = 4;
float x;
/ * detta en variabel som ska ta emot vinkeln värde från variabel jag. Det här värdet konverteras till radianer i funktionen sinus och används för att generera PWM värden * /
float r; dessa variabler kommer att få de PWM värden som beräknas av tre sinus funktioner
float g;
float b;
Rutinen installationsprogrammet körs en gång när du trycker på reset;
void setup() {
initiera digitals stiftet som en utgång.
pinMode (p0, produktionen); ställer in pin 0 för pwm
pinMode (p1, produktionen); ställer in PIN-kod 1 för pwm
pinMode (p4, produktionen); ställer in stift 4 för pwm
/ * Kör ett diagnostiskt test som kommer att kontrollera att varje färg LED fungerar.
Tänds lysdioderna i följd med en fördröjning på en sekund mellan varje * /
digitalWrite (p0, hög);
Delay(1000);
digitalWrite (p1, hög);
Delay(1000);
digitalWrite (p4, hög);
Delay(1000);
Stänga av lysdioder en efter den andra med en en andra deleay mellan varje
digitalWrite (p0, låg);
Delay(1000);
digitalWrite (p1, låg);
Delay(1000);
digitalWrite (p4, låg);
Delay(1000);
}
loop rutinen körs för evigt om och om igen:
void loop() {
/ * Den för loop genererar ett värde för en variabel i som motsvarar 0 till 360 grader. Jag ökar med 1 med varje iteration. Det omvandlas senare till radianer inom slingan. När jag når 360 återställs det till 0. Detta fastställs av sinus periodiska beteende kul funktioner * /
för (int jag = 0; jag < 360; i ++)
{
konvertera till ett flytande punkt variabel som kan användas med PI
x=float(i);
/ * för att beräkna r, g, b funktionen sinus är modifierad för att öka amplitute (127 *) att skapa en fasförskjutning (x + 1/2 * PI) och (x + 3/2 * PI) Slutligen sinusvåg höjs till illiminate negativa värden under noll genom att lägga till 1 * /
r=127*(sin(x/180*PI)+1);
g=127*(sin(x/180*PI+3/2*PI)+1);
b=127*(sin(x/180*PI+0.5*PI)+1);
konvertera flaot r, g, b till heltal som kan tilldelas till LED PWM nummer
LED1 = int(r);
LED2 = int(g);
LED3 = int(b);
Skriv LED nivåer till p0, p1, p4 (tilldela PWM värden till lysdioder)
analogWrite (p0, LED1);
analogWrite (p1, LED2);
analogWrite (p4, LED3);
vänta på 1/100 sekund
Delay(100);
}}
I detta projekt ett nummer från 0-255 används för att representera 0% - 100% arbetscykel (ljusstyrka), används sinusfunktion för att generera det. Digispark använder sinusfunktion för att generera PWM (pulse bredd modulering). Vi konverterar radianer till grad för röd, grön, blå cykler. Detta används för att ändra språket för datorn att förstå. En liten skillnad från vanlig Arduino styrelser och Digispark är att programmet kompilatorn uppmanas du att bifoga Digispark när den är klar att ladda upp. Om du lämnar den ansluten får du ett kompileringsfel.