analogReadResolution()

[Zero, Due & MKR család]

Leírás

Az analogReadResolution() az Analog API kiterjesztése a Zero, Due, MKR család, a Nano 33 (BLE és IoT) és a Portenta számára.

Beállítja az analogRead() által visszaadott érték méretét (bitekben). Alapértelmezés szerint 10 bites (0-1023 közötti értékeket ad vissza), hogy visszafelé kompatibilis legyen az AVR alapú kártyákkal.

A Zero, Due, MKR család és a Nano 33 (BLE és IoT) kártyák 12 bites ADC képességekkel rendelkeznek, amelyek a felbontás 12-re történő módosításával érhetők el. Ez az analogRead() 0 és 4095 közötti értékeit adja vissza.
A Portenta H7 16 bites ADC-vel rendelkezik, amely 0 és 65535 közötti értékeket tesz lehetővé.

Szintaxis

analogReadResolution(bits)

Paraméterek

bits: meghatározza az analogRead() függvény által visszaadott érték felbontását (bitekben). Ezt 1 és 32 között állíthatja be. A támogatott 12 vagy 16 bitnél nagyobb felbontást is beállíthat, de az analogRead() által visszaadott értékek közelítést szenvednek. A részletekért lásd az alábbi megjegyzést.

Visszatérési érték

Nincs

Példa

A kód bemutatja, hogyan kell használni az ADC-t különböző felbontásokkal.

void setup() {
  // soros kapcsolat megnyitása 
  Serial.begin(9600);
}

void loop() {
  // olvassa be az A0 bemenetét alapértelmezett felbontással
  // (10 bit), és küldje ki a soros kapcsolaton
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A0));

  // módosítsa a felbontást 12 bitre, és olvassa az A0-t
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A0));

  // módosítsa a felbontást 16 bitre, és olvassa az A0-t
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A0));

  // módosítsa a felbontást 8 bitre, és olvassa az A0-t
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A0));

  // egy kis késleltetés, hogy ne terhelje túl a Serial Monitort
  delay(100);
}

Megjegyzések és figyelmeztetések

Ha az analogReadResolution() értékét a kártya képességeinél magasabb értékre állítja be, az Arduino csak a legmagasabb felbontáson ad visszajelzést, és az extra biteket nullákkal tölti fel.

Például: a Due az analogReadResolution(16) használatakor hozzávetőlegesen 16 bites számot ad, amelynek első 12 bitje tartalmazza a valós ADC-olvasást, az utolsó 4 bit pedig nullákkal van kitöltve.

Ha az analogReadResolution() értéket a kártya képességeinél alacsonyabb értékre állítja be, akkor az ADC-ből kiolvasott extra legkisebb helyiértékű bitek el lesznek vetve.

A 16 bites felbontás (vagy bármely, a tényleges hardverképességnél nagyobb felbontás) használatával olyan vázlatokat írhat, amelyek automatikusan kezelik a nagyobb felbontású ADC-vel rendelkező eszközöket, amikor ezek elérhetővé válnak a jövőbeli kártyákon anélkül, hogy egy kódsort megváltoztatnánk.