Stap 4: Stap 4: hoe de code werkt
Heb ik besloten om dit in een andere stap als stap 3 al erg lang was.
De afbeelding hierboven is wat echt hielp me begrijpen
Als we niet van vergeten de video in stap 1 pwm 2 variabelen te kunnen werken moet buiten de aan en uit de tijd, deze zijn de cyclus lengte/periode en de taakcyclus. Met behulp van de foto hierboven ik zal u tonen hoe deze om uit te werken.
cycle_length = 1000000/frequentie
cycle_length is het equivalent van de periode in de bovenstaande foto maar aangezien we zijn met behulp van microseconden want we het sneller moeten dan het menselijk oog volgen kan en er zijn 1000000 microseconden in een seconde maakt 1000000 in plaats van 1. u kunt ook de frequentie wijzigen maar dan te houden boven de 60 die problemen veroorzaakt.
duty_cycle = v_out/255
in het voorbeeld hierboven de plicht cyclus was al ingesteld maar onze taakcyclus vinden het is eigenlijk het percentage van de potentiometer draaide = het percentage van de led helderheid b.v., 50% veranderd = 50% helderheid = 50% van de spanning nodig. En als wij doen sommige eenvoudige wiskunde om te zoeken naar percentage zijn (waarde / totale waarde) * 100 maar aangezien wij het als een decimaal getal moeten we hoeven niet te vermenigvuldigen door 100, dus het is gewoon waarde/totaal waarde.
En als we in het bovenstaande voorbeeld volgen
ton = taakcyclus * periode
Dit is het percentage van de tijd zijn is evenredig aan het percentage van de kracht die we nodig voor de led helderheid, die hetzelfde is in onze code zoals het laatste deel van het voorbeeld is
toff = periode - taakcyclus
Deze regel is enkel eenvoudig wiskunde
if(time_on > 0)
{
digitalWrite (pwm_pin, hoge);
delayMicroseconds(time_on); Zet led op voor korte anount van tijd
}
Eenvoudige code die alleen zegt als de tijd die moet worden op groter is dan 0 de pin hoog voor die tijd zet.