Εφαρμογές Αναλογικών Ε/Ε PWM (pulse Width Modulation)

Σχετικά έγγραφα
Εφαρμογές αναλογικών / Ψηφιακών

Εφαρμογές Σειριακής Επικοινωνίας

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017)

Προγραμματισμο ς σε Arduino

Ενσωματωμένα Συστήματα

Arduino Teachers Workshop

Φύλλο εργασίας 7 - Δημιουργώ τα δικά μου χρώματα με το RGB LED

Το κύκλωμα σε breadboard

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 1. Προγραμματισμός Φυσικών Συστημάτων. Νέα Ψηφιακά Αντικείμενα

Φύλλο εργασίας 6 - Θερμόμετρο εξωτερικού χώρου. Το κύκλωμα σε breadboard

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1. Arduino + LabVIEW: Μέτρηση Έντασης Φωτός με Φωτοαντίσταση. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία

Φύλλο εργασίας 4 - Δημιουργώ τα δικά μου χρώματα με το RGB LED

2017 Κατασκευάζω και Προγραμματίζω με τον μικροελεγκτή Arduino

Απλή Δομή Επιλογής. Ο κώδικας. //με χρήση μεταβλητών. delay (3000);

ΕΝΟΤΗΤΑ 5 Αναλογικά σήματα

Γνωριμία με το Arduino

Φύλλο εργασίας 3 - Χριστουγεννιάτικα φωτάκια (σταδιακή αύξηση και μείωση φωτεινότητας ενός LED) Το κύκλωμα σε breadboard

Ενσωματωμένα Συστήματα

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 5. Ρυθμίζοντας τη Φορά Περιστροφής. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD

Lab 1: Experimenting on Arduino & AI Sense

ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO. Υποψήφιος Διδάκτωρ

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO

Κωνσταντίνος Γκαλονάκης. Arduino: Προγραμματισμός στην πράξη

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016)

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW.

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

ΔΡΑΣΤΗΡΙΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO- 01a

για τις ρυθμίσεις LabView μέσα από το κανάλι και του καλωδίου USB.

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8. Μετρώντας Επιτάχυνση με το Accelerόμετρο (ADXL 335) Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Εκπαιδευτική Ρομποτική με ARDUINO. για εκπαιδευτικούς και μαθητές. 1o Μέρος: Απλά Κυκλώματα

ΕΝΟΤΗΤΑ 7: ΑΙΣΘΗΤΗΡΕΣ ΥΠΕΡΥΘΡΩΝ

ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ

Φύλλο εργασίας 4 - Αυτόματο φωτάκι νυκτός

Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Β : Επικοινωνία Υπολογιστή με Μικροελεγκτή

Έλεγχος κινητήρα συνεχούς ρεύματος με τρανζίστορ και Arduino

Project 5: Συνθέτοντας μουσική

ΡΟΜΠΟΤΙΚΗ ΜΕ ARDUINO - ARDUINO ΚΑΙ ΗΧΟΣ I. Δημιουργός: Δρ.Αθανάσιος Μπαλαφούτης Επιβλέπων: Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ

ΠΑΛΜΟΓΡΑΦΟΣ ΤΡΟΦΟ ΟΤΙΚΟ ΓΕΝΝΗΤΡΙΑ

Α. Βασική Χρήση κινητήρα - Servo με τη βιβλιοθήκη <Servo.h>

Workshops. Εισηγητής: Παλιούρας Αριστείδης

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

ΑΣΚΗΣΗ 0. Κύκλωμα - Όργανα

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια

Σημειώσεις για την Άσκηση 2: Μετρήσεις σε RC Κυκλώματα

Μια πρόταση διδασκαλίας για το μάθημα του προγραμματισμού Η/Υ στο Λύκειο με τη μεθοδολογία STEM

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

ΝΟΜΟΣ ΤΟΥ OHM ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: ΕΠΩΝΥΜΟ: ΟΝΟΜΑ: ΑΜ: 1 ΣΚΟΠΟΣ 1 2 ΘΕΩΡΗΤΙΚΟ ΥΠΟΒΑΘΡΟ 1 3 ΕΞΟΠΛΙΣΜΟΣ 5 4 ΕΞΑΡΤΗΜΑΤΑ 5

Συλλογή & Επεξεργασία Δεδομένων. Προγραμματίζοντας τον Arduino Μέρος Ι: Μεταβλητές, Εντολές Εισόδου & Εξόδου. Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE)

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 4. Οδηγώντας έναν DC Κινητήρα. Το κύκλωμα της Λειτουργίας DC Κινητήρα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007

ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2

