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

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

Σχόλια

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

PWM στο Arduino

  PWM στο Arduino Εισαγωγή στο PWM Η διαμόρφωση πλάτους παλμού (PWM)   είναι μια τεχνική με την οποία το πλάτος ενός παλμού μεταβάλλεται διατηρώντας τη συχνότητα του κύματος σταθερή. Είναι μια μέθοδος παραγωγής αναλογικού σήματος με χρήση ψηφιακής πηγής. Γενιά PWM   Ένα σήμα PWM αποτελείται από δύο κύρια στοιχεία που καθορίζουν τη συμπεριφορά του: έναν  κύκλο λειτουργίας  και μια  συχνότητα  .   Τι είναι ο κύκλος λειτουργίας του σήματος Η περίοδος ενός παλμού αποτελείται από έναν  κύκλο  ON   (5V) και έναν    κύκλο  OFF  (0V). Το κλάσμα για το οποίο το σήμα είναι ενεργοποιημένο για μια περίοδο είναι γνωστό ως   κύκλος λειτουργίας  . Π.χ.  Ένας παλμός με περίοδο 10 ms θα παραμείνει ενεργός (υψηλό) για 2 ms. Επομένως, ο κύκλος λειτουργίας θα είναι D = 2ms / 10ms = 20%   Μέσω της τεχνικής PWM, μπορούμε να ελέγξουμε την ισχύ που παρέχεται στο φορτίο χρησιμοποιώντας το σήμα ON-O...

Tmp36GZ θερμόμετρο με LCD οθόνη

 Tmp36GZ με LCD οθόνη // Define to which pin of the Arduino the output of the TMP36 is connected: #include <LiquidCrystal_I2C.h> // Look for LiquidCrystal I2C library by Marco Schwartz LiquidCrystal_I2C lcd ( 0x 27 , 16 , 2 ) ;  // set the LCD address to 0x3F for a 16 chars and 2 line display #define sensorPin A0 void setup () {   // Begin serial communication at a baud rate of 9600:   Serial . begin ( 9600 ) ;   lcd . init () ;   lcd . clear () ;           lcd . backlight () ;      // Make sure backlight is on     // Print a message on both lines of the LCD.   lcd . setCursor ( 2 , 0 ) ;   //Set cursor to character 2 on line 0   lcd . print ( "Hello world!" ) ;     lcd . setCursor ( 2 , 1 ) ;   //Move cursor to character 2 on line 1   lcd . print ( "LCD Tutorial" ) ; } void loop () {   // Get a reading from the temperature sensor:   int reading ...

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

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