Arduino: PWM - LED fényerőszabályzó

Forrás: arduino.cc/en/Tutorial/PWM,
arduino.cc/en/Tutorial/AnalogWrite

Ugyanazt a kapcsolást állítjuk össze, mint a Potencióméteres kapcsolásban, de itt nem a periódusidőt, hanem végeredményben a világítás erősségét szabályozzuk.
Mivel a LED működéséhez szükség van a nyitófeszültség meglétére, nem lehet analóg feszültségosztóval halványítani a megvilágítás erősségét.
Többek között erre ad megoldást a PWM.
Az ábrának megfelelően a LED kikapcsolt és bekapcsolt állapotainak egymáshoz viszonyított idejét változtatjuk olyan magas frekvencián (min. 500Hz), hogy ebből a villogásból folyamatos fényt lássunk. Mivel azonban a kibcsájtott fénymennyiség átlaga összhatásként eltérő az egyes grafikonokon, 0, 25, 50, 75, 100% közötti szabályzást érzékelünk.

int potPin = 2; // potencióméter középső lába
int ledPin = 13; // LED
int val = 0;

void setup() {
  pinMode(potPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  val = analogRead(potPin);
  analogWrite(ledPin, val/4);
}

Az analogWrite() fv második paramétere 0-255 közötti szám, ahol 0 felel meg a 0%-nak, a 255 pedig a 100%-nak. (Így 256 fokozatban tud szabályozni.)

Az analogRead() fv azonban 0-1023 közötti számot olvas be, ezért a beolvasott val érték negyedét kellett az analogWrite argomentumába írni.