Enkla Arduino Sunrise lampa (3 / 4 steg)
Steg 3: Programvara, del 2
void loop()
{
för (jag = 0; jag < steg; i ++)
{
skyldighet = LETAUPP [i] * 5.
för (j = 0; j < sunrisespeed; j ++)
{
en puls för PWM
digitalWrite (pulsepin, hög);
delayMicroseconds(duty);
digitalWrite (pulsepin, låg);
delayMicroseconds(5000-duty);
}
}
}
Detta är del av programmet som producerar pulserar. Den inre loopen producerar ett antal pulser på en viss ljusstyrka. Det tänds lysdioderna för ett antal mikrosekunder bestäms av den nuvarande ljusstyrkan nivå, sedan stänger dem för resten av 5 millisekunder. Detta innebär att programmet genererar en konstant frekvens signal, vilket gör timing enklare. Antal pulser bestäms av sunrisespeed, som i sin tur avgör hur snabbt lampan lyser.
De yttre loop stegen genom matrisen med värden för ljusstyrka som, läsa dem i ordning och producerar en rad pulser av angivna ljusstyrkan. I detta fall multiplicerar värdet från uppslagstabellen av 5, eftersom jag ursprungligen beräknade värdena som spänner från 0-1000, men Arduino inte är exakt timing intervall mindre än 5 mikrosekunder. Jag använde 5 millisekunder som puls frekvensen som en kompromiss-försöker puls snabbare än detta minskar antalet möjliga ljusstyrkevärden den Arduino timing begränsningarna, men pulser mycket längre än 5ms börjar bli synliga för det mänskliga ögat som flimmer.
När loopen når skulle slutet bara startas om på den lägsta ljusstyrka inställning - idealiskt vid denna tidpunkt du vara vaken, så kan timeswitch att stänga av Arduino efter den tid som en komplett cykel (i mitt fall ca 25 minuter).