Enkla Arduino Sunrise lampa (2 / 4 steg)
Steg 2: Programvara, del 1
Programmet består av två kapslade slingor-en att utföra den faktiska kopplande och bort (PWM) och att gå genom de ökande nivåerna av ljusstyrka. Jag skrev en slinga för att göra PWM för hand eftersom den Arduino inbyggd PWM har endast 255 tillgängliga nivåer av ljusstyrka, vilket innebar att lamporna skulle hoppa i ljusstyrka när första påslagen. Jag skrev en enkel PWM slinga med 1000 möjliga nivåer av ljusstyrka, vilket gör det mer smidig.int tull = 0;
int steg = 64;
int sunrisespeed = 5000;
int i;
int j;
int pulsepin = 11;
int sökning [64] = {1,2,4,6,9,12,16,20,25,30,36,
42,49,56,64,72,81,90,100,110,121,132,
144,156,169,182,196,210,225,240,256,272,289,
306,324,342,361,380,400,420,441,462,484,506,
529,552,576,600,625,650,676,702,729,756,784,
812,841,870,900,930,961,992,992,992}.
Det finns freq steg i utfasningen
void setup()
{
pinMode (pulsepin, produktionen);
}
Initiering kod deklareras två konstanter: steg och sunrisespeed. steg representerar antalet olika ljusnivåer styrenheten kommer att använda. Jag använde 64 som ett godtyckligt val, och eftersom det gjorde matematik lättare. Sunrisespeed bestämmer hur länge programmet kommer att spendera på varje ljusnivå-specifikt, hur många pulser det kommer ut för en given puls bredd. Varje på-av puls i PWM är 5 millisekunder lång, så en sunrisespeed på 200 producerar 1 sekund (200 pulser på 5ms) av varje ljusnivå. Med 64 steg innebär hela soluppgången process skulle ta ungefär en minut, så för att göra soluppgången sist för en mer realistisk en halvtimme vi skulle ställa sunrisespeed till 200 * 30 = 6000.
int lookup [64] är en array-en lista med tal som kan användas individuellt genom att ge en position i listan. Snarare än att skriva ett program med nödvändiga matematik i det att beräkna en växande lista med tal som skulle stå för det mänskliga ögat icke-linjär respons, var det lättare att bara arbeta ut listan och spara den i programmet. Detta är en programmering teknik känd som en uppslagstabell, används ofta när ett program vill ha tillgång till en kort lista med siffror som tar lång tid att beräkna men inte är sannolikt att ändra.
plikt, jag och j är variabler som ska användas vid generering av pulserna.