Stap 4: Arduino programma
ARDUINO BOARD IDE 1.0.3 CODE
Alle variabelen declareren
int LED1; deze variabelen worden gebruikt voor het houden van de led PWM-waarden
int LED2;
int LED3;
int p0 = 0; / * deze variabelen zal het toewijzen van een variabele te ontvangen PWM waarden en ze doorgeven aan hun respectieve pinnen * /
int p1 = 1;
int p4 = 4;
float x;
/ * Dit is een variabele die ontvangt de hoek waarde van variabele ik. Deze waarde wordt geconverteerd naar radialen in de sinus-functie en worden gebruikt voor het genereren van de PWM-waarden * /
float r; deze variabelen ontvangt de PWM-waarden berekend door de drie sinus functies
vlotter-g;
float b;
de setup-routine wordt uitgevoerd zodra wanneer u drukt op reset;
VOID Setup {}
Initialiseer de digitals pin als uitgang.
pinMode (p0, OUTPUT); ingesteld pin 0 voor pwm
pinMode (p1, OUTPUT); ingesteld op pin 1 voor pwm
pinMode (p4, OUTPUT); ingesteld op pin 4 voor pwm
/ * Voer een diagnostische test die zal controleren of dat elke kleur van de LED werkt.
Hiermee schakelt u de LEDs met een vertraging van een seconde tussen elk opeenvolgend * /
digitalWrite (p0, hoge);
delay(1000);
digitalWrite (p1, hoge);
delay(1000);
digitalWrite (p4, hoge);
delay(1000);
LEDs een na de ander uitschakelen met een een tweede deleay tussen elk
digitalWrite (p0, laag);
delay(1000);
digitalWrite (p1, laag);
delay(1000);
digitalWrite (p4, laag);
delay(1000);
}
de routine van de lus wordt uitgevoerd over en weer forever:
void loop {}
/ * De voor lus een waarde voor een variabele genereert i die correspondeert met 0 tot 360 graden. Ik wordt verhoogd met 1 met elke iteratie. Het is later omgebouwd naar radialen binnen de lus. Zodra ik 360 bereikt herstelt het terug naar 0. Dit stelt het periodieke gedrag van de sinus leuke functies * /
for (int i = 0; ik < 360; i ++)
{
Convert wijs ik in een drijvende variabele die kan worden gebruikt met PI
x=float(i);
/ * voor de berekening van de r, g, b de sinus-functie is gewijzigd om te verhogen amplitute (127 *) maken een faseverschuiving (x + 1/2 * PI) en (x + 3/2 * PI) ten slotte de sinusgolf wordt verhoogd tot de negatieve waarden van de illiminate onder nul door toevoeging van 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);
flaot r, g, b omzetten in gehele getallen die kunnen worden toegewezen aan LED PWM nummers
LED1 = int(r);
LED2 = int(g);
LED3 = int(b);
LED niveaus schrijven naar p0, p1, p4 (toewijzen PWM waarden leds)
analogWrite (p0, LED1);
analogWrite (p1, LED2);
analogWrite (p4, LED3);
wachten tot 1/100 van een seconde
delay(100);
}}
In dit project die een getal tussen 0-255 wordt gebruikt voor de taakcyclus van de 0% - 100% (helderheid), wordt sinus-functie gebruikt voor het genereren van het. Digispark maakt gebruik van sinus-functie voor het genereren van de PWM (puls breedte modulatie). Wij converteren de radialen naar mate van voor de cycli van rood, groen en blauw. Dit wordt gebruikt voor het wijzigen van de taal voor de computer om te begrijpen. Een klein verschil met gewone Arduino boards Arduino boards en de Digispark is dat de compiler programma gevraagd of u wilt toevoegen van de Digispark wanneer het is klaar om te uploaden. Als u deze aangesloten laat krijgt u een compilatiefout.