Έργο 1 LED που αναβοσβήνει (LED Flasher)

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

4 Εισαγωγή στο Arduino

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Συλλογή & Επεξεργασία Δεδομένων Εξαμηνιαία ΡομποΚαθαριστής Μέρος Β : Το Πρόγραμμα. Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping).

Μάθημα 1 ΑΙΣΘΗΤΗΡΕΣ Ο Αισθητήρας Δύναμης. Επανεξέταση των βασικών εννοιών της C και του προγραμματισμού.

USB_6008_terminal_31. PCI_6023E_terminal_68. PCI_6023E_terminal_67

Εμμανουήλ Πουλάκης. Προγραμματίζοντας με τον μικροελεγκτή Arduino

FOSSCOMM ο Συνέδριο Κοινοτήτων Ανοιχτού Λογισμικού Σάββατο 20 Απριλίου Ομάδα Σχολής Ικάρων Εργαστήριο Arduino

ΑΣΚΗΣΗ 2 ΒΑΣΙΚΑ ΚΑΙ ΣΥΝΘΕΤΑ ΣΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ - ΕΙΚΟΝΑΣ

Εικόνα. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 05-1

ΔΙΔΑΚΤΙΚΟ ΣΕΝΑΡΙΟ ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΔΙΕΞΑΓΩΓΗΣ ΠΑΙΧΝΙΔΙΟΥ ΕΡΩΤΗΣΕΩΝ/ΑΠΑΝΤΗΣΕΩΝ ΜΕ ΧΡΗΣΗ ARDUINO - QUIZ GAME ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 3

Παράρτημα Φύλλο εργασίας 1: Δραστηριότητα 1 : Να αναβοσβήνει η φωτοδίοδος ανά ένα δευτερόλεπτο. Μέλη της ομάδας :

Εφαρμογές βασισμένες στο Arduino

ΑΣΚΗΣΗ 6. Μελέτη συντονισμού σε κύκλωμα R,L,C, σειράς

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ ΣΥΣΤΗΜΑΤΩΝ ΑΥΤΟΜΑΤΟΥ ΕΛΕΓΧΟΥ Ι

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας

2. Ο νόμος του Ohm. Σύμφωνα με το νόμο του Ohm, η τάση V στα άκρα ενός αγωγού με αντίσταση R που τον διαρρέει ρεύμα I δίνεται από τη σχέση: I R R I

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2. Προγραμματισμός Φυσικών Συστημάτων. Συστήματα Πραγματικών Εφαρμογών. Νέα Ψηφιακά Αντικείμενα

O Ψηφιακός Παλμογράφος

ΜΕΡΟΣ Α: Απαραίτητε γνώσει

Εργαστηριακές ασκήσεις λογικών κυκλωμάτων 11 A/D-D/A

Μάθημα 2 Δραστηριότητα 2: Δημιουργώντας το Μετεωρολογικό Σταθμό. Επανεξέταση των βασικών εννοιών της C και του προγραμματισμού.

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 3 Μέτρηση Θερμοκρασίας Σύστημα Ελέγχου Θερμοκρασίας. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ. Εργαστήριο 8 ο. Αποδιαμόρφωση PAM-PPM με προσαρμοσμένα φίλτρα

ΕΡΓΑΣΤΗΡΙΟ ΑΝΑΛΟΓΙΚΩΝ & ΨΗΦΙΑΚΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Τι θα απαντούσατε αλήθεια στην ίδια ερώτηση για την περίπτωση της επόμενης εικόνας;

- 1 - ΜΕΛΕΣΗ ΦΑΡΑΚΣΗΡΙΣΙΚΗ ΚΑΜΠΤΛΗ: Ηλεκτρικής πηγής, ωμικού καταναλωτή και διόδων πυριτίου και γερμανίου, με τη ΛΑ- LoggerProGR.

ΑΣΚΗΣΗ ΜHΧΑΤΡΟΝΙΚΗΣ. Τέλος όταν εισάγετε ένας σωστός συνδυασμός η ένδειξη του display να μηδενίζετε.

ΕΝΟΤΗΤΑ 6 LCD ΟΘΟΝΕΣ

Βασικές Εντολές MicroWorlds Pro.

ΟΡΓΑΝΑ & ΕΞΑΡΤΗΜΑΤΑ ΤΟΥ ΕΡΓΑΣΤΗΡΙΟΥ

ΑΣΚΗΣΗ 7 ΚΥΚΛΩΜΑ R-L-C: ΣΥΝΔΕΣΗ ΣΕ ΣΕΙΡΑ ΣΥΝΤΟΝΙΣΜΟΣ

Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Α : Υλικά

