Μετάβαση στο κύριο περιεχόμενο

Πώς να χρησιμοποιήσετε την αναλογική και ψηφιακή είσοδο/έξοδο του Arduino

 

Πώς να χρησιμοποιήσετε την αναλογική και ψηφιακή είσοδο/έξοδο του 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) ; 
}

Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Σερβοκινητήρας

  Βασικός έλεγχος σερβομηχανισμού Θα μάθουμε πώς να ελέγχετε έναν τυπικό σερβοκινητήρα, να πηγαίνει εμπρός και πίσω κατά 180 μοίρες, χρησιμοποιώντας ένα «βρόχο for()». Αυτό γίνεται με τη βοήθεια της βιβλιοθήκης Servo, η οποία είναι προεγκατεστημένη βιβλιοθήκη στο Arduino IDE (τόσο εκτός σύνδεσης όσο και σε ηλεκτρονική έκδοση). . Αυτό γίνεται με τη βοήθεια της βιβλιοθήκης  Servo     , η οποία είναι προεγκατεστημένη βιβλιοθήκη στο Arduino IDE (τόσο εκτός σύνδεσης όσο και σε ηλεκτρονική έκδοση).      Χρειαζόμαστε τα παρακάτω:     Arduino IDE Arduino UNO  Σερβοκινητήρας 4,8V - 6V  Καλώδια βραχυκυκλωτήρα. Τυπικοί σερβοκινητήρες Οι τυπικοί σερβοκινητήρες είναι ενεργοποιητές που επιτρέπουν τον ακριβή έλεγχο της θέσης (γωνία). Χαρακτηριστικό  είναι ότι η γωνία του κινητήρα είναι 0 - 180 μοίρες. Με άλλα λόγια, μπορεί να κάνει το μισό μιας περιστροφής. Ένας τυπικός σερβοκινητήρας, όπως και άλλοι κινητήρες, είναι ουσιαστικά απλώς ένας...

Αντιστάσεις pull up, pull down

  Αντιστάσεις pull up (Pull up resistors) Οι αντιστάσεις pull up  είναι πολύ συνηθισμένες όταν χρησιμοποιούνται μικροελεγκτές (MCU) ή οποιαδήποτε συσκευή ψηφιακής λογικής. Θα εξηγήσουμε πότε και πού να χρησιμοποιήσετε αντιστάσεις pull up και, στη συνέχεια, θα κάνουμε έναν απλό υπολογισμό για να δείξουμε γιατί είναι σημαντικά τα pull-ups. Τι είναι μια αντίσταση  Pull up Ας υποθέσουμε ότι έχετε ένα MCU με ένα pin διαμορφωμένο ως είσοδο. Εάν δεν υπάρχει τίποτα συνδεδεμένο με τον ακροδέκτη και το πρόγραμμά σας διαβάζει την κατάσταση του ακροδέκτη, θα είναι ψηλά (τραβηγμένο στο VCC) ή χαμηλό (τραβηγμένο στη γείωση);  Αυτό το φαινόμενο αναφέρεται ως  αιωρούμενο  (floating). Για να αποφευχθεί αυτή η άγνωστη κατάσταση, μια αντίσταση pull-up ή pull-down θα διασφαλίσει ότι η ακίδα βρίσκεται είτε σε υψηλή είτε σε χαμηλή κατάσταση, ενώ χρησιμοποιεί επίσης χαμηλή ποσότητα ρεύματος. Για απλότητα, θα εστιάσουμε στα pull-ups καθώς είναι πιο συνηθισμένα από τα pull-down. Λε...

Πώς να χρησιμοποιήσετε ένα Breadboard

  Πώς να χρησιμοποιήσετε ένα Breadboard Το breadboard έχει εσωτερικές συνδέσεις μεταξύ των οπών του. Μερικές κάθετες συνδέσεις και μερικές οριζόντιες συνδέσεις. Κανονικά, χρησιμοποιείτε τις κολώνες στα πλάγια για να συνδέσετε το τροφοδοτικό σας. Και χρησιμοποιείτε τις σειρές στη μέση για να συνδέσετε τα στοιχεία σας. Στήλες Τροφοδοτικού Είναι σύνηθες να χρησιμοποιείτε τις στήλες στα αριστερά και δεξιά για τη σύνδεση του τροφοδοτικού. Αυτές οι στήλες συνδέονται κάθετα. Έτσι, εάν συνδέσετε 5 βολτ στην επάνω οπή μιας από τις πλευρικές κολώνες, θα έχετε 5 βολτ σε όλες τις οπές αυτής της στήλης. Χρησιμοποιήστε τις στήλες που επισημαίνονται με κόκκινη γραμμή για το συν και τη στήλη με μπλε γραμμή για το μείον. Τέλος φόρμας Σημείωση: Μερικές μεγαλύτερες πλάκες   breadboard χωρίζονται στα δύο έτσι ώστε το πάνω μισό να αποσυνδεθεί από το κάτω μισό. Αυτό υποδεικνύεται από τις κατακόρυφες μπλε και κόκκινες γραμμές που χωρίζονται στα δύο.   Περιοχή Συστατικού Σ...