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

18
Έργο 1 – LED που αναβοσβήνει (LED Flasher) Σε αυτό το Έργο πρόκειται να συνδέσετε ένα LED σε μία από τις ψηφιακές ακίδες (Digital Pin) στην πλακέτα Arduino και θα το κάνετε να αναβοσβήνει. Θα μάθετε επίσης πώς λειτουργεί το υλικό και το λογισμικό για αυτό το έργο, μαθαίνοντας λίγο για την ηλεκτρονική και ταυτόχρονα την κωδικοποίηση στη γλώσσα Arduino (η οποία είναι μια παραλλαγή της γλώσσας προγραμματισμού C). Εξαρτήματα που θα χρειαστείτε 1 Nr. Breadboard 400 tie-point (τρύπες ή σημεία σύνδεσης) 1 Nr. 5mm LED 1 Nr. 100 Ohms Resistor * 2 Nr. Jumper wires Male to Male * Αυτή η τιμή μπορεί να διαφέρει ανάλογα με το LED που χρησιμοποιείτε. Στο κείμενο θα εξηγηθεί πώς να την επεξεργαστείτε. Το καλύτερο είδος breadboard για την πλειοψηφία των έργων που θα κατασκευάσουμε είναι ένα breadboard με 840 tie-point (τρύπες ή σημεία σύνδεσης). Πρόκειται για breadboard, με μέγεθος περίπου 16,5 cm X 5,5 cm με 840 τρύπες (ή σημεία σύνδεσης). Συνήθως τα breadboards έχουν 1/18