Σχεδιασμός Αποκωδικοποιητή και υλοποίηση του στο Logisim και στο Quartus. Εισαγωγή στο Logisim

Παιδιά κάτω των 13 ετών δε θα πρέπει να χρησιμοποιούν το κιτ χωρίς επίβλεψη. Μη συνδέετε την κύρια πλακέτα σε εξωτερική τροφοδοσία μεγάλης ισχύος.

ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΦΥΣΙΚΗΣ "ΑΡΙΣΤΟΤΕΛΗΣ" Γ Λυκείου Β Φάση: Πειραματικό μέρος : 14/04/2018 Q E-2

Φύλλο Εργασίας. Δραστηριότητα 1 Ανοίξτε το αρχείο DR01.html και δουλέψτε λίγο με την προσομοίωση του παλμογράφου για να εξοικειωθείτε.

Ενσωµατωµένα Συστήµατα

Δρ. Π. Ασβεστάς Τμήμα Μηχανικών Βιοϊατρικής Τεχνολογίας Τ.Ε

Ιατρικά Ηλεκτρονικά. Χρήσιμοι Σύνδεσμοι. ΙΑΤΡΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ - ΔΙΑΛΕΞΗ 2η. Σημειώσεις μαθήματος: E mail:

Transcript:

Εφαρμογές Αναλογικών Ε/Ε PWM (pulse Width Modulation) Εισαγωγή Σε αυτή την ενότητα θα δούμε εφαρμογές που χρησιμοποιούν τις αναλογικές Εισόδους/Εξόδους του Arduino ή την τεχνική PWM. Ψηφιακό vs Αναλογικό σήμα Η βασική διαφορά που υφίσταται ανάμεσα στα αναλογικά και στα ψηφιακά σήματα, είναι το είδος των τιμών που μπορεί να λάβει το πλάτος του σήματος. Στην περίπτωση των αναλογικών σημάτων, τα οποία αναπαρίστανται ως χρονικά μεταβαλλόμενες κυματομορφές, το πλάτος του σήματος σε κάθε χρονική στιγμή, μπορεί να πάρει οποιαδήποτε τιμή, ανάμεσα σε δύο ακραίες τιμές οι οποίες υπαγορεύουν το μέγιστο πλάτος του σήματος (π.χ. 5V και 0V). Αντίθετα, στη περίπτωση των ψηφιακών σημάτων, το πλάτος του σήματος μπορεί να πάρει μόνο μερικές διακριτές τιμές. Στις περισσότερες περιπτώσεις το ψηφιακό σήμα μπορεί να έχει μόνο δύο τιμές τάσης, εκ των οποίων η μια τάση αναπαριστά το δυαδικό 0 (0V) και η άλλη το δυαδικό 1(5V). Ψηφιακό σήμα οι τιμές που παίρνει είναι διακριτές (0 ή 1). Αναλογικό σήμα οι τιμές που παίρνει είναι συνεχόμενες (μεταξύ 0V και 5V). Ψηφιακοί vs Αναλογικοί ακροδέκτες εισόδου/εξόδου Αναλογικά Pin: Ο μικροελεγκτής της Atmel που χρησιμοποιεί το Arduino περιέχει έναν ADC 6 καναλιών αναλογικού σήματος. Ο ADC διαθέτει ανάλυση 10 bit, επιστρέφοντας ακέραιες τιμές από 0 έως 1023. Ενώ η κύρια λειτουργία τους είναι να διαβάζουν αναλογικούς αισθητήρες, μπορούν να λειτουργήσουν και ως pin εισόδου/εξόδου γενικού σκοπού, όπως ακριβώς και οι ψηφιακές. Έτσι, εάν χρειαζόμαστε περισσότερες εισόδους ή εξόδους μπορούμε να χρησιμοποιήσουμε και τα αναλογικά pin. Τα αναλογικά pin μπορούν να χρησιμοποιηθούν με τον ίδιο τρόπο που χρησιμοποιούνται και τα ψηφιακά, χρησιμοποιώντας τα ψευδώνυμα A0 για την αναλογική είσοδο 0,κτλ. π.χ πώς μπορούμε να ρυθμίσουμε ένα αναλογικό pin να λειτουργήσει ως έξοδος pinmode(a0,output); digitalwrite(a0,high); Τα αναλογικά pin έχουν επίσης εσωτερικές αντιστάσεις, οι οποίες λειτουργούν πανομοιότυπα με αυτές που υπάρχουν στα ψηφιακά pin. Και ενεργοποιούνται από την εντολή digitalwrite(α0,high), ενώ το pin είναι εισόδου. Να θυμάστε όμως ότι η χρήση των pullup αντιστάσεων επηρεάζει τις τιμές της analogread().η εντολή analogread δεν θα λειτουργήσει σωστά εάν το pin έχει ρυθμιστεί προηγουμένως ως έξοδος. Έτσι σε αυτή την περίπτωση θα πρέπει να επαναρθμιστεί πάλι σε είσοδο πριν χρησιμοποιηθεί το analoread. Επίσης, η μικρή καθυστέρηση ανάμεσα στην ανάγνωση ενός αναλογικού pin μπορεί να προκαλέσει θόρυβο στο αναλογικό σήμα. Έτσι είναι επιθυμητή η προσθήκη μιας μικρής καθυστέρησης ανάμεσα στις αναγνώσεις. Ψηφιακά pin: Τα ψηφιακά pin είναι πιο απλά αφού έχουν μόνο δύο καταστάσεις, ON ή OFF. Σε όρους του Arduino HIGH ή LOW. Μπορούμε να τις χρησιμοποιήσουμε ως pin εισόδου και εξόδου με την χρήση της εντολής pinmode και την λειτουργία του pin, INPUT ή OUTPUT. Εάν δεν χρησιμοποιήσουμε την εντολή pinmode η προεπιλεγμένη λειτουργία είναι INPUT. 1 P a g e

