Περιγραφή

Εγγράφει μια αναλογική τιμή (PWM κυματομορφή) σε έναν ακροδέκτη. Μπορεί να χρησιμοποιηθεί για να ανάψει με διάφορες φωτεινότητες ένα LED ή να κινήσει με διάφορες ταχύτητες έναν κινητήρα. Μετά από την κλήση του analogWrite(), ο ακροδέκτης θα δημιουργήσει μια σταθερή τετραγωνική κυματομορφή του συγκεκριμένου κύκλου δραστηριότητας, μέχρις ότου γίνει η επόμενη κλήση της analogWrite() ή όταν γίνει είτε η κλήση της digitalRead() είτε της digitalWrite() στον ίδιο ακροδέκτη. Η συχνότητα του σήματος PWM για τους περισσότερους ακροδέκτες είναι περίπου 490 Hz. Τόσο στο Uno όσο και στις παρόμοιες πλακέτες, η συχνότητα των ακροδεκτών 5 και 6 είναι περίπου 980 Hz. Επίσης στην πλακέτα Leonardo, οι ακροδέκτες 3 και 11 λειτουργούν στα 980 Hz.

Στις περισσότερες πλακέτες του Arduino (εκείνες με το ATmega168 ή το ATmega328), αυτή η συνάρτηση λειτουργεί στους ακροδέκτες 3, 5, 6, 9, 10 και 11. Στο Arduino Mega, λειτουργεί στους ακροδέκτες 2-13 και 44-46. Ενώ οι παλιότερες πλακέτες του Arduino με το ATmega8, υποστηρίζουν το analogWrite() μόνο στους ακροδέκτες 9, 10 και 11.

Στο Arduino Due, το analogWrite() υποστηρίζεται από τους ακροδέκτες 2 έως 13 καθώς και από τους ακροδέκτες DAC0 και DAC1. Σε αντίθεση με τους ακροδέκτες PWM, οι DAC0 και DAC1 λειτουργούν ως μετατροπείς ψηφιακών εισόδων σε αναλογικές εξόδους. Δηλαδή αυτοί ουσιαστικά ενεργούν ως αληθινοί αναλογικοί έξοδοι.

Δεν χρειάζεται να καλέσετε πρώτα το pinMode() έτσι ώστε να ρυθμίσετε τον συγκεκριμένο ακροδέκτη ως έξοδο και στην συνέχεια να προβείτε στην κλήση της analogWrite().

Η συνάρτηση analogWrite, δεν έχει καμία σχέση με τους αναλογικούς ακροδέκτες, όπως επίσης και με την συνάρτηση analogRead.

Σύνταξη

analogWrite(ακροδέκτης, τιμή)

Παράμετροι

ακροδέκτης: ο ακροδέκτης της εγγραφής.
τιμή: ο κύκλος δραστηριότητας μεταξύ του 0 (πάντα σβηστό) και του 255 (πάντα αναμμένο).

Επιστρέφει

Τίποτα

Σημειώσεις και γνωστά ζητήματα

Οι έξοδοι του PWM που παράγονται στους ακροδέκτες 5 και 6, θα έχουν υψηλότερους κύκλους δραστηριότητας από τους αναμενόμενους. Αυτό συμβαίνει λόγω της επικοινωνίας των συναρτήσεων millis() και delay(), οι οποίες μοιράζονται τον ίδιο εσωτερικό χρονιστή που χρησιμοποιείται και για την παραγωγή των εξόδων του PWM. Αυτό θα αντιληφθεί καλύτερα στις χαμηλότερες ρυθμίσεις του κύκλου δραστηριότητας (π.χ. 0-10) και έτσι αυτό μπορεί να οδηγήσει σε μία μηδενική τιμή, η οποία δεν θα απενεργοποιεί πλήρως τις εξόδους στους ακροδέκτες 5 και 6.

Παράδειγμα

Το συγκεκριμένο παράδειγμα, ρυθμίζει την έξοδο προς το LED ανάλογα με την τιμή που διαβάζεται από το ποτενσιόμετρο.

int ledPin = 9;      // LED connected to digital pin 9

int analogPin = 3;   // potentiometer connected to analog pin 3

int val = 0;         // variable to store the read value



void setup()

{

  pinMode(ledPin, OUTPUT);   // sets the pin as output

}



void loop()

{

  val = analogRead(analogPin);   // read the input pin

  analogWrite(ledPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255

}

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