analogWrite()

[Analóg I/O]

Leírás

Analóg értéket (PWM hullámot) ír egy kivezetésre. Használható LED-ek világítására változó fényerővel vagy motor hajtására különböző sebességeken. Az analogWrite() hívása után a kivezetés a megadott munkaciklusnak megfelelő állandó téglalap alakú hullámot generál az analogWrite() következő hívásáig (vagy a digitalRead() vagy digitalWrite() hívásáig) ugyanazon a kivezetésen.

Kártya PWM kivezetések PWM Frekvencia

Uno, Nano, Mini

3, 5, 6, 9, 10, 11

490 Hz (5 és 6 kivezetések : 980 Hz)

Mega

2 - 13, 44 - 46

490 Hz (4 és 13 kivezetések: 980 Hz)

Leonardo, Micro, Yún

3, 5, 6, 9, 10, 11, 13

490 Hz (3 és 11 kivezetések: 980 Hz)

Uno WiFi Rev2, Nano Every

3, 5, 6, 9, 10

976 Hz

MKR kártyák *

0 - 8, 10, A3, A4

732 Hz

MKR1000 WiFi *

0 - 8, 10, 11, A3, A4

732 Hz

Zero *

3 - 13, A0, A1

732 Hz

Nano 33 IoT *

2, 3, 5, 6, 9 - 12, A2, A3, A5

732 Hz

Nano 33 BLE/BLE Sense

1 - 13, A0 - A7

500 Hz

Due **

2-13

1000 Hz

101

3, 5, 6, 9

3 és 9 kivezetések: 490 Hz, 5 és 6 kivezetések: 980 Hz

*A fent említett kivezetések PWM-képességein kívül az MKR, a Nano 33 IoT és a Zero kártyák valódi analóg kimenettel rendelkeznek, ha a DAC0 (A0) kivezetésen az analogWrite() funkciót használják.
**A fent említett kivezetések PWM-képességein kívül a Due valódi analóg kimenettel rendelkezik, ha az analogWrite() funkciót használja a DAC0 és DAC1 kivezetéseken.

Nem kell meghívnia a pinMode()-t, hogy a kivezetést kimenetként állítsa be az analogWrite() hívása előtt.
Az analogWrite funkciónak semmi köze az analóg kivezetésekhez vagy az analogRead funkcióhoz.

Szintaxis

analogWrite(pin, value)

Paraméterek

pin: az Arduino kivezetés, amelyre írni szeretne. Engedélyezett adattípusok: int.
value: a munkaciklus: 0 (mindig kikapcsolt) és 255 (mindig bekapcsolva) között. Engedélyezett adattípusok: int.

Visszatérési érték

Nincs

Példa

A LED kimenetét a potenciométerről leolvasott értékkel arányosan állítja be.

int ledPin = 9;      // LED csatlakoztatva a 9 digitális kivezetéshez
int analogPin = 3;   // potentiométer csatlakoztatva a 3 analóg kivezetéshez
int val = 0;         // változó az olvasott érték tárolására

void setup() {
  pinMode(ledPin, OUTPUT);  // a kivezetést output-ra állítjuk
}

void loop() {
  val = analogRead(analogPin);  // az input kivezetés olvasása
  analogWrite(ledPin, val / 4); // Az analogRead értékek 0 és 1023 között, az analogWrite értékek 0 és 255 között változnak
}

Megjegyzések és figyelmeztetések

Az 5-ös és 6-os kivezetéseken generált PWM-kimenetek munkaciklusa a vártnál magasabb lesz. Ennek oka a millis() és delay() függvényekkel való interakció, amelyek ugyanazon a belső időzítőn osztoznak, mint a PWM-kimenetek a generálásához. Ez többnyire alacsony működési ciklus beállításainál észlelhető (pl. 0-10), és azt eredményezheti, hogy a 0 érték nem kapcsolja ki teljesen az 5. és 6. kivezetések kimenetét.

Lásd még

  • DEFINÍCIÓ PWM