Μέθοδος PWM Η PWM είναι μια τεχνική για τον έλεγχο του αναλογικού σήματος, χρησιμοποιώντας την ψηφιακή έξοδο ενός μικροελεγκτή (εδώ: Arduino). Η ψηφιακή έξοδος χρησιμοποιείται για τη δημιουργία ενός τετραγωνικού παλμού, όπου το σήμα εναλλάσσεται μεταξύ των τιμών 0 (off) και 1 (on). Αυτό το on/off μοτίβο, μπορεί να προσομοιώσει πλήρως τις τάσεις μεταξύ 5V (1-on) και 0V (0-off), αλλάζοντας το τμήμα του χρόνου που το σήμα είναι ενεργό με το τμήμα του χρόνου που είναι ανενεργό. Η διάρκεια του χρόνου λέγεται πλάτος του παλμού. Για να πάρουμε διαφορετικές αναλογικές τιμές, αρκεί να αλλάξουμε το πλάτος του παλμού. Εάν επαναλάβουμε αυτό το μοτίβο αρκετά γρήγορα με τη χρήση ενός LED για παράδειγμα, το αποτέλεσμα θα είναι σαν το σήμα να έχει μια σταθερή τάση μεταξύ 0v-5V, η οποία ελέγχει τη φωτεινότητα του LED. Στα παρακάτω γραφήματα οι πράσινες γραμμές αντιπροσωπεύουν μια χρονική περίοδο. Αυτή η διάρκεια ή περίοδος είναι το αντίστροφο της συχνότητας του PWM. Με άλλα λόγια, αφού η συχνότητα του PWM του arduino είναι 500HZ, η περίοδος θα είναι ίση με 2ms η καθεμία. Με την κλήση της συνάρτησης analogwrite() προσδιορίζουμε το ποσοστό του κύκλου μηχανής που καθορίζει το πόσο μένει ενεργή η περίοδος του σήματος. 0% duty cycle analogwrite(0) 25% duty cycle analogwrite(64) 5V 5V 0V 50% duty cycle analogwrite(127) 75% duty cycle analogwrite(191) 0V 5V 5V 0V 100% duty cycle analogwrite(255) 0V 5V 0V Η analogwrite() λειτουργεί στη κλίμακα 0 έως 255, η οποία ελέγχει και το μήκος του παλμού. Έτσι ώστε η analogwrite(255) ζητά το 100% του κύκλου λειτουργίας (πάντα ενεργό),( δηλαδή έναν παλμό που η διάρκειά του είναι ίση με όλο τον χρόνο της περιόδου μέχρι τον επόμενο παλμό,) η analogwrite(191) ζητά το 75% του κύκλου λειτουργίας, η analogwrite(127) ζητά το 50% του κύκλου λειτουργίας, η analogwrite(64) ζητά το 25% του κύκλου λειτουργίας και η analogwrite(0) ζητά το 0% του κύκλου λειτουργίας (πάντα ανενεργό). 2 P a g e

