Stap 3: Stap 3: de code
Dit is de langste stap maar ik zal uitleggen hoe het werkt in de volgende stap.
zweven frequentie = 100; de frequentie van de cyclus
float cycle_length; Hoe lang elke pwm-cyclus moet op voor
float duty_cycle; het percentage van de macht die we willen
int time_on; Hoe lang moet de uitgang hoog
int time_off; Hoe lang de output moet laag
float v_out; de hoeveelheid spanning het lampje moet tekenen
int pot_pin = 2; pins met potmeter
int pwm_pin = 8; PIN die als een pwm-pin fungeren zal
VOID Setup {}
Zet uw setup-code hier, om het eenmalig uit te voeren:
Serial.begin(9600);
Stel de pinnen
pinMode (pot_pin, INPUT);
pinMode (pwm_pin, OUTPUT);
digitalWrite (pwm_pin, laag);
berekenen van de lengte van de cyclus
cycle_length = 1000000/frequentie; lengte van een pwm cyclus in microseconden
}
void loop {}
Zet uw belangrijkste code hier, om het herhaaldelijk uitvoeren:
int val = analogRead(pot_pin); krijg van de pwm-waarde
v_out = kaart (val, 0, 1024, 0, 255); Deze eigenschap haalt de waarde van de pot van 0-1024 en verandert het in een waarde van 0 tot en met 255
duty_cycle = v_out/255; percentage van de macht wordt getrokken als decimaal.
time_on = duty_cycle * cycle_length; werk uit de tijd die moet worden op
time_off = cycle_length-time_on; werk uit de tijd dat het moet uitgeschakeld zijn
if(time_on > 0)
{
digitalWrite (pwm_pin, hoge);
delayMicroseconds(time_on); Zet led op voor korte anount van tijd
}
digitalWrite (pwm_pin, laag);
delayMicroseconds(time_off);
}