Πώς να χρησιμοποιήσετε την αναλογική και ψηφιακή είσοδο/έξοδο του Arduino (I/O)
Το Arduino μπορεί να εισάγει και να εξάγει αναλογικά σήματα καθώς και ψηφιακά σήματα.
Το Arduino μπορεί να εισάγει και να εξάγει αναλογικά σήματα καθώς και ψηφιακά σήματα.
Ένα αναλογικό σήμα είναι αυτό που μπορεί να λάβει οποιονδήποτε αριθμό τιμών, σε αντίθεση με ένα ψηφιακό σήμα που έχει μόνο δύο τιμές: HIGH και LOW. Για τη μέτρηση της τιμής των αναλογικών σημάτων, το Arduino διαθέτει ενσωματωμένο μετατροπέα αναλογικού σε ψηφιακό (ADC). Το ADC μετατρέπει την αναλογική τάση σε ψηφιακή τιμή. Η συνάρτηση που χρησιμοποιείτε για να λάβετε την τιμή ενός αναλογικού σήματος είναι analogRead(pin). Αυτή η συνάρτηση μετατρέπει την τιμή της τάσης σε μια αναλογική ακίδα εισόδου και επιστρέφει μια ψηφιακή τιμή από 0 σε 1023, σε σχέση με την τιμή αναφοράς. Η προεπιλεγμένη τάση αναφοράς είναι 5 V (για πλακέτες Arduino 5 V) ή 3,3 V (για πλακέτες Arduino 3,3 V). Έχει μια παράμετρο που είναι ο αριθμός pin.
Το Arduino δεν διαθέτει ενσωματωμένο μετατροπέα ψηφιακού σε αναλογικό (DAC), αλλά μπορεί να διαμορφώσει πλάτος παλμού (PWM) ένα ψηφιακό σήμα για να επιτύχει ορισμένες από τις λειτουργίες μιας αναλογικής εξόδου. Η λειτουργία που χρησιμοποιείται για την έξοδο ενός σήματος PWM είναι η αναλογική εγγραφή (ακίδα, τιμή). pin είναι ο αριθμός pin που χρησιμοποιείται για την έξοδο PWM. Η τιμή είναι ένας αριθμός ανάλογος με τον κύκλο λειτουργίας του σήματος. Όταν τιμή = 0, το σήμα είναι πάντα σβηστό. Όταν τιμή = 255, το σήμα είναι πάντα αναμμένο. Στις περισσότερες πλακέτες Arduino, η λειτουργία PWM είναι διαθέσιμη στις ακίδες 3, 5, 6, 9, 10 και 11. Η συχνότητα του σήματος PWM στις περισσότερες ακίδες είναι περίπου 490 Hz. Στις πλακέτες Uno και σε παρόμοιες, οι ακίδες 5 και 6 έχουν συχνότητα περίπου 980 Hz. Οι ακίδες 3 και 11 στο Leonardo λειτουργούν επίσης στα 980 Hz.
Για να αντιστοιχίσετε μια αναλογική τιμή εισόδου, η οποία κυμαίνεται από 0 έως 1023 έως ένα σήμα εξόδου PWM, το οποίο κυμαίνεται από 0 - 255, μπορείτε να χρησιμοποιήσετε τη λειτουργία χάρτη (τιμή, από Χαμηλή, από Υψηλή, προς Χαμηλή, προς Υψηλή) . Αυτή η συνάρτηση έχει πέντε παραμέτρους, η μία είναι η μεταβλητή στην οποία αποθηκεύεται η αναλογική τιμή, ενώ οι άλλες είναι 0, 1023, 0 και 255 αντίστοιχα.
Πείραμα 1: Έλεγχος της φωτεινότητας ενός LED
Σε αυτό το πείραμα, θα ελέγξουμε τη φωτεινότητα του LED με ένα σήμα PWM σε μια αναλογική ακίδα εξόδου
Απαιτείται υλικό
- 1 x LED
- 1 x αντίσταση
- 1 x Arduino UNO R3
- 1 x breadboard
- 2 x καλώδια βραχυκυκλωτήρα
Διάγραμμα καλωδίωσης
Όπως φαίνεται στο παρακάτω διάγραμμα, ένα LED είναι συνδεδεμένο στον ακροδέκτη 2 του Arduino. Για να αλλάξετε τη φωτεινότητα του LED, το πρόγραμμα θα μεταβάλει τον κύκλο λειτουργίας της εξόδου σήματος PWM του ακροδέκτη 2.
Κώδικας
const int pwm = 2 ; //initializing pin 2 as ‘pwm’ variable void setup() { pinMode(pwm,OUTPUT) ; //Set pin 2 as output } void loop() { analogWrite(pwm,25) ; //setting pwm to 25 delay(50) ; //delay of 50 ms analogWrite(pwm,50) ; delay(50) ; analogWrite(pwm,75) ; delay(50) ; analogWrite(pwm,100) ; delay(50) ; analogWrite(pwm,125) ; delay(50) ; analogWrite(pwm,150) ; delay(50) ; analogWrite(pwm,175) ; delay(50) ; analogWrite(pwm,200) ; delay(50) ; analogWrite(pwm,225) ; delay(50) ; analogWrite(pwm,250) ; }
Πείραμα 2: Έλεγχος φωτεινότητας LED με χρήση ποτενσιόμετρου
Σε αυτό το πείραμα, θα ελέγξουμε τη φωτεινότητα του LED χρησιμοποιώντας ένα ποτενσιόμετρο. Θα κάνουμε τη συνάρτηση analogRead() για την ανάγνωση μιας τάσης και τη συνάρτηση analogWrite() για την έξοδο ενός σήματος PWM, του οποίου ο κύκλος λειτουργίας είναι ανάλογος της αναλογικής τάσης.
Απαιτούμενο υλικό
- 1 x ποτενσιόμετρο
- 1 x LED
- 1 x αντίσταση
- 1 x Arduino Uno R3
- 1 x breadboard
- 6 x καλώδια βραχυκυκλωτήρα
Διάγραμμα καλωδίωσης
Συνδέστε το κύκλωμα όπως φαίνεται παρακάτω. Όταν περιστρέφετε το ποτενσιόμετρο, η τάση στον ακροδέκτη A0 θα αλλάξει. Στη συνέχεια, το πρόγραμμα θα αλλάξει τον κύκλο λειτουργίας του σήματος PWM στον ακροδέκτη 2, αλλάζοντας τη φωτεινότητα του LED.
Κώδικας
const int pwm = 2 ; //naming pin 2 as ‘pwm’ variable
const int adc = 0 ; //naming pin 0 of analog input side as ‘adc’
void setup()
{
pinMode(pwm,OUTPUT) ; //setting pin 2 as output
}
void loop()
{
int adc = analogRead(0) ; //reading analog voltage and storing it in an integer
adc = map(adc, 0, 1023, 0, 255);
/*
----------map συνάρτηση------------Η παραπάνω συνάρτηση μετατρέπει την έξοδο του adc, που είναι 10 bit και δίνει τιμές μεταξύ 0 και 1023, σε τιμές μεταξύ 0 και 255 για την συνάρτηση analogWrite που δέχεται μόνο τιμές στην περιοχή 0 μέχρι */
analogWrite(pwm,adc) ;
}
Σχόλια
Δημοσίευση σχολίου