Stap 3: De sinus-functie
De fundamentele sinus-functie genereert nummers van -1 op 1. Hoe we de basisfunctie voor gebruik als een PWM number generator wijzigen?
algemene vorm:
y = een * sin (b * x + c) + d
Waar
b wijzigingen van de periode (hoe lang de Golf is)
c veroorzaakt een faseverschuiving langs de x-as
d verhoogt of verlaagt de Golf langs de y-as
De sinusgolf produceert getallen tussen -1 en + 1. Dit veroorzaakt een probleem omdat PWM waarden niet negatief kunnen. De eerste verandering die we moeten maken is het toevoegen van 1 te vervangen door 1 voor d in de formule. y = een * sin (b * x + c) + 1 geven ons waarden tussen 0 en 2.
Vervolgens moesten we verhogen de amplitude te produceren onze maximale PWM-waarde van 255. Ongewijzigd is de max waarde 2. Daarom 255/2 = 127,5. De PWM moet dat een geheel getal zodat wij vestigen op 127 die geeft ons een max van 254. De formule ziet er nu als volgt:
y=127*(Sin(b*x+c)+1) Let op de extra haken.
We hebben drie LEDs die wij werken samen willen om subtiele verschuivingen in additieve kleur waarden. Daarom moesten we gebruik maken van een faseverschuiving voor elke kleur. Dit waar het wordt lastig voor ons. Computers gebruiken radialen niet graden. Daarom moest de faseverschuiving worden uitgedrukt in radialen. Het blijkt dat de conversie is eenvoudig. 90 ° = 90/180 * PI radialen of 1/2 * PI radialen. Een faseverschuiving 270° zou vereisen 3/2 * PI radialen. Als we niets aan de periode veranderen hebben we nu drie functies, één voor elke kleur van onze LED
Red=127*(Sin(x)+1)
Green=127*(Sin(x+1/2*pi)+1)
Blue=127*(Sin(x+3/2*pi)+1)