Transcript of Έργο 1 – LED που αναβοσβήνει (LED...

Page 1: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Έργο 1 – LED που αναβοσβήνει (LED Flasher) Σε αυτό το Έργο πρόκειται να συνδέσετε ένα LED σε μία από τις ψηφιακές ακίδες (Digital Pin)

στην πλακέτα Arduino και θα το κάνετε να αναβοσβήνει. Θα μάθετε επίσης πώς λειτουργεί το

υλικό και το λογισμικό για αυτό το έργο, μαθαίνοντας λίγο για την ηλεκτρονική και ταυτόχρονα

την κωδικοποίηση στη γλώσσα Arduino (η οποία είναι μια παραλλαγή της γλώσσας

προγραμματισμού C).

Εξαρτήματα που θα χρειαστείτε 1 Nr. Breadboard 400 tie-point (τρύπες ή σημεία σύνδεσης) 1 Nr. 5mm LED

1 Nr. 100 Ohms Resistor * 2 Nr. Jumper wires Male to Male

* Αυτή η τιμή μπορεί να διαφέρει ανάλογα με το LED που χρησιμοποιείτε. Στο κείμενο θα εξηγηθεί πώς να την επεξεργαστείτε. Το καλύτερο είδος breadboard για την πλειοψηφία των έργων που θα κατασκευάσουμε είναι ένα

breadboard με 840 tie-point (τρύπες ή σημεία σύνδεσης). Πρόκειται για breadboard, με μέγεθος

περίπου 16,5 cm X 5,5 cm με 840 τρύπες (ή σημεία σύνδεσης). Συνήθως τα breadboards έχουν

1/18

Page 2: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

μικρές εισδοχές (dovetails) στο πλάι που σας επιτρέπουν να συνδέσετε μερικές από αυτές μαζί

για να κάνετε μεγαλύτερες πλάκες εργασίας για πιο σύνθετα έργα.

Η λυχνία LED θα πρέπει να είναι 5mm από οποιοδήποτε χρώμα. Θα χρειαστεί να γνωρίζετε το

ρεύμα και την τάση (μερικές φορές καλείται forward current and forward voltage) του LED έτσι

ώστε να μπορέσετε να υπολογίσετε την τιμή της αντίστασης που απαιτείται - θα υπολογίσουμε

αυτή την τιμή αργότερα στο έργο.

Τα συρμάτινα καλώδια που θα χρησιμοποιήσουμε μπορούν να είναι είτε εμπορικά διαθέσιμα

καλώδια βραχυκυκλωμάτων (συνήθως με διαμορφωμένα άκρα για να διευκολύνουν την

τοποθέτηση στο breadboard) είτε μπορείτε να φτιάξετε τα δικά σας κόβοντας κοντά κομμάτια

από σκληρό μονόκλωνο σύρμα και απογυμνώνοντας περίπου 6mm από το άκρο.

2/18

Page 3: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Οι Συνδέσεις (το κύκλωμα) Πρώτον, βεβαιωθείτε ότι το Arduino απενεργοποιείται αποσυνδέοντας το από το καλώδιο USB.

Τώρα, πάρτε το breadboard σας, το LED, την αντίσταση και τα καλώδια και συνδέστε τα όλα

όπως φαίνεται στο Σχήμα 2-1

Σχήμα 2-1. Το κύκλωμα του Έργου 1 – LED Flasher

Δεν έχει σημασία αν χρησιμοποιείτε διαφορετικά έγχρωμα καλώδια ή χρησιμοποιείτε

διαφορετικές οπές στο breadboard αρκεί τα εξαρτήματα και τα καλώδια να είναι συνδεδεμένα

στην ίδια σειρά όπως στο Σχήμα 2-1. Προσέχετε όταν εισάγετε εξαρτήματα στο breadboard. Αν

το breadboard σας είναι ολοκαίνουργιο, οι λαβές στις οπές θα είναι δύσκαμπτες. Εάν δεν

τοποθετήσετε προσεκτικά τα εξαρτήματα, μπορεί να προκληθεί ζημιά.

Βεβαιωθείτε ότι η λυχνία LED είναι σωστά συνδεδεμένη με το μακρύτερο πόδι να συνδέεται με

την ψηφιακή ακίδα (Digital Pin) 10. Ο μακρύς ακροδέκτης είναι η άνοδος της λυχνίας LED και

3/18

Page 4: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

πρέπει πάντα να συνδέεται στην τάση + 5V (στην περίπτωση αυτή, βγαίνει από την ψηφιακή

ακίδα 10).

Ο κοντός ακροδέκτης είναι η κάθοδος και πρέπει να πάει στο GND (γη κυκλώματος).

Όταν είστε βέβαιοι ότι όλα είναι σωστά συνδεδεμένα, ενεργοποιήστε το Arduino και συνδέστε το

καλώδιο USB.

Εισαγωγή του κώδικα Ανοίξτε το IDE του Arduino και πληκτρολογήστε τον κώδικα από τη Λίστα 2-1.

Λίστα 2-1. Ο κώδικας για το Έργο 1

// Project 1 - LED Flasher int ledPin = 10; void setup() pinMode(ledPin, OUTPUT); void loop() digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); Πατήστε το κουμπί Verify/Compile στο επάνω μέρος του IDE για να βεβαιωθείτε ότι δεν

υπάρχουν σφάλματα στον κώδικα σας.

Εάν αυτό είναι επιτυχές, κάντε κλικ στο κουμπί Upload για να ανεβάσετε τον κώδικα στο

Arduino σας. Εάν έχετε κάνει τα πάντα σωστά, θα πρέπει τώρα να βλέπετε την κόκκινη λυχνία

LED στο breadboard να αναβοσβήνει κάθε δευτερόλεπτο.

Ας ρίξουμε μια ματιά στον κώδικα και το υλικό για να μάθετε πώς λειτουργούν και τα δύο.

4/18

Page 5: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Επισκόπηση του κώδικα Η πρώτη γραμμή κώδικα για αυτό το έργο είναι: // Project 1 - LED Flasher Αυτό είναι μόνο ένα σχόλιο στον κώδικα σας. Μπορείτε να πείτε ότι είναι ένα σχόλιο γιατί αρχίζει

με // και οποιοδήποτε κείμενο που αρχίζει με αυτόν τον τρόπο θα αγνοηθεί από τον

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

λειτουργεί ο κώδικας σας. Καθώς τα έργα σας γίνονται πιο περίπλοκα και ο κώδικας σας

επεκτείνεται εκατοντάδες ή ίσως χιλιάδες γραμμές, τα σχόλια θα είναι ζωτικής σημασίας για να

είναι εύκολο για σας να δείτε πώς λειτουργεί το κάθε μέρος του κώδικα. Μπορεί να

δημιουργήσετε ένα εκπληκτικό κομμάτι κώδικα, αλλά δεν μπορείτε να θυμηθείτε πώς λειτουργεί

όταν το επανεξετάζετε αρκετές ημέρες, εβδομάδες ή μήνες αργότερα. Τα σχόλια, ωστόσο, θα

σας υπενθυμίσουν τη λειτουργικότητά του. Επίσης, αν ο κώδικας σας προορίζεται να προβληθεί

από άλλους, τα σχόλια θα βοηθήσουν το άτομο αυτό να καταλάβει τι συμβαίνει στον κώδικα

σας. Ολόκληρος το ήθος του Arduino, και μάλιστα ολόκληρης της κοινότητας ανοιχτού κώδικα,

είναι να μοιραστεί κανείς κώδικα και σχήματα. Ελπίζω ότι όταν αρχίσετε να φτιάχνετε τα δικά

σας πράγματα με το Arduino, θα είστε πρόθυμοι να τα μοιραστείτε με τον κόσμο. Υπάρχει και άλλη μορφή για την υποβολή παρατηρήσεων. είναι μια εντολή block που

δεσμεύεται από / * και * /, έτσι όπως: /* All of the text within the slash and the asterisks is a comment and will be ignored by the compiler */ Το IDE του Arduino θα κάνει αυτόματα το χρώμα του κειμένου grey. Η επόμενη γραμμή του προγράμματος είναι: int ledPin = 10; και είναι γνωστό ως μεταβλητή. Μια μεταβλητή είναι ένας χώρος αποθήκευσης δεδομένων. Σε

αυτήν την περίπτωση, ρυθμίζετε μια μεταβλητή τύπου int ή integer (ακαίρεος). Ένας ακέραιος αριθμός είναι ένας αριθμός που κυμαίνεται από -32.768 έως 32.767. Έπειτα, έχετε ορίσει σε

αυτόν τον ακέραιο το όνομα ledPin και του έχετε δώσει τιμή 10. (Δεν χρειαζόταν να το

ονομάσετε ledPin, θα μπορούσατε να το ονομάσετε οτιδήποτε άλλο θέλατε αλλά θέλετε το

όνομα της μεταβλητής σας να είναι περιγραφικό, οπότε το ονομάζετε ledPin για να δείξει ότι

αυτή η μεταβλητή καθορίζει ποιο pin στο Arduino πρόκειται να χρησιμοποιήστε για να

συνδέσετε τα LED σας). Σε αυτή την περίπτωση, χρησιμοποιείτε την ψηφιακή ακίδα 10.

Στο τέλος αυτής της δήλωσης εμφανίζεται ένα ερωτηματικό ; . Αυτό το σύμβολο λέει στον

μεταγλωττιστή ότι αυτή η δήλωση είναι πλέον ολοκληρωμένη.

5/18

Page 6: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Παρόλο που μπορείτε να ονομάσετε τις μεταβλητές σας οτιδήποτε, κάθε όνομα μεταβλητής στη

C πρέπει να ξεκινά με ένα γράμμα, το υπόλοιπο του ονόματος μπορεί να αποτελείται από

χαρακτήρες, αριθμούς και χαρακτήρες υπογράμμισης. Σημειώστε ότι η C αναγνωρίζει τους

πεζούς και τους κεφαλαίους χαρακτήρες ως διαφορετικούς. Τέλος, δεν μπορείτε να

χρησιμοποιήσετε καμία από τις λέξεις-κλειδιά της C όπως main, while, switch κ.λπ. ως

ονόματα μεταβλητών. Οι λέξεις-κλειδιά είναι constants, variables, and function names τα

οποία ορίζονται ως μέρος της γλώσσας Arduino. Για να βοηθηθείτε να αποφύγετε να ονομάζετε

μια μεταβλητή με μια λέξη-κλειδί, όλες οι λέξεις-κλειδιά μέσα στο σκίτσο θα εμφανιστούν με

κόκκινο χρώμα.

Φανταστείτε μια μεταβλητή ως ένα μικρό κουτί όπου μπορείτε να κρατήσετε τα πράγματα. Έτσι

σε αυτό το σκίτσο, έχετε δημιουργήσει μια περιοχή στη μνήμη για να αποθηκεύσετε έναν αριθμό

ακέραιου τύπου και εσείς να έχετε αποθηκεύσει σε αυτήν την περιοχή τον αριθμό 10.

Τέλος, μια μεταβλητή ονομάζεται μεταβλητή επειδή μπορείτε να την αλλάξετε. Αργότερα, θα

εκτελέσετε μαθηματικούς υπολογισμούς για τις μεταβλητές, ώστε το πρόγραμμά σας να κάνει

πιο προηγμένα πράγματα. Η επόμενη γραμμή του προγράμματος είναι το setup() function: void setup() pinMode(ledPin, OUTPUT); Ένα σκίτσο Arduino πρέπει να έχει μια λειτουργία setup () και loop (), διαφορετικά δεν θα

λειτουργήσει. Η λειτουργία setup () εκτελείται μία φορά και μία φορά μόνο στην αρχή του

προγράμματος και είναι εκεί όπου θα δώσετε γενικές οδηγίες για την προετοιμασία του

προγράμματος πριν από την εκτέλεση του κύριου βρόχου, όπως για παράδειγμα pin modes, setting serial baud rates, κλπ. Βασικά, μια συνάρτηση είναι μια δέσμη κώδικα που

συναρμολογείτε σε ένα βολικό μπλοκ.

Για παράδειγμα, εάν δημιουργήσατε τη δική σας λειτουργία για να εκτελέσετε μια σειρά

περίπλοκων μαθηματικών που θα είχαν πολλές γραμμές κώδικα, θα μπορούσατε να εκτελέσετε

αυτόν τον κώδικα όσες φορές σας άρεσε απλώς καλώντας τη το όνομα της λειτουργίας αντί να

γράφετε ξανά τον κώδικα κάθε φορά. Θα διερευνήσετε τις λειτουργίες με περισσότερες

λεπτομέρειες αργότερα όταν αρχίσετε να δημιουργείτε τις δικές σας.

Στην περίπτωση αυτού του προγράμματος, ωστόσο, η λειτουργία setup () έχει μόνο μια

δήλωση που πρέπει να πραγματοποιηθεί. Η λειτουργία ξεκινά με void setup() Αυτό λέει στον μεταγλωττιστή ότι η συνάρτηση σας (function) δεν επιστρέφει (void) δεδομένα

και ονομάζεται setup, και ότι δεν περνάτε παράμετρους σε αυτήν, κενή παρένθεση (). Αν η συνάρτηση σας (function) επέστρεφε μια ακέραια τιμή και είχατε επίσης ακέραιες τιμές για

να περάσουν σε αυτήν (π.χ. για τη συνάρτηση να επεξεργαστεί), θα φαινόταν όπως:

6/18

Page 7: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

int myFunc (int x, int y) Εδώ έχετε δημιουργήσει μια λειτουργία (ή ένα μπλοκ κώδικα) που ονομάζεται myFunc. Αυτή η

λειτουργία έχει περάσει δύο ακέραιους που ονομάζονται x και y. Μόλις τελειώσει η λειτουργία,

θα επιστρέψει μια ακέραια τιμή στο σημείο μετά από πού κλήθηκε η λειτουργία σας στο

πρόγραμμα (ως εκ τούτου και το int πριν από το όνομα της λειτουργίας).

Όλος ο κώδικας εντός της λειτουργίας περιέχεται μέσα στα . Ένα σύμβολο ξεκινά το μπλοκ

του κώδικα και το σύμβολο τερματίζει το μπλοκ. Οτιδήποτε μεταξύ αυτών των δύο συμβόλων

είναι κώδικας που ανήκει στη λειτουργία. (Θα αναφερθώ σε περισσότερες λεπτομέρειες σχετικά

με τις λειτουργίες αργότερα, γι 'αυτό μην ανησυχείτε γι' αυτές τώρα.)

Σε αυτό το πρόγραμμα, έχετε δύο λειτουργίες. η πρώτη λειτουργία ονομάζεται ρύθμιση και ο

σκοπός της είναι η εγκατάσταση οτιδήποτε είναι απαραίτητο για να λειτουργήσει το πρόγραμμά

σας πριν εκτελεστεί ο κύριος βρόχος προγράμματος:

void setup() pinMode(ledPin, OUTPUT); Η λειτουργία ρύθμισης (setup function ) έχει μόνο μία δήλωση και αυτή είναι η pinMode, η

οποία λέει στο Arduino ότι θέλετε να ρυθμίσετε τη λειτουργία ενός από τους ακροδέκτες σας

ώστε να είναι Έξοδος (Output) και όχι Εισαγωγή (Input). Στην παρένθεση Μετά το pinMode,

βάζετε τον αριθμό του pin και τη λειτουργία (OUTPUT ή INPUT). Ο αριθμός του pin σας είναι

ledPin, ο οποίος έχει ρυθμιστεί προηγουμένως στην τιμή 10. Επομένως, αυτή η δήλωση απλά

λέει στο Arduino ότι η ψηφιακή ακίδα (Digital Pin) 10 πρέπει να ρυθμιστεί στη λειτουργία

OUTPUT.

Καθώς η λειτουργία setup () εκτελείται μόνο μία φορά, μετακινείτε τώρα στον κύριο βρόχο

λειτουργίας:

void loop() digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); Η συνάρτηση loop() είναι η κύρια λειτουργία του προγράμματος και λειτουργεί συνεχώς για όσο