Εφαρμογή 1: Fade /* Fade Το παράδειγμα αυτό δείχνει πως να ελέγξουμε την φωτεινότητα ενός LED, το οποίο είναι συνδεδεμένο στο pin 9, χρησιμοποιώντας την συνάρτηση analogwrite(), δηλαδή την μέθοδο PWM. */ //δηλώνουμε τον ακροδέκτη που είναι συνδεδεμένο το LED int led = 9; /*δηλώνουμε μια μεταβλητή η οποία θα μας βοηθήσει να ρυθμίσουμε την φωτεινότητα του LED*/ int brightness = 0; //δηλώνουμε το βήμα με το οποίο αυξάνεται η τιμή της φωτεινότητας int fadeamount = 5; void setup() { //αρχικοποιούμε τον ακροδέκτη που είναι συνδεδεμένο το LED, ως έξοδο pinmode(led, OUTPUT); void loop() { //ανάβει το led σύμφωνα με την τιμή που έχει η φωτεινότητα. analogwrite(led, brightness); //αλλάζει η φωτεινότητα την επόμενη φορά που θα τρέξει η loop brightness = brightness + fadeamount; //αντιστρέφουμε την κατεύθυνση του ξεθωριάσματος (fade) όταν αυτό τελειώσει if (brightness == 0 brightness == 255) { fadeamount = -fadeamount ; delay(30); Εφαρμογή 2: Διαχείριση RGB LED Άλλη μια ενδεικτική εφαρμογή των ψηφιακών εξόδων PWM είναι η χρήση ενός RGB LED. Τι είναι ένα RGB LED; Με ένα RGB (Red,Green,Blue) LED, είμαστε σε θέση να παράγουμε οποιοδήποτε χρώμα. Με την πρώτη ματιά, το RGB LED μοιάζει ακριβώς όπως το κανονικό LED, ωστό μέσα στο συνηθισμένο πακέτο LED, στην πραγματικότητα υπάρχουν τρία LEDs, ένα κόκκινο, ένα πράσινο και ένα μπλε. Με τον έλεγχο της φωτεινότητας για κάθε μια από τα μεμονωμένα LED, μπορούμε να συνδυάσουμε σχεδόν οποιοδήποτε χρώμα θέλουμε. 3 P a g e

Στην αρχή η χρήση ενός RGB LED ίσως φαίνεται δύσκολη, αλλά γρήγορα θα καταλάβουμε ότι ο έλεγχος είναι ο ίδιος με αυτόν ενός απλού LED. Συνδυάζουμε τα χρώματα ακριβώς με τον ίδιο τρόπο που μπορούμε να συνδυάσουμε χρώματα σε μια παλέτα- ρυθμίζοντας την φωτεινότητα καθενός από τα τρία LED. Αυτό θα το κάνουμε με την βοήθεια της τεχνικής PWM και της εντολής analogwrite(), με την οποία μπορούμε να θέσουμε μια μεταβλητή τιμή παροχής στον ακροδέκτη εξόδου. Υλικά : Arduino Board 220Ω αντίσταση (x3) RGB LED(x1) Βήμα 1: Αρχικά, πρέπει να κατασκευάσουμε το κύκλωμα της εφαρμογής. Θεωρητικό κύκλωμα Πρακτικό κύκλωμα Το RGB LED έχει τέσσερα σκέλη, από τα οποία το ποιο μακρύ είναι το σκέλος της ανόδου και στα RGB LED κοινής ανόδου συνδέεται στα 5V ενώ στα κοινή καθόδου στη γείωση. 4 P a g e

