Εισαγωγή
Για εσάς που ξεκινάτε τώρα με την ρομποτική και γενικότερα τα ηλεκτρονικά, θα έχετε αναρωτηθεί πως μπορούμε να αλλάξουμε την φωτεινότητα ενός led χωρίς να χρειάζεται να αλλάζουμε συνεχώς αντιστάσεις στο κύκλωμα μας. Είναι αρκετά απλό, με την χρήση ενός ποτενσιόμετρου ή αλλιώς μιας μεταβλητής αντίστασης.
Τα ποτενσιόμετρα είναι μεταβλητές αντιστάσεις των οποίων η τιμή της αντίστασης μπορεί να αλλάξει γυρνώντας τον μοχλό που διαθέτουν στο πάνω μέρος τους. Σίγουρα έχετε χρησιμοποιήσει ένα στο παρελθόν, π.χ. για να αλλάξετε την ένταση σε ένα στερεοφωνικό. Μεταβλητές αντιστάσεις είναι και οι ροοστάτες. Έχουν ακριβώς την ίδια χρήση, απλά αλλάζει το μέγεθος και δεν έχουν μοχλό για την αλλαγή της αντίστασης (δείτε τέρμα δεξιά στην παραπάνω εικόνα).
Τα ποτενσιόμετρα υπάρχουν σε διάφορα μεγέθη αντίστασης. Μπορούν να δώσουν τιμές απο 0 Ω μέχρι την μέγιστη τιμή για την οποία έχουν σχεδιαστεί. Για παράδειγμα, ένα ποτενσιόμετρο 10 ΚΩ μπορεί να δώσει τιμές απο 0 Ω μέχρι μέγιστο 10 ΚΩ.
Σε αυτόν τον οδηγό θα μάθετε να χρησιμοποιείτε το ποτενσιόμετρο με και χωρίς την χρήση του Arduino για να αλλάξετε την φωτεινότητα ενός led. Θα μάθετε επίσης πως να χρησιμοποιείτε τις συναρτήσεις analogRead() και map().
Τα ποτενσιόμετρα είναι μεταβλητές αντιστάσεις των οποίων η τιμή της αντίστασης μπορεί να αλλάξει γυρνώντας τον μοχλό που διαθέτουν στο πάνω μέρος τους. Σίγουρα έχετε χρησιμοποιήσει ένα στο παρελθόν, π.χ. για να αλλάξετε την ένταση σε ένα στερεοφωνικό. Μεταβλητές αντιστάσεις είναι και οι ροοστάτες. Έχουν ακριβώς την ίδια χρήση, απλά αλλάζει το μέγεθος και δεν έχουν μοχλό για την αλλαγή της αντίστασης (δείτε τέρμα δεξιά στην παραπάνω εικόνα).
Τα ποτενσιόμετρα υπάρχουν σε διάφορα μεγέθη αντίστασης. Μπορούν να δώσουν τιμές απο 0 Ω μέχρι την μέγιστη τιμή για την οποία έχουν σχεδιαστεί. Για παράδειγμα, ένα ποτενσιόμετρο 10 ΚΩ μπορεί να δώσει τιμές απο 0 Ω μέχρι μέγιστο 10 ΚΩ.
Σε αυτόν τον οδηγό θα μάθετε να χρησιμοποιείτε το ποτενσιόμετρο με και χωρίς την χρήση του Arduino για να αλλάξετε την φωτεινότητα ενός led. Θα μάθετε επίσης πως να χρησιμοποιείτε τις συναρτήσεις analogRead() και map().
How to use a potentiometer
Όλα τα ποτενσιόμετρα έχουν τρεις ακροδέκτες. Οι εξωτερικοί χρησιμοποιούνται για την τροφωδοσία (Vred & GND). Ο μεσαίος ακροδέκτης αποδίδει την τιμή της μεταβλητής αντίστασης ανάλογα με την θέση του μοχλού.
Ας το δούμε στην πράξη, θα χρειαστούμε:
|
Συνδέστε την μπαταρία στους εξωτερικούς ακροδέκτες του ποτενσιόμετρου και το μεγάλο άκρο του led στον μεσαίο ακροδέκτη. Γυρίστε τον μοχλό αριστερά και δεξιά. Θα δείτε πως αλλάζει την φωτεινότητα του led.
Ας δούμε τώρα πως μπορούμε να το συνδέσουμε με το Arduino.
Ας δούμε τώρα πως μπορούμε να το συνδέσουμε με το Arduino.
Τα υλικά που θα χρειαστούμε
Για το tutorial αυτό θα χρειαστούμε:Αν θέλετε για μεγαλύτερη ευκολία μπορείτε να χρησιμοποιήσετε το Breadboard Shield.
|
Το κύκλωμα
Οι συνδέσεις είναι αρκετά εύκολες, δείτε την παραπάνω εικόνα με το σχηματικό του κυκλώματος σε breadboard.
Ο κώδικας
Γυρνώντας τον μοχλό του ποτενσιόμετρου αλλάζουμε την τιμή της αντίστασης που αποδίδεται στον μεσαίο ακροδέκτη του. Η τιμή αυτή αποδίδει τάση μεταξύ 5V και 0V. Αν είχαμε ένα βολτόμετρο και ο μοχλός ήταν τέρμα αριστερά θα μετράγαμε 0V, ενώ αν ήταν τέρμα δεξιά θα μετράγαμε 5V (ή το αντίθετο). Στη αναλογική θύρα του arduino θα έφτανε η τιμή 0 ή 1023 αντίστοιχα.
Πως λειτουργεί ο κώδικας:
Πως λειτουργεί ο κώδικας:
- Διαβάζουμε την αναλογική τιμή απ' το μεσαίο pin του ποτενσιόμετρου
-> value=analogRead(potPin) - Κάνουμε αντιστοίχιση αναλογικών τιμών (0-1023) σε PWM (0-255)
-> value = map(value, 0, 1023, 0, 255); - Στέλνουμε την τιμή PWM στο LED
-> analogWrite(ledPin, value);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | /* Learn how to use a potentiometer to fade an LED with Arduino - Tutorial More info and circuit schematic: http://www.ardumotive.com/arduino-tutorials/arduino-fade-led Dev: Michalis Vasilakis / Date: 25/10/2014 */ //Constants: const int ledPin = 9; //pin 9 has PWM funtion const int potPin = A0; //pin A0 to read analog input //Variables: int value; //save analog value void setup(){ //Input or output? pinMode(ledPin, OUTPUT); pinMode(potPin, INPUT); //Optional } void loop(){ value = analogRead(potPin); //Read and save analog value from potentiometer value = map(value, 0, 1023, 0, 255); //Map value 0-1023 to 0-255 (PWM) analogWrite(ledPin, value); //Send PWM value to led delay(100); //Small delay } |
Κατεβάστε τον κώδικα απ' εδώ και ανοίξτε το αρχείο με το Arduino IDE.
|
|
Συγχαρητήρια!
Μόλις ολοκληρώσατε το τρίτο "How to" tutorial και έχετε μάθει μέχρι τώρα πως να χρησιμοποιείτε:
Μπορεί να μην το ξέρετε αλλά έχετε γίνει ένας Arduino Developer!
- LEDs
- ποτενσιόμετρα
- τις συναρτήσεις pinMode(), delay(), map(), digitalWrite(), analogWrite() και analogRead()
- μεταβλητές και σταθερές στον κώδικας
- την δoμή ελέγχου if
Μπορεί να μην το ξέρετε αλλά έχετε γίνει ένας Arduino Developer!