διάστημα το Arduino είναι ενεργοποιημένο. Κάθε δήλωση εντός της συνάρτησης loop() (εντός αγκυλών) διεξάγεται, μία προς μία, βήμα-βήμα, μέχρι να φτάσει στο κάτω μέρος της

συνάρτησης, τότε ο βρόχος αρχίζει και πάλι από την αρχή της λειτουργίας, και ούτω καθεξής για

πάντα ή μέχρι να απενεργοποιήσετε το Arduino ή πατήστε το κουμπί επαναφοράς. Σε αυτό το

έργο, θέλετε το LED να ανάψει, να παραμείνει αναμένω για ένα δευτερόλεπτο, να σβήσει και να

7/18

Page 8: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

παραμείνει σβηστό για ένα δευτερόλεπτο, και μετά να επαναλάβει τη διαδικασία. Οι εντολές που

θα πουν στο Arduino να κάνει τη διαδικασία αυτή εμπεριέχονται μέσα στη συνάρτηση του loop() επειδή θέλετε τη διαδικασία να επαναλαμβάνεται ξανά και ξανά. Η πρώτη εντολή είναι

digitalWrite(ledPin, HIGH); και αυτό κάνει την ακίδα που ορίζεται στη συνάρτηση HIGH ή

LOW (στην περίπτωση αυτή ledPin, που έχει καθοριστεί να είναι η ακίδα 10). Όταν ορίσετε μιαν