Εμείς, έχουμε LED κοινής ανόδου, έτσι συνδέουμε το μακρύτερο σκέλος στα 5V. Τα άλλα τρία σκέλη αντιπροσωπεύουν τις καθόδους των τριών LED (κόκκινο, πράσινο, μπλε). Το σκέλος που βρίσκεται αριστερά του μακριού σκέλους αντιπροσωπεύει το κόκκινο χρώμα, το σκέλος που βρίσκεται στα δεξιά του μακριού σκέλους είναι το πράσινο, ενώ το σκέλος που μένει είναι το μπλε. Τα σκέλη που αντιπροσωπεύουν τα LED ντα συνδέουμε σε όποιες ψηφιακές εξόδους του Arduino θέλουμε, αρκεί να έχουν το σύμβολο PWM. Γιατί τα RGB LED μπορούν να αλλάξουν χρώμα; Ο λόγος για τον οποίο μπορούμε να αναμείξουμε οποιοδήποτε χρώμα που μας αρέσει με την μεταβολή των ποσοτήτων του κόκκινου, του πράσινου και του μπλε φωτός είναι ότι το μάτι έχει τρεις τύπους υποδοχέων του φωτός σε αυτό (κόκκινο, πράσινο, μπλε). Τα μάτια μας και ο εγκέφαλος επεξεργάζονται τις ποσότητες του κόκκινου, του πράσινου και του μπλε και το μετατρέπει σε ένα χρώμα φάσματος. Εάν ρυθμίσουμε την φωτεινότητα των τριών LED για να είναι η ίδια, τότε το χρώμα που θα προκύψει είναι το λευκό. Αν απενεργοποιήσουμε το μπλε Led, έτσι ώστε να ανάβουν μόνο το κόκκινο και το πράσινο LED με την ίδια φωτεινότητα, τότε το χρώμα που προκύπτει είναι το κίτρινο. Μπορούμε να ελέγξουμε την φωτεινότητα του κάθε LED ξεχωριστά, καθιστώντας δυνατή την μίξη τους και τη δημιουργία οποιουδήποτε χρώματος θέλουμε. Βήμα 2: Αφού κατασκευάσουμε το κύκλωμα της εφαρμογής, πάμε να υλοποιήσουμε και τον πρόγραμμά μας. Στο παρακάτω πρόγραμμα θα ανάβουμε και θα σβήνουμε το LED σε διαφορετικά χρώματα. Εδώ θα δούμε τα χρώματα κόκκινο, πράσινο, μπλε, κίτρινο, μωβ και θαλασσί. /* RGB Blink Θα ανάψουμε και θα σβήσουμε ένα RGB LED για 1 sec, στα εξής χρώματα: κόκκινο,πράσινο, μπλε, κίτρινο, μωβ, θαλασσί. */ //Δηλώνουμε τους ακροδέκτες που είναι συνδεδεμένο το RGB LED int redpin=11; //κόκκινο LED int greenpin=10; //πράσινο LED 5 P a g e

int bluepin=9; //μπλε LED void setup(){ //Αρχικοποιούμε τα pin που είναι συνδεδεμένα τα LED ως εξόδους pinmode(redpin,output); //κόκκινο LED pinmode(greenpin,output); //πράσινο LED pinmode(bluepin,output); //μπλε LED void loop(){ setcolor(255,0,0); //κόκκινο χρώμα setcolor(0,255,0); //πράσινο χρώμα setcolor(0,0,255); //μπλε χρώμα setcolor(255,255,0); //κίτρινο χρώμα setcolor(80,0,80); //μωβ χρώμα setcolor(0,255,255); //θαλασσί χρώμα /*Δημιουργούμε την συνάρτηση setcolor για να μπορέσουμε να δημιουργήσουμε μια ψηφιακή παλέτα χρωμάτων. Πιο απλά, παίρνει ως όρισμα τις τιμές κάθε χρώματος και ανάβει το αντίστοιχο LED με την τεχνική PWM ή αλλιώς θέτει την φωτεινότητα σε κάθε LED*/ void setcolor(int red, int green, int blue){ analogwrite(redpin,red); //ανάβει το κόκκινο LED analogwrite(greenpin,green); //ανάβει το πράσινο LED analogwrite(bluepin,blue); //ανάβει το μπλε LED Απεικόνιση Χρωμάτων με τιμές HEX (HTML COLORS) Αν δεν ξέρουμε πως να σχηματίσουμε το επιθυμητό χρώμα μπορούμε να συμβουλευτούμε την παλέτα χρωμάτων που χρησιμοποιείται και για την κατασκευή ιστοσελίδων, όπου οι τιμές των χρωμάτων ορίζονται στο δεκαεξαδικό σύστημα (HEX). Για παράδειγμα: Μαύρο 000000 Σκούρο μπλε 00008B 6 P a g e

Έστω πως θέλουμε να εμφανίσουμε το μωβ (#4B0082).Ξεχωρίζουμε το κόκκινο το πράσινο και το μπλε ως εξής: Και τις τοποθετούμε στη συνάρτηση setcolor: κόκκινο πράσινο μπλε 4Β 00 82 setcolor(0x4b, 0x0, 0x82); Χρησιμοποιήσαμε το 0x για να δείξουμε ότι οι αριθμοί που χρησιμοποιήθηκαν είναι στο δεκαεξαδικό σύστημα. Εφαρμογή 3: AnalogSerialRead Χρήση ποτενσιόμετρου Περιγραφή: Η εφαρμογή αυτή δείχνει πως μπορούμε να διαβάσουμε με την βοήθεια της σειριακής οθόνης - μια αναλογική είσοδο από το φυσικό κόσμο, χρησιμοποιώντας ένα ποτενσιόμετρο. Ένα ποτενσιόμετρο είναι μια απλή μηχανική συσκευή που παρέχει μια μεταβαλλόμενη ποσότητα της αντίστασης, όταν ο άξονας του είναι ενεργοποιημένος. Με την διέλευση τάσης μέσω ενός ποτενσιόμετρου σε μια αναλογική είσοδο του arduino, είναι δυνατό να μετρηθεί η ποσότητα της αντίστασης που παράγεται από ένα ποτενσιόμετρο ως μια αναλογική τιμή. Υλικά: Arduino Board 10k ποτενσιόμετρο Βήμα 1: Θεωρητικό κύκλωμα Πρακτικό κύκλωμα Για την υλοποίηση του κυκλώματος θα χρειαστούμε τρία καλώδια για να συνδέσουμε το ποτενσιόμετρο με το arduino. Το πρώτο καλώδιο θα συνδεθεί σε έναν από τους δύο ακροδέκτες που βρίσκονται στα άκρα του ποτενσιόμετρου και μετά με τον ακροδέκτη GND του arduino (το μαύρο καλώδιο που φαίνεται στο πρακτικό κύκλωμα), το δεύτερο καλώδιο θα συνδεθεί με το άλλο άκρο του 7 P a g e

ποτενσιόμετρου και έπειτα με τα 5V του arduino (το κόκκινο καλώδιο που φαίνεται στο πρακτικό κύκλωμα) και το τρίτο θα συνδεθεί με το κεντρικό ακροδέκτη του ποτενσιόμετρου και στην αναλογική είσοδο 0 του arduino το (μπλε καλώδιο που φαίνεται στο πρακτικό κύκλωμα). Έτσι περιστρέφοντας τον άξονα του ποτενσιόμετρου, θα αλλάξει το ποσό της αντίστασης που υπάρχει εντός του ποτενσιόμετρου. Αυτό αλλάζει την τάση που περνάει μέσα από το ποτενσιόμετρο. Όταν ο άξονας είναι στραμμένος προς τα 5V τότε ο ακροδέκτης δίνει 5V ενώ από την αναλογική είσοδο διαβάζουμε την τιμή 1023. Αντίστοιχα αν ο άξονας είναι στραμμένος προς την γείωση ο ακροδέκτης δίνει 0V ενώ από την αναλογική είσοδο διαβάζουμε την τιμή 0. Potensiometer Map Knob στα 5V Αρχική κατάσταση Knob στα 0V 5V A0 GND 5V A0 GND Στο εσωτερικό του arduino υπάρχει ένα κύκλωμα που ονομάζεται μετατροπέας αναλογικού σε ψηφιακό που διαβάζει την τάση αυτή και την μετατρέπει σε έναν αριθμό από 0 έως 1023. Όταν ο άξονας στρέφεται σ όλη την διαδρομή προς την κατεύθυνση που βρίσκεται ο ακροδέκτης που έχουμε στη γείωση υπάρχουν 0V στον πείρο και η τιμή που επιστρέφετε είναι 0. Αντίθετα, αν ο άξονας στρέφεται προς την αντίθετη κατεύθυνση (στα 5V) τότε υπάρχουν 5V στον πείρο και η τιμή εισόδου είναι 1023. Βήμα 2: Αφού κατασκευάσουμε το κύκλωμα της εφαρμογής θα περάσουμε στην υλοποίηση του κώδικα. /*Analog Read Serial Με την εφαρμογή αυτή θα διαβάσουμε την κατάσταση ενός ποτενσιόμετρου μέσω της σειριακής οθόνης. */ // Δηλώνουμε τον ακροδέκτη αναλογικής εισόδου που χρησιμοποιούμε (Α0) int sensorpin=a0; void setup(){ //αρχικοποιούμε την σειριακή επικοινωνία στα 9600bps Serial.begin(9600); 8 P a g e

void loop(){ /*Διαβάζουμε την κατάσταση του ποτενσιόμετρου με την χρήση της συνάρτησης analogread και την τοποθετούμε στη μεταβλητή sensorvalue*/ int sensorvalue=analogread(sensorpin); //εμφανίζουμε στην οθόνη την τιμή της κατάστασης του ποτενσιόμετρου Serial.println(sensorValue); Η πρώτη γραμμή του κώδικα είναι η δήλωση της μεταβλητής sensorpin, η οποία αντιπροσωπεύει τον αναλογικό ακροδέκτη που θα συνδέσουμε το ποτενσιόμετρο. Το A0 αναγνωρίζεται από το σύστημα ως ο αναλογικός ακροδέκτης 0. Τύπος μεταβλητής Όνομα μεταβλητής = Τιμή ανάθεσης ; int sensorpin = A0 ; Έπειτα, μέσα στη setup ενεργοποιούμε την σειριακή επικοινωνία, με την χρήση της Serial.begin(). Όνομα βιβλιοθήκης. Όνομα μεθόδου (ορίσματα) ; Serial. begin (9600) ; Αφού, τελειώσουμε και με την setup περνάμε στη loop, όπου θα δημιουργήσουμε μια μεταβλητή για να αποθηκεύσουμε την τιμή της αντίστασης (μεταξύ 0 και 1023) του ποτενσιόμετρου. Τύπος μεταβλητής Όνομα μεταβλητής = Συνάρτηση (ορίσματα) ; int sensorvalue = analogread (sensorpin) ; Τέλος θα πρέπει να εκτυπώσουμε τις πληροφορίες αυτές στο σειριακό παράθυρο ως δεκαδική τιμή (DEC). Αυτό γίνεται με την εντολή Serial.println(). Όνομα βιβλιοθήκης. Όνομα μεθόδου (ορίσματα) ; Serial. println (sensorvalue) ; Τώρα ανοίγουμε το Serial monitor από το Arduino IDE. Αυτό που θα πρέπει να εμφανιστεί είναι μια σταθερή ροή αριθμών που κυμαίνονται από 0 έως 1023, συσχετίζονται με την τιμή που επιστρέφει το ποτενσιόμετρο. Καθώς, γυρίζουμε το ποτενσιόμετρο, οι αριθμοί αυτοί θα αλλάζουν. Αυτό γιατί το arduino χρησιμοποιεί 10bit αναλογικής τάσης σε ψηφιακή, η οποία ανέρχεται σε 1024 νούμερα. Ως εκ τούτου μια τάση 0V αντιστοιχεί σε μια αριθμητική τιμή 0, ενώ μια τάση 5V αντιστοιχεί σε μια αριθμητική τιμή 1024. Έτσι η αριθμητική αξία των 3V υπολογίζεται ως εξής: 3 5 = x 1024 3 1024 x = = ~614 5 9 P a g e

Εφαρμογή 4: Έλεγχος φωτεινότητας LED με χρήση ποτενσιόμετρου Αφού είδαμε πως λειτουργεί η τεχνική pwm και το ποτενσιόμετρο, ας δούμε πως μπορούμε να τα συνδυάσουμε για να ελέγξουμε την φωτεινότητα ενός LED. Υλικά: Arduino board Led (x1) Αντίσταση 220Ω (x1) Ποτενσιόμετρο 10k (x1) Βήμα 1: Αρχικά θα ξεκινήσουμε φτιάχνοντας το κύκλωμα της εφαρμογής, συνδέοντας ένα LED και ένα ποτενσιόμετρο στο Arduino με τους τρόπους που έχουμε μάθει. Θεωρητικό κύκλωμα Πρακτικό κύκλωμα Βήμα 2: Αφού κατασκευάσουμε το κύκλωμα της εφαρμογής, μπορούμε να περάσουμε στο κώδικα αυτής. Με το παρακάτω κώδικα θα ρυθμίσουμε την φωτεινότητα του Led με τη χρήση ποτενσιόμετρου. /*Analog Read Serial Με την εφαρμογή αυτή θα διαβάσουμε την κατάσταση ενός ποτενσιόμετρου μέσω της σειριακής οθόνης. */ // Δηλώνουμε τον ακροδέκτη αναλογικής εισόδου που χρησιμοποιούμε (Α0) int sensorpin=a0; // Δηλώνουμε τον ακροδέκτη ψηφιακής (pwm) εισόδου που χρησιμοποιούμε (9) int ledpin=9; void setup(){ //αρχικοποιούμε την σειριακή επικοινωνία στα 9600bps Serial.begin(9600); pinmode(ledpin,output); 10 P a g e

void loop(){ /*Διαβάζουμε την κατάσταση του ποτενσιόμετρου με την χρήση της συνάρτησης analogread και την τοποθετούμε στη μεταβλητή sensorvalue*/ int sensorvalue=analogread(sensorpin); //θέτουμε ως τιμή φωτεινότητας την τιμή που παίρνουμε από το ποτενσιόμετρο int brightness=sensorvalue; //ανάβουμε το led κ ρυθμίζουμε την φωτεινότητα analogwrite(led,brightness); //εμφανίζουμε στην οθόνη την τιμή της κατάστασης του ποτενσιόμετρου Serial.println(sensorValue); 11 P a g e