analogWriteResolution()

[Zero, Due & MKR család]

Leírás

Az analogWriteResolution() az Analog API kiterjesztése az Arduino Due számára.

Az analogWriteResolution() beállítja az analogWrite() függvény felbontását. Alapértelmezés szerint 8 bites (0 és 255 közötti értékek) az AVR alapú kártyákkal való visszafelé kompatibilitás érdekében.

A Due a következő hardverképességekkel rendelkezik:

  • 12 kivezetés, amelyek alapértelmezés szerint 8 bites PWM-ek, mint az AVR-alapú kártyáknál. Ezek 12 bites felbontásra változtathatók.

  • 2 kivezetés 12 bites DAC-val (digitális-analóg konverter)

Ha az írási felbontást 12-re állítja, használhatja az analogWrite() függvényt 0 és 4095 közötti értékekkel a teljes DAC felbontás kihasználásához vagy a PWM jel beállításához anélkül, hogy átfordulna.

A Zero a következő hardverképességekkel rendelkezik:

  • 10 kivezetés, amelyek alapértelmezés szerint 8 bites PWM-ek, mint az AVR-alapú kártyáknál. Ezek 12 bites felbontásra változtathatók.

  • 1 kivezetés 10 bites DAC-val (digitális-analóg konverter)

Ha az írási felbontást 10-re állítja, használhatja az analogWrite() függvényt 0 és 1023 közötti értékekkel a teljes DAC felbontás kihasználásához.

Az MKR táblacsalád a következő hardverképességekkel rendelkezik:

  • 4 kivezetés, amelyek alapértelmezés szerint 8 bites PWM-ek, mint az AVR-alapú kártyák. Ezek 8-ról (alapértelmezett) 12 bites felbontásra változtathatók.

  • 1 kivezetés 10 bites DAC-kal (digitális-analóg konverter)

Ha az írási felbontást 12 bitre állítja, az analogWrite() 0 és 4095 közötti értékekkel használható PWM a jelekhez; állítson be 10 bitet a DAC kivezetésen, hogy kihasználja az 1024 értékből álló teljes DAC felbontást.

Szintaxis

analogWriteResolution(bits)

Paraméterek

bits: meghatározza az analogWrite() függvényben használt értékek felbontását (bitekben). Az érték 1 és 32 között változhat. Ha a kártya hardveres képességeinél nagyobb vagy kisebb felbontást választ, az analogWrite() függvényben használt érték vagy csonkolva lesz, ha túl magas, vagy nullákkal tölti ki, ha túl alacsony. A részletekért lásd az alábbi megjegyzést.

Visszatérési érték

Nincs

Példa

Magyarázó kód

void setup() {
  // soros kapcsolat megnyitása
  Serial.begin(9600);
  // digitális kivezetéseket tegyük kimenetté
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // olvassa be az A0-n lévő bemenetet, és képezze le
  // egy PWM kivezetésre csatlakoztatott LED-re
  int sensorVal = analogRead(A0);
  Serial.print("Analog Read) : ");
  Serial.print(sensorVal);

  // az alapértelmezett PWM felbontás
  analogWriteResolution(8);
  analogWrite(11, map(sensorVal, 0, 1023, 0, 255));
  Serial.print(" , 8-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 255));

  // a PWM felbontást 12 bitre cseréljük
  // a teljes 12 bites felbontás csak
  // a Due-n értelmezett
  analogWriteResolution(12);
  analogWrite(12, map(sensorVal, 0, 1023, 0, 4095));
  Serial.print(" , 12-bit PWM value : ");
  Serial.print(map(sensorVal, 0, 1023, 0, 4095));

  // a PWM felbontásto 4 bitre cseréljük
  analogWriteResolution(4);
  analogWrite(13, map(sensorVal, 0, 1023, 0, 15));
  Serial.print(", 4-bit PWM value : ");
  Serial.println(map(sensorVal, 0, 1023, 0, 15));

  delay(5);
}

Megjegyzések és figyelmeztetések

Ha az analogWriteResolution() értékét a kártya képességeinél magasabb értékre állítja, az Arduino eldobja a felesleges biteket. Például: a Due-n az analogWriteResolution(16) használata egy 12 bites DAC kivezetésen, az analogWrite()-nek átadott értékekből csak az első 12 bit kerül felhasználásra, az utolsó 4 bit pedig eldobásra kerül.

Ha az analogWriteResolution() értékét a kártya képességeinél alacsonyabb értékre állítja be, akkor a hiányzó biteket nullákkal tölti ki, hogy kitöltse a hardvernek szükséges méretet. Például: a Due-n az analogWriteResolution(8) használatával egy 12 bites DAC kivezetésen az Arduino 4 nulla bitet ad hozzá az analogWrite() 8 bites értékéhez, hogy megkapja a szükséges 12 bitet.