Περιγραφή

Το analogReadResolution() είναι μια επέκταση του αναλογικού API για το Arduino Due και το Zero.

Συγκεκριμένα αυτό, ρυθμίζει το μέγεθος (σε bits) της επιστρεφόμενης τιμής από το analogRead(). Η προεπιλογή του είναι μέχρι τα 10 bits, δηλαδή επιστρέφει τιμές μεταξύ του 0 και του 1023, έτσι ώστε να υπάρξει η προς τα πίσω συμβατότητα με τις πλακέτες του τύπου AVR.

Το Due και το Zero έχουν δυνατότητες ADC των 12-bit που μπορούν να προσεγγιστούν αλλάζοντας την ανάλυση σε 12. Έτσι αυτό θα επιστρέψει τιμές από το analogRead() μεταξύ του 0 και του 4095.

Σύνταξη

analogReadResolution(bits)

Παράμετροι

bits: καθορίζουν την ανάλυση (σε bits) της επιστρεφόμενης τιμής από την συνάρτηση analogRead(). Μπορείτε να ορίσετε αυτό 1 και 32. Επίσης, έχετε την δυνατότητα να ορίσετε μεγαλύτερη ανάλυση από το 12, όμως οι επιστρεφόμενες τιμές από το analogRead() θα έχουν προβλήματα υπολογισμών. Για περισσότερες λεπτομέρειες, κοιτάξτε την παρακάτω σημείωση.

Επιστρέφει

Τίποτα

Σημείωση

Αν ορίσετε την τιμή του analogReadResolution() με μια τιμή μεγαλύτερη από τις δυνατότητες της πλακέτας σας, τότε το Arduino θα αναφέρει πίσω μόνο την υψηλότερη ανάλυσή του, γεμίζοντας τις επιπλέον θέσεις των bits με μηδενικά.

Για παράδειγμα, εάν χρησιμοποιήσετε το analogReadResolution(16) είτε με το Due είτε με το Zero, τότε αυτό θα σας δώσει έναν κατά προσέγγιση 16-bit αριθμό, ο οποίος θα περιέχει στα πρώτα 12 bits, την πραγματική ανάγνωση του ADC και τα υπόλοιπα 4 bits θα είναι συμπληρωμένα με μηδενικά.

Αν ορίσετε την τιμή του analogReadResolution() με μια τιμή μικρότερη από τις δυνατότητες της πλακέτας σας, τότε τα επιπλέον λιγότερο σημαντικά bits (LSB) από την ανάγνωση του ADC, θα πρέπει να απορριφθούν.

Χρησιμοποιήστε μια ανάλυση των 16 bits ή οποιαδήποτε υψηλότερη ανάλυση από τις πραγματικές δυνατότητες του υλικού σας. Έτσι, αυτό θα σας επιτρέψει να γράψετε προγράμματα τα οποία χειρίζονται αυτόματα τις συσκευές με υψηλότερη ανάλυση του ADC, όταν αυτά καταστούν διαθέσιμα στις μελλοντικές πλακέτες, χωρίς να χρειαστεί να αλλάξετε ούτε μια γραμμή κώδικα.

Παράδειγμα

void setup() {
  // open a serial connection
  Serial.begin(9600);
}

void loop() {
  // read the input on A0 at default resolution (10 bits)
  // and send it out the serial connection
  analogReadResolution(10);
  Serial.print("ADC 10-bit (default) : ");
  Serial.print(analogRead(A0));

  // change the resolution to 12 bits and read A0
  analogReadResolution(12);
  Serial.print(", 12-bit : ");
  Serial.print(analogRead(A0));

  // change the resolution to 16 bits and read A0
  analogReadResolution(16);
  Serial.print(", 16-bit : ");
  Serial.print(analogRead(A0));

  // change the resolution to 8 bits and read A0
  analogReadResolution(8);
  Serial.print(", 8-bit : ");
  Serial.println(analogRead(A0));

  // a little delay to not hog serial monitor
  delay(100);
}

Επιστροφή στην σελίδα Παραπομπές Γλώσσας