ακίδα HIGH, στέλνετε 5 βολτ σε αυτόν τον ακροδέκτη .Όταν το ρυθμίσετε σε LOW, η ακίδα

γίνεται 0 βολτ, ή γείωση. Αυτή η δήλωση, επομένως, στέλνει 5V στην ακίδα 10 και τελικά στο

LED. Μετά από αυτό είναι το delay(1000); που η δήλωση αυτή απλά ενημερώνει το Arduino να

περιμένει για 1000 χιλιοστά του δευτερολέπτου (υπάρχουν 1000 χιλιοστά του δευτερολέπτου σε

ένα δευτερόλεπτο) πριν την εκτέλεση της επόμενη δήλωση digitalWrite(ledPin, LOW); η οποία

θα απενεργοποιήσει την ψηφιακή ακίδα 10 και ως εκ τούτου, θα απενεργοποιήσει το LED. Στη

συνέχεια, υπάρχει και μια άλλη δήλωση καθυστέρησης για άλλα 1000 χιλιοστά του

δευτερολέπτου και, στη συνέχεια, η λειτουργία τελειώνει. Ωστόσο, δεδομένου ότι αυτό είναι στην

εντολή loop(), η λειτουργία θα αρχίσει ξανά από την αρχή.

Ακολουθώντας τη δομή του προγράμματος βήμα προς βήμα, μπορείτε να δείτε ότι είναι πολύ

απλό:

// Project 1 - LED Flasher int ledPin = 10; void setup() pinMode(ledPin, OUTPUT); void loop() digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); Ξεκινάτε εκχωρώντας μια μεταβλητή (int) που ονομάζεται ledPin, δίνοντας σε αυτή τη

μεταβλητή την τιμή 10. Στη συνέχεια μεταβείτε στη λειτουργία setup () όπου ρυθμίζετε την

ακίδα (Digital Pin) 10 σαν έξοδο. Στον κύριο βρόχο του προγράμματος, ρυθμίζετε την ακίδα

(Digital Pin) 10 στο HIGH, στέλνοντας έξω 5v. Στη συνέχεια, περιμένετε για ένα δευτερόλεπτο

και, στη συνέχεια, απενεργοποιείτε το 5v στην ψηφιακή ακίδα (Digital Pin) 10, πριν περιμένετε

άλλο δευτερόλεπτο. Ο βρόχος ξεκινά πάλιν από την αρχή: το LED θα ανάβει και θα σβήνει

συνέχεια όσο το Arduino έχει τροφοδοσία. Τώρα που το γνωρίζετε αυτό, μπορείτε να

τροποποιήσετε τον κωδικό για να ανάψετε τη λυχνία LED για διαφορετική χρονική περίοδο και

να την απενεργοποιήσετε για διαφορετική χρονική περίοδο, για παράδειγμα εάν θέλετε να

παραμείνει αναμένει η λυχνία LED για 2 δευτερόλεπτα, στη συνέχεια να σβήσει για μισό

δευτερόλεπτο, θα μπορούσατε να κάνετε τα εξής:

8/18

Page 9: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

void loop() digitalWrite(ledPin, HIGH); delay(2000); digitalWrite(ledPin, LOW); delay(500); Αν θέλετε το LED να παραμείνει αναμένω για 5 δευτερόλεπτα και στη συνέχεια να αναβοσβήνει

σύντομα (250ms), όπως και η ενδεικτική λυχνία LED σε συναγερμό αυτοκινήτου, θα

μπορούσατε να το κάνετε αυτό:

void loop() digitalWrite(ledPin, HIGH); delay(250); digitalWrite(ledPin, LOW); delay(5000); Για να ενεργοποιήσετε και να απενεργοποιήσετε γρήγορα το LED, δοκιμάστε το εξής: void loop() digitalWrite(ledPin, HIGH); delay(50); digitalWrite(ledPin, LOW); delay(50); Μεταβάλλοντας τους χρόνους ενεργοποίησης και απενεργοποίησης της λυχνίας LED

δημιουργείτε οποιοδήποτε αποτέλεσμα θέλετε (εντός των ορίων μιας και μόνης ενδεικτικής

λυχνίας LED). Προτού προχωρήσετε σε κάτι λίγο πιο συναρπαστικό, ας ρίξουμε μια ματιά πιο

κάτω στο υλικό και να δούμε πώς λειτουργεί.

9/18

Page 10: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Επισκόπηση υλικού Υλικά που χρησιμοποιούνται στο Έργο 1:

Breadboard 400 tie-point (τρύπες ή σημεία σύνδεσης)

Breadboard 840 tie-point (τρύπες ή σημεία σύνδεσης)

10/18

Page 11: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

5mm LED

100 Ohms Resistor ( Αυτή η τιμή μπορεί να διαφέρει ανάλογα με το LED που χρησιμοποιείτε. Στο κείμενο πιο κάτω θα εξηγηθεί πώς να την επεξεργαστείτε)

Jumper wires Male to Male

11/18

Page 12: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Το breadboard

Το breadboard είναι μια επαναχρησιμοποιήσιμη πλακέτα συναρμολόγησης κυκλωμάτων χωρίς

συγκολλήσεις που χρησιμοποιείται για την κατασκευή πρότυπων ηλεκτρονικών κυκλωμάτων ή

για τον πειραματισμό με σχέδια ηλεκτρονικών κυκλωμάτων. Η πλακέτα αποτελείται από μια

σειρά από τρύπες σε ένα πλέγμα. Κάτω από την πλακέτα οι τρύπες αυτές συνδέονται με μια

λωρίδα αγώγιμου μετάλλου. Ο τρόπος με τον οποίο αυτές οι λωρίδες συνδέονται με τις τρύπες

συνήθως είναι σαν στο Σχήμα 2-2.

Σχήμα 2-2. Πώς είναι οι μεταλλικές λωρίδες συνδέονται με τις τρύπες σε ένα breadboard

12/18

Page 13: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Οι λωρίδες κατά μήκος του επάνω και κάτω μέρους της πλακέτας τρέχουν παράλληλα με την

πλακέτα και είναι σχεδιασμένες να μεταφέρουν τη φάση και τη γη του κυκλώματος. Τα

εξαρτήματα στη μέση της πλακέτας με ευκολία ενώνονται στη φάση των 5 V (ή όποιας τάσης

χρησιμοποιείτε) και στη γη του κυκλώματος. Μερικά breadboards έχουν μια κόκκινη και μια

μαύρη γραμμή να τρέχει παράλληλα με αυτές τις τρύπες για να δείξουν ποια είναι η φάση

(κόκκινο) και η ποια είναι η γη του κυκλώματος (μαύρο). Στα breadboards, η γραμμή της φάσης

και της γης έχουν τις πλείστες φορές διακοπή σε διάφορα σημεία, που φαίνεται από μια

διακοπή στην κόκκινη και τη μαύρη γραμμή. Αυτό καθιστά δυνατή την αποστολή διαφορετικών

τάσεων σε διάφορα μέρη της πλακέτας. Εάν χρησιμοποιείτε μόνο μία τάση, ένα μικρό κομμάτι

καλώδιο γεφύρωσης μπορεί να τοποθετηθεί σε αυτό το κενό για να βεβαιωθείτε ότι η ίδια τάση

εφαρμόζεται σε όλο το μήκος της γραμμής. Οι λωρίδες στο κέντρο τρέχουν στους κάθετα προς

τις λωρίδες της φάσης και γης σε μικρά μήκη και υπάρχει ένα κενό στη μέση για να σας

επιτρέψει την τοποθέτηση ολοκληρωμένων κυκλωμάτων μεταξύ των κενών, έτσι ώστε κάθε

ακίδα (pin) του τσιπ πηγαίνει σε ένα διαφορετικό σύνολο τρυπών (βλ. Εικόνα 2-3).

Figure 2-3. Ένα Ολοκληρωμένο Κύκλωμα (IC ή τσιπ) συνδεδεμένο στο διάκενο σε ένα breadboard

Τα συνήθη μεγέθη breadboard που υπάρχουν στην αγορά είναι δύο. Το breadboard με 840 tie-

point (τρύπες ή σημεία σύνδεσης) με μέγεθος περίπου 16,5 cm X 5,5 cm και το breadboard με

400 tie-point (τρύπες ή σημεία σύνδεσης) με μέγεθος περίπου 8,2 cm X 5,5 cm. Συνήθως τα

breadboards έχουν μικρές εισδοχές (dovetails) στο πλάι που σας επιτρέπουν να συνδέσετε

μερικές από αυτές μαζί για να κάνετε μεγαλύτερες πλακέτες εργασίας. Αυτό είναι χρήσιμο για

πιο σύνθετα έργα.

13/18

Page 14: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Ο Αντιστάτης (resistor)

Η αντίσταση είναι ένα εξάρτημα που έχει σχεδιαστεί για να προκαλέσει αντίσταση στο ηλεκτρικό

ρεύμα και για να προκαλέσει μια πτώση της τάσης στα άκρα του. Μπορείτε να σκεφτείτε μια

αντίσταση σαν ένα σωλήνα νερού που είναι πολύ πιο λεπτό από το σωλήνα που συνδέεται με

αυτό. Καθώς το νερό (το ηλεκτρικό ρεύμα) έρχεται στον αντιστάτη, ο σωλήνας γίνεται

λεπτότερος και ο όγκος νερού (ρεύμα) που εξέρχεται από το άλλο άκρο ως εκ τούτου μειώνεται.

Μπορείτε να χρησιμοποιήσετε αντιστάσεις για να μειώσετε την τάση ή το ρεύμα σε άλλες

συσκευές. Η τιμή της αντίστασης είναι γνωστό ως Ohms και το σύμβολό του είναι το Ελληνικό

γράμμα Ωμέγα (Ω).

Στην περίπτωση του Έργου 1, η ψηφιακή ακίδα (Digital Pin) 10 μας δίνει όταν το

ενεργοποιήσουμε 5 V DC με μέγιστο ρεύμα 40 mA (milliamps) (σύμφωνα με το φύλλο

δεδομένων του ATmega), και το LED που θα χρησιμοποιήσουμε απαιτεί μια τάση 2V και ένα

ρεύμα 35mA (σύμφωνα με το φύλλο δεδομένων του). Ως εκ τούτου, θα πρέπει να έχετε μια

αντίσταση που θα μειώσει το 5 V στα 2 V και το ρεύμα από 40 mA στα 35 mA, αν θέλετε το LED

στη μέγιστη φωτεινότητά του. Αν θέλετε το LED να είναι με μειωμένη φωτεινότητα, θα

μπορούσατε να χρησιμοποιήσετε μια υψηλότερη τιμή αντίστασης.

Σημείωση: Μην χρησιμοποιείτε ΠΟΤΕ τιμή της αντίστασης που είναι χαμηλότερη από ότι

χρειάζεται γιατί έτσι θα διοχετευθεί περισσότερο ρεύμα μέσω του LED και θα το βλάψει μόνιμα.

Θα μπορούσε επίσης να βλάψει και άλλα μέρη του κυκλώματος σας (πχ την ψηφιακή ακίδα του

μικροελεγκτή).

Ο τύπος για να υπολογίσετε τι αντίσταση που χρειάζεστε είναι:

R = (VS – VL) / I

όπου

VS είναι η τάση παροχής από την ψηφιακή ακίδα 10,

VL είναι η τάση λειτουργίας του LED, και

I είναι το ρεύμα λειτουργίας του LED.

14/18

Page 15: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Στο δικό μας παράδειγμα το LED έχει τάση λειτουργίας τα 2 V και ρεύμα λειτουργίας τα 35 mA

και ενώνεται στην ψηφιακή ακίδα (Digital Pin) 10 του Arduino, η οποία δίνει όταν ενεργοποιηθεί

5 Volts. Έπεται η τιμή του αντιστάτη που χρειάζεται να ενωθεί σε σειρά με το LED είναι

R = (5 – 2) / 0.035=85.71 Ω

Οι αντιστάσεις έρχονται σε τυπικές τιμές και η πιο συνηθισμένη τιμή θα είναι 100 Ω. Επιλέξτε

πάντοτε την επόμενη αντίσταση τυπικής τιμής που είναι υψηλότερη από την απαιτούμενη τιμή.

Αν επιλέξετε μια χαμηλότερη τιμή, περισσότερο ρεύμα θα ρέει μέσα από την αντίσταση και θα

βλάψει το κύκλωμα.

Πώς μπορείτε να βρείτε μια 100 Ω αντίσταση; Μια αντίσταση είναι πολύ μικρή για να περιέχει

εύκολα ευανάγνωστη επισήμανση με γράμματα. Έτσι αντί γραμμάτων χρησιμοποιείτε ένας

χρωματικός κώδικας. Γύρο από τον αντιστάτη θα βρείτε συνήθως 4 χρωματιστούς δακτύλιους.

Χρησιμοποιώντας τον κώδικα χρωμάτων στον πίνακα 2-1 μπορείτε να υπολογίσετε την τιμή του

αντιστάτη. Ομοίως, μπορείτε να βρείτε τον κωδικό χρώματος για μια συγκεκριμένη αντίσταση.

Table 2-1. Κώδικας χρωμάτων Αντιστατών

15/18

Page 16: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Σύμφωνα με τον πιο πάνω πίνακα, για μια αντίσταση 100 Ω χρειάζεστε

1 στον πρώτο αριθμό, γι’ αυτό ο πρώτος δακτύλιος πρέπει να είναι καφέ δακτύλιος, ακολούθως

0 στον δεύτερο αριθμό, γι’ αυτό ο δεύτερος δακτύλιος πρέπει να είναι μαύρος δακτύλιος.

Στη συνέχεια, πρέπει να πολλαπλασιάσετε τους πρώτους δύο αριθμούς με 101 (με άλλα λόγια

προσθέστε 1 μηδέν) γι’ αυτό ο τρίτος δακτύλιος πρέπει να είναι καφέ δακτύλιος.

Ο τέταρτος δακτύλιος υποδεικνύει την ανοχή της αντίστασης. Αν η αντίσταση μας έχει χρυσό

τέταρτο δακτύλιο, έχει ανοχή ± 5 τοις εκατό. Αυτό σημαίνει ότι η πραγματική τιμή της αντίστασης

είναι μεταξύ 95 Ω και 105 Ω .

Αν η αντίσταση μας έχει ασημένιο τέταρτο δακτύλιο, έχει ανοχή ± 10 τοις εκατό. Αυτό σημαίνει

ότι η πραγματική τιμή της αντίστασης είναι μεταξύ 90 Ω και 110 Ω.

Αν η αντίσταση μας δεν έχει ασημένιο τέταρτο δακτύλιο, έχει ανοχή ± 20 τοις εκατό. Αυτό

σημαίνει ότι η πραγματική τιμή της αντίστασης είναι μεταξύ 80 Ω και 120 Ω .

Έτσι, αν έχετε ένα LED που απαιτεί 2 V και 35 mA, χρειάζεστε μια αντίσταση 100 Ω και θα

πρέπει να έχει καφέ, μαύρο, καφέ συνδυασμό δακτυλίων, όπως φαίνεται πιο κάτω.

Figure 2-4. 100Ω αντιστάτης με 5% ανοχή Αν χρειάζεστε μια αντίσταση 220 Ω, τα χρώματα θα είναι Κόκκινο, Κόκκινο, Μαύρο (2, 2, +1 μηδενικό). Αν χρειάζεστε μια αντίσταση 10 KΩ, τα χρώματα θα είναι Καφέ, Μαύρο, Πορτοκαλί (1, 0, +3 μηδενικά). Αν χρειάζεστε μια αντίσταση 570 KΩ, τα χρώματα θα είναι Πράσινο, Μωβ, Κίτρινο (5, 7, +4 μηδενικά).

16/18

Page 17: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Το LED

Το τελικό εξάρτημα για το Έργο 1 είναι το LED, που σημαίνει δίοδος εκπομπής φωτός.

Η δίοδος είναι ένα εξάρτημα που επιτρέπει στο ρεύμα να ρέει μόνο προς μία κατεύθυνση. Είναι

ακριβώς όπως μια βαλβίδα σε ένα σύστημα νερού, αλλά σε αυτή την περίπτωση είναι για να

αφήνει το ηλεκτρικό ρεύμα για να πάει σε μια κατεύθυνση. Εάν το ρεύμα προσπαθήσει να πάει

στην αντίθετη κατεύθυνση, η δίοδος το σταματά. Είναι ένα πολύ χρήσιμο εξάρτημα γιατί

αποτρέπει κάποιον να κάνει λάθος σύνδεση του ρεύματος σε ένα κύκλωμα και την καταστροφή

εξαρτημάτων του κυκλώματος.

Το LED είναι το ίδιο πράγμα με μια δίοδο, αλλά εκπέμπει και το φως. Τα LEDs κατασκευάζονται

σε όλα τα είδη των διαφορετικών χρωμάτων και τα επίπεδα φωτεινότητας,

συμπεριλαμβανομένης της υπεριώδους ακτινοβολίας και υπέρυθρο τμήμα του φάσματος (όπως

τα LED σε τηλεχειριστήριο της τηλεόρασης σας) Αν κοιτάξετε προσεκτικά σε ένα LED θα

παρατηρήσετε δύο πράγματα : (α) οι ακροδέκτες του LED έχουν διαφορετικά μήκη, και (β) η μία

πλευρά του LED είναι πεπλατυσμένη και όχι κυλινδρική (βλ Σχήμα 2-5).

Αυτές είναι οι ενδείξεις ως προς το ποιος ακροδέκτης του LED είναι η άνοδος (θετικό) και ποιος

ακροδέκτης είναι η κάθοδος (αρνητικό). Ο μακρύτερος ακροδέκτης (άνοδος) συνδέεται στο

θετικό της τροφοδότησης (3.3 V) και ο μικρότερος ακροδέκτης ή ο ακροδέκτης προς την

πεπλατυσμένη πλευρά του LED (Κάθοδος) πηγαίνει στη Γη του κυκλώματος(GND).

17/18

Page 18: Έργο 1 – LED που αναβοσβήνει (LED Flasher)edume.myds.me/60_2004_0003_teaching_targets... · πρέπει πάντα να συνδέεται στην ... Arduino

Σχήμα 2-5. Τα διάφορα τμήματα του LED

Εάν συνδέσετε το LED με λάθος τρόπο, δεν θα το βλάψει (εκτός αν του διοχετεύσετε πολύ

υψηλά ρεύματα). Ωστόσο, είναι σημαντικό να βάζετε πάντα μια αντίσταση σε σειρά με το LED

για να βεβαιωθείτε ότι το σωστό ρεύμα περνάει μέσα από το LED. Μπορεί να καταστρέψετε

μόνιμα το LED εάν δεν το κάνετε αυτό.

Σημειώστε ότι μπορείτε να αποκτήσετε διχρωματικά LED και LED τριών χρωμάτων (RGB LED),

που έχουν πολλά πόδια που να εξέρχονται από αυτά.

Ένα RGB LED έχει ένα κόκκινο, ένα πράσινο και μπλε (κατά συνέπεια RGB) LED σε ένα

εξάρτημα. Κάποιος ακροδέκτης θα είναι η κοινή άνοδος ή κάθοδος (κοινή και για τα τρία LED)

και τα άλλα πόδια θα είναι για την άνοδο ή την κάθοδο ενός μεμονωμένου LED, όπως φαίνεται

στο πιο κάτω σχήμα.

Κοινής Καθόδου RGB LED Κοινής Ανόδου RGB LED

Με τη ρύθμιση των τιμών φωτεινότητας των καναλιών R, G και B του RGB LED, μπορείτε να

δημιουργήσετε οποιοδήποτε χρώμα θέλετε (το ίδιο αποτέλεσμα μπορεί να είναι αν

χρησιμοποιείτε τρία ξεχωριστά κόκκινα, πράσινα και μπλε).

18/18