Επιβλέπων Καθηγητής : Μιχάλης Παπουτσιδάκης. Φοιτητές : Λούντζη Αθηνά Α.Μ Ράπτης Ιωάννης Α.Μ 33823

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Επιβλέπων Καθηγητής : Μιχάλης Παπουτσιδάκης. Φοιτητές : Λούντζη Αθηνά Α.Μ 35158. Ράπτης Ιωάννης Α.Μ 33823"

Transcript

1 Σχολή Τεχνολογικών Εφαρμογών Τμήμα Αυτοματισμού Πτυχιακή Εργασία Θέμα : «Επαναπρογραμματιζόμενο Σύστημα ασφάλειας με χρωματικό κώδικα» Επιβλέπων Καθηγητής : Μιχάλης Παπουτσιδάκης Φοιτητές : Λούντζη Αθηνά Α.Μ Ράπτης Ιωάννης Α.Μ Αιγάλεω, Σεπτέμβριος

2 Πίνακας Περιεχομένων Περίληψη...6 Abstract.7 Κεφάλαιο 1: Η τεχνολογία και η χρήση του μικροελεγκτή arduino Παρουσίαση των μικροελεγκτών Πλεονεκτήματα των μικροελεγκτών Κατηγορίες μικροελεγκτών Εργαλεία ανάπτυξης και κατασκευαστές μικροελεγκτών Arduino Ιστορία Η πλακέτα arduino Arduino Duemilanove/UNO Flash memory SRAM memory EEPROM memory FTDI Pins πλακέτας arduino Άλλες εκδώσεις arduino Το software για τον προγραμματισμό του arduino Arduino shields Προγραμματισμός του ελεγκτή Arduino Το περιβάλλον Arduino IDE (integrated development environment) Blinking Led Επεξήγηση του Sketch.26 1

3 1.3.4 Μεταβλητές και τύποι δεδομένων Ονομασία μεταβλητών Τύποι δεδομένων των μεταβλητών Πίνακες (array) Qualifiers μεταβλητών Προκαθορισμένες μεταβλητές Εμβέλεια μεταβλητών Εκχώρηση τιμών Μαθηματικοί τελεστές Σύνθετοι τελεστές Τελεστές προσαύξησης και μείωσης Συσχετιστικοί τελεστές Λογικοί τελεστές Σειρά προτεραιότητας των τελεστών Εντολές ελέγχου Εντολή if else Εντολή switch Βρόχοι For While Do Continue Συναρτήσεις Βασικές συνάρτησης setup & loop Δημιουργία νέων συναρτήσεων

4 Καλώντας τις συναρτήσεις Επιστροφές τιμών συνάρτησης Παράμετροι συνάρτησης Ψηφιακές συναρτήσεις pinmode() digitalwrite() digitalread() Αναλογικές συναρτήσεις analogread() analogwrite() analogreference() map() constrain() Προχωρημένες συναρτήσεις Συναρτήσεις Timing delay() delaymicroseconds() millis() macros() Συναρτήσεις random random() randomseed() Hardware Διακοπές Σειριακή βιβλιοθήκη arduino begin().47 3

5 available() read() print() println() Εισαγωγή βιβλιοθήκης Comments Εφαρμογές arduino Εφαρμογές του arduino στην μουσική Laser harp Soundmachine Εφαρμογές του arduino στον μοντελισμό Εφαρμογές του arduino για την διακόσμηση Led cube Εφαρμογές του arduino στο σπίτι Αrduino security alarm RGB combination door lock Εφαρμογές arduino σε παιχνίδια Marble labyrinth ελεγχόμενο με χρήση the WiiFit Εφαρμογές του arduino στις τέχνες (ζωγραφική) Senseless drawing bot LumiBots Εφαρμογές του arduino στην ρομποτική Mind-control. 57 Κεφάλαιο 2: ΕΦΑΡΜΟΓΗ - ΣΧΕΔΙΑΣΜΟΣ - ΚΑΤΑΣΚΕΥΗ ΛΕΙΤΟΥΡΓΙΑ Η ιδέα της εφαρμογής περιγραφή..59 4

6 2.2 Σχεδιασμός μηχανικού μέρους Υλικά κατασκευής-προδιαγραφές Η μηχανική κατασκευή Σχεδιασμός του λογισμικού Τι είναι η Processing Αλγόριθμος processing Αλγόριθμος κυρίου μέρους (processing)...77 Κεφάλαιο 3: Μελλοντικές επεκτάσεις συστήματος Μελλοντικές επεκτάσεις σε θέματα τροφοδοσίας Χρήση μπαταρίας Χρήση ανανεώσιμων πηγών ενέργειας Μελλοντικές επεκτάσεις ως προς τη χρήση συσκευών δράσης Μελλοντικές επεκτάσεις γενικής χρήσης συστήματος 92 Βιβλιογραφία - πηγές πληροφοριών..93 5

7 Περίληψη Στη παρούσα πτυχιακή εργασία αναπτύσσεται η κατασκευή και ο προγραμματισμός μιας ηλεκτρονικής κλειδαριάς με χρωματικό κώδικα. Το πληκτρολόγιο δεν περιέχει αριθμούς αλλά θα κατασκευαστεί από RGB leds που θα τροφοδοτούνται από έναν μικροεπεξεργαστή. Επομένως αντί για πληκτρολόγηση αριθμών, ο κωδικός θα είναι ένας μοναδικός συνδυασμός χρωμάτων. Τα κατασκευαστικά μέρη της πτυχιακής θα είναι, ένα πληκτρολόγιο, μια πλακέτα και ο μικροεπεξεργαστής. Στόχος μας είναι με τον κατάλληλο προγραμματισμό να γίνεται η αναγνώριση της σωστής ή μη πληκτρολόγησης του κωδικού. 6

8 Αbstract In this thesis develops the construction and programming of an electronic lock with a color code. The keyboard does not contain numbers but will be built by RGB LEDs that will be powered by a microprocessor. So instead of typing numbers, the code will be a unique combination of colors. The components of the thesis will be, a keyboard, a plaque and the microprocessor. Our goal is, with proper programming of the microprocessor to identify if we have entered the correct password or not. 7

9 ΚΕΦΑΛΑΙΟ 1: Η ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ Η ΧΡΗΣΗ ΤΟΥ ΜΙΚΡΟΕΛΕΓΚΤΗ ARDUINO 1.1 Παρουσίαση των μικροελεγκτών Ένας μικροελεγκτής είναι ένα ενσωματωμένο τσιπ (ολοκληρωμένο κύκλωμα) που αποτελεί συχνά μέρος ενός συστήματος. Ο μικροελεγκτής περιλαμβάνει CPU, RAM, ROM, θύρες εισόδου/εξόδου και timers σαν έναν απλό τυπικό υπολογιστή, αλλά επειδή είναι σχεδιασμένα να εκτελούν μόνο μία συγκεκριμένη εργασία για τον έλεγχο ενός απλού συστήματος, είναι πολύ μικρότερα και απλούστερα σχεδιασμένα ώστε να μπορούν να περιλαμβάνουν όλες τις λειτουργίες που απαιτούνται σε ένα μόνο ολοκληρωμένο κύκλωμα. Ο μικροελεγκτής διαφέρει από τον μικροεπεξεργαστή στον οποίο του δόθηκε έμφαση στην υπολογιστική ισχύ. Έτσι αν συνδυαστεί με τις κατάλληλες εξωτερικές περιφερειακές συσκευές μπορεί να πραγματοποιήσει μία πληθώρα γενικών εργασιών. Σε αντίθεση ο μικροελεγκτής είναι σχεδιασμένος για πιο εξειδικευμένες εργασίες, έχει πολύ μικρότερες δυνατότητες συνεργασίας με τα εξωτερικά περιφερειακά αφού υστερεί κατά πολύ σε υπολογιστική ισχύ. Στον σχεδιασμό των μικροελεγκτών δόθηκε περισσότερη έμφαση στο να απαιτούν πολύ μικρότερο αριθμό ολοκληρωμένων κυκλωμάτων για τη λειτουργία μίας συσκευής, το χαμηλό κοστολόγιο κατασκευής τους και τον εύκολο προγραμματισμό εξειδικευμένων εργασιών Πλεονεκτήματα των μικροελεγκτών Ακολουθούν τα πλεονεκτήματα των μικροελεγκτών: Αυτονομία, μέσο της ενσωμάτωσης σύνθετων περιφερειακών υποσυστημάτων όπως μνήμες και θύρες επικοινωνίας. Έτσι πολλοί μικροελεγκτές δεν χρειάζονται κανένα άλλο ολοκληρωμένο κύκλωμα για να λειτουργήσουν. Η ενσωμάτωση περιφερειακών σημαίνει ευκολότερη υλοποίηση εφαρμογών λόγω των απλούστερων διασυνδέσεων. Επίσης, οδηγεί σε χαμηλότερη κατανάλωση ισχύος, μεγιστοποιώντας τη φορητότητα και ελαχιστοποιώντας το κόστος της συσκευής στην οποία ενσωματώνεται ο μικροελεγκτής. Μεγαλύτερη αξιοπιστία, και πάλι λόγω των λιγότερων διασυνδέσεων. Μειωμένες εκπομπές ηλεκτρομαγνητικών παρεμβολών και μειωμένη ευαισθησία σε αντίστοιχες παρεμβολές από άλλες ηλεκτρικές και ηλεκτρονικές συσκευές. Το πλεονέκτημα αυτό προκύπτει από το μικρότερο αριθμό και μήκος εξωτερικών διασυνδέσεων καθώς και τις χαμηλές ταχύτητες λειτουργίας. 8

10 Περισσότεροι διαθέσιμοι ακροδέκτες για ψηφιακές εισόδους-εξόδους (για δεδομένο μέγεθος ολοκληρωμένου κυκλώματος), λόγω της μη δέσμευσης τους για τη σύνδεση εξωτερικών περιφερειακών συσκευών. Μικρό μέγεθος συνολικού υπολογιστικού συστήματος. Η βασική αρχιτεκτονική των μικροελεγκτών δεν διαφέρει από αυτή των κοινών vμικροεπεξεργαστών, αν και στους πρώτους συναντάται συχνά η αρχιτεκτονική μνήμης τύπου Harvard, η οποία χρησιμοποιεί διαφορετικές αρτηρίες σύνδεσης της μνήμης προγράμματος και της μνήμης δεδομένων (π.χ. οι σειρές από την Microchip). Στους κοινούς μικροεπεξεργαστές συνηθίζεται η ενιαία διάταξη μνήμης τύπου φον Νόιμαν Κατηγορίες μικροελεγκτών Λόγω του ισχυρότατου ανταγωνισμού αλλά και της τάσης ενσωμάτωσης των μικροελεγκτών σε κάθε ηλεκτρική και ηλεκτρονική συσκευή, η βιομηχανία μικροελεγκτών έχει καταλήξει στην παραγωγή ανταγωνιστικών μοντέλων μαζικής παραγωγής καθώς και μικροελεγκτών για πιο εξειδικευμένες εφαρμογές. Έτσι διακρίνονται οι εξής κυρίως κατηγορίες: Μικροελεγκτές (καμιά φορά 4-bit αλλά συνήθως 8-bit) πολύ χαμηλού κόστους, γενικής χρήσης, με πολύ μικρό αριθμό ακροδεκτών (ακόμη και λιγότερους από 8). Σχεδιάζονται με έμφαση στη χαμηλή κατανάλωση ισχύος και την αυτάρκεια, ώστε να χρειάζονται ελάχιστα ή και καθόλου εξωτερικά εξαρτήματα για να μην μπορεί να αντιγραφεί εύκολα το εσωτερικό λογισμικό τους. Απουσιάζει η δυνατότητα επέκτασης της μνήμης τους. Μερικά μοντέλα είναι ευρέως γνωστά στους ερασιτέχνες ηλεκτρονικούς, όπως για παράδειγμα οι περισσότεροι μικροελεγκτές των σειρών PIC (Microchip), AVR (Atmel) και 8051 (Intel, Atmel, Dallas κ.α.). Μικροελεγκτές (συνήθως 8-bit αλλά και 16 ή 32-bit) χαμηλού κόστους, γενικής χρήσης, με μέτριο έως σχετικά μεγάλο αριθμό ακροδεκτών. Διαθέτουν μεγάλο αριθμό κοινών περιφερειακών, όπως θύρες UART, I2C, SPI ή CAN, μετατροπείς αναλογικού σε ψηφιακό και ψηφιακού σε αναλογικό. Στους κατασκευαστές της Άπω Ανατολής (Ιαπωνία, Κορέα), συνηθίζεται η ενσωμάτωση ελεγκτών οθόνης υγρών κρυστάλλων και πληκτρολογίου. Μερικές φορές παρέχουν δυνατότητα εξωτερικής επέκτασης της μνήμης τους. Μικροελεγκτές (κυρίως 32-bit) μέσου κόστους, γενικής χρήσης, με μεγάλο αριθμό ακροδεκτών. Χαρακτηρίζονται από έμφαση στην ταχύτητα εκτέλεσης εντολών, υψηλή αυτάρκεια περιφερειακών και μεγάλες δυνατότητες εσωτερικής ή εξωτερικής μνήμης προγράμματος (FLASH) και RAM. Στο χώρο αυτό έχουν ισχυρή παρουσία οιαρχιτεκτονικές με υψηλή μεταφερσιμότητα λογισμικού (portability) από τον ένα στον άλλο κατασκευαστή. Για παράδειγμα μεταξύ των μικροελεγκτών τύπου ARM ή MIPS, το σύνολο των βασικών εντολών που αναγνωρίζει η ALU είναι ακριβώς το ίδιο, μειώνοντας έτσι τις μεγάλες αλλαγές στο λογισμικό όταν στο μέλλον ο πελάτης υιοθετήσει ένα μικροελεγκτή άλλου κατασκευαστή (αρκεί φυσικά να υποστηρίζει κι αυτός το σύνολο εντολών ARM ή MIPS, αντίστοιχα). Μικροελεγκτές εξειδικευμένων εφαρμογών, οι οποίοι ενσωματώνουν συνήθως κάποιο εξειδικευμένο πρωτόκολλο επικοινωνίας το οποίο υλοποιείται πάντοτε σε hardware. Τέτοιοι μικροελεγκτές χρησιμοποιούνται σε τηλεπικοινωνιακές συσκευές όπως τα μόντεμ. 9

11 1.1.3 Εργαλεία ανάπτυξης και κατασκευαστές μικροελεγκτών Η επιτυχία μίας οικογένειας μικροελεγκτών καθορίζεται σε μεγάλο βαθμό από τη διαθεσιμότητα και την ευχρηστία των σχετικών εργαλείων ανάπτυξης, όπως μεταφραστές από γλώσσες υψηλού επιπέδου σε γλώσσα κατανοητή από τον μικροελεγκτή (assembly), τη δυνατότητα προγραμματισμού της εσωτερικής μνήμης και εργαλεία εκσφαλμάτωσης (debuggers). Στους μικροελεγκτές τα εργαλεία αυτά δεν αποτελούνται ποτέ μόνο από λογισμικό, καθώς δεν υπάρχει τυποποιημένος τρόπος επικοινωνίας μεταξύ τους. Στον τομέα των εργαλείων ανάπτυξης, δραστηριοποιούνται όχι μόνο οι ίδιοι οι κατασκευαστέςμικροελεγκτών αλλά και εξειδικευμένες εταιρείες. Η πιο διαδεδομένη γλώσσα προγραμματισμού των μικροελεγκτών είναι η C, η C++ και οι παραλλαγές τους. Σε τμήματα του λογισμικού όπου απαιτείται μεγαλύτερη ταχύτητα ή μικρότερο μέγεθος χρησιμοποιούμενης μνήμης μπορεί να χρησιμοποιηθεί η Assembly. Όμως οι μεγαλύτερες δυνατότητες σε λειτουργικότητα και η ευκολία προγραμματισμού σε C έναντιτης assembly, σε συνδυασμό με την επάρκεια μνήμης των σύγχρονων μικροελεγκτών, έχουν γενικά εκτοπίσει την assembly από τις περισσότερες εφαρμογές. Οι σημαντικότεροι κατασκευαστές μικροελεγκτών είναι η ARM η οποία δεν κατασκευάζει αλλά παραχωρεί δικαιώματα χρήσης του πυρήνα, η Atmel όπου και θα ασχοληθούμε εκτενέστερα την συνέχεια, η Epson, η Freescale Semiconductor (πρώην Motorola), η Hitachi, η Maxim (μετά την εξαγορά της Dallas), η Microchip, η NEC, η Toshiba και η Texas Instrument. Εικόνα Μικροεπεξεργαστές από τις εταιρίες NEC, Texas Instruments και Toshiba 10

12 1.2 Arduino Ιστορία Το 2005 στην Ivrea της Ιταλίας κατασκευάζεται μία συσκευή η οποία θα είχε την δυνατότητα να ελέγχει και να αλληλεπιδρά σύμφωνα με το περιβάλλον. Σκοπός των κατασκευαστών ήταν αυτή η συσκευή να κοστίζει λιγότερο σε σχέση με άλλες παρόμοιων δυνατοτήτων. H ομάδα αποτελούνταν από τους Massimo Banzi, David Cuartielles, Tom Igoe, David Mellis και Gianluca Martino. Το όνομα της συσκευής έχει τις ρίζες του από τον Arduin of Ivrea, έναν βασιλιά της Ιταλίας του ενάτου αιώνα όπου κατοικούσε στην ίδια πόλη.η συσκευή ονομάστηκε Arduino που αντιστοιχούσε σε ένα ιταλικό ανδρικό όνομα και σήμαινε ισχυρός φίλος. To arduino αναπτύχθηκε σύμφωνα με την πλατφόρμα Wiring, μία πτυχιακή εργασία του Hernando Barragan από το Interaction Design Institute Ivrea. Είχε ως στόχο να είναι μία ηλεκτρονική εκδοχή της Processing που θα χρησιμοποιούσε ένα περιβάλλον προγραμματισμού δικό της αλλά θα έμοιαζε σχεδιαστικά και συντακτικά με αυτό της Processing. Όχι πολύ καιρό πριν, αυτοί που εργάζονταν πάνω στον τομέα του hardware σήμαινε ότι κατασκεύαζαν κυκλώματα από το μηδέν, χρησιμοποιώντας εκατοντάδες διαφορετικές ηλεκτρονικές διατάξεις όπως αντιστάσεις, πυκνωτές, πηνία, τρανζίστορ, και πολλά άλλα. Τα κυκλώματα αυτά ήταν ενσύρματα με σκοπό να πραγματοποιήσουν συγκεκριμένες εργασίες. Όταν απαιτούνταν αλλαγές στις εργασίες τους, τότε έπρεπε να γίνουν και κάποιες χρονοβόρες αλλαγές στον σχεδιασμό των κυκλωμάτων, όπως αποσυγκολλήσεις και συγκολλήσεις των απαιτούμενων διατάξεων, αποσυνδέσεις και συνδέσεις καλωδίων κ.α.. Με την εμφάνιση της ψηφιακής τεχνολογίας και των μικροεπεξεργαστών, αυτές οι λειτουργίες οι οποίες πρώτα έπρεπε να γίνουν με καλώδια και διατάξεις τώρα αντικαταστάθηκαν από τα λογισμικά προγράμματα. Το λογισμικό είναι πιο εύκολο να τροποποιηθεί από ότι το hardware. Με μερικά πατήματα πλήκτρων, μπορεί να αλλάξει ριζικά η λογική μίας συσκευής και να δημιουργηθούν επιπλέον ακόμη δύο ή τρεις δοκιμαστικές εκδόσεις. Η διαδικασία αυτή θα απαιτούσε το ίδιο χρονικό διάστημα όσο και ο χρόνος που απαιτείται για να κολληθεί ένα ζεύγος αντιστάσεων. Όπως είναι φυσικό μαζί με τον χρόνο μειώθηκε και το κόστος για τις τροποποιήσεις καθώς και για τις δοκιμαστικές εκδόσεις. Όπως το περιγράφει ο δημιουργός του, το Arduino είναι μία open-source (ανοικτού κώδικα) πλατφόρμα «πρωτοτυποποίησης» ηλεκτρονικών κυκλωμάτων βασισμένη σε ευέλικτο και εύκολο στη χρήση hardware και software που προορίζεται για οποιονδήποτε έχει λίγη προγραμματιστική εμπειρία, στοιχειώδεις γνώσεις ηλεκτρονικών και ενδιαφέρεται να δημιουργήσει διαδραστικά αντικείμενα ή περιβάλλοντα. Το Arduino αποτελείται από δύο κύρια μέρη, την πλακέτα Arduino το οποίο είναι το κομμάτι του hardware πάνω στο οποίο εργάζεται ο κατασκευαστής όταν πραγματοποιεί μία κατασκευή ενώ το δεύτερο τμήμα είναι το Arduino IDE, το κομμάτι του λογισμικού που τρέχει στον υπολογιστή. Το IDE χρησιμοποιείται για να δημιουργηθεί ένα sketch (ένα μικρό πρόγραμμα στον υπολογιστή) που 11

13 φορτώνεται στον μικροελεγκτή της πλακέτα Arduino. Το sketch λέει στην πλακέτα arduino τι πρέπει να κάνει Η πλακέτα arduino Η πλακέτα Arduino είναι ένα μικρό κύκλωμα (πλακέτα) που περιέχει ένα ολοκληρωμένο σύστημα υπολογιστή χρησιμοποιώντας ένα μικρό chip (ολοκληρωμένο κύκλωμα) που είναι ο μικροελεγκτής. Αυτός ο υπολογιστής είναι τουλάχιστον χίλιες φορές λιγότερο ισχυρός από ένα MacBook, αλλά είναι πολύ φθηνότερος και πολύ χρήσιμος για την κατασκευή ηλεκτρονικών συσκευών. Μάλιστα κάποιος θα μπορούσε να ισχυριστεί ότι λειτουργικά το Arduino μοιάζει πολύ με το NXT Brick των Lego Mindstorms NXT. Άλλωστε η ρομποτική είναι μία από τις πολλές κατηγορίες στις οποίες το Arduino διαπρέπει. Η ομάδα του Arduino έχει τοποθετήσει σε αυτήν την πλακέτα όλα τα απαραίτητα στοιχεία που απαιτούνται για τον μικροελεγκτή ώστε να μπορεί να λειτουργεί σωστά και να μπορεί να επικοινωνεί με τον υπολογιστή και άλλες σειριακές συσκευές Arduino Duemilanove/UNO Η δημοφιλέστερη έκδοση του arduino είναι η Duemilanove/UNO που βασίζεται στο ολοκληρωμένο ATmega328, έναν 8-bit RISC μικροελεγκτή, ο οποίος χρονίζει στα 16MHz.Το ATmega328 διαθέτει ενσωματωμένη μνήμη τριών τύπων: Flash memory Η μνήμη flash έχει χωρητικότητα 32Kb, από τα οποία τα 2Kb χρησιμοποιούνται από το firmware του arduino που έχει εγκαταστήσει ήδη ο κατασκευαστής του. Το firmware αυτό που στην ορολογία του arduino ονομάζεται bootloader είναι αναγκαίο για την εγκατάσταση των προγραμμάτων στον μικροελεγκτή μέσω της θύρας USB, χωρίς δηλαδή να χρειάζεται εξωτερικός hardware programmer. Τα υπόλοιπα 30Kb της μνήμης Flash χρησιμοποιούνται για την αποθήκευση αυτών ακριβώς των προγραμμάτων, αφού πρώτα μεταγλωττιστούν στον υπολογιστή. Η μνήμη Flash δεν χάνει τα περιεχόμενά της με την απώλεια της τροφοδοσίας ή κάνοντας reset το μικροελεγκτή. Επίσης, ενώ η μνήμη Flash υπό κανονικές συνθήκες δεν προορίζεται για χρήση runtime, μέσα από τα προγράμματα λόγω της μικρής συνολικής μνήμης που είναι διαθέσιμη σε αυτά (2Kb SRAM + 1Kb EEPROM), έχει σχεδιαστεί μία βιβλιοθήκη που επιτρέπει την χρήση runtime στον χώρο που περισσεύει από την αποθήκευση των sketch (30Kb μείον το μέγεθος του προγράμματος σε μεταγλωττισμένη μορφή) SRAM memory Η μνήμη SRAM (static random access memory )είναι η ωφέλιμη μνήμη που μπορούν να χρησιμοποιήσουν τα προγράμματα για να αποθηκεύουν μεταβλητές, πίνακες κ.λπ. κατά το runtime. Όπως και σε έναν υπολογιστή, αυτή η μνήμη χάνει τα δεδομένα της όταν η παροχή ρεύματος στο arduino σταματήσει ή αν γίνει reset. Στο ΑΤmega328 η SRAM μνήμη καταλαμβάνει χώρο

14 bytes κατά την διάρκεια μίας κανονικής λειτουργίας και όλες οι μεταβλητές φορτώνονται σε αυτή καθ όλη την διάρκεια της λειτουργίας του microcontroller EEPROM memory Το τελευταίο μέρος της μνήμης είναι η EEPROM και καταλαμβάνει 1024 bytes, αρκετά μικρή για μνήμη που χρησιμοποιείται μόνο για ανάγνωση (read-only). Η EEPROM έχει όριο ζωής καθώς δε μπορεί να επαναπρογραμματιστεί για περισσότερες από φορές. Είναι μία byte addressable μνήμη, γεγονός που καθιστά λίγο δυσκολότερο να τεθεί σε χρήση αφού απαιτείται ειδική βιβλιοθήκη ώστε να μπορέσει κάποιος να έχει πρόσβαση σε αυτή FTDI Εκτός όμως από τo ATMega 328 το arduino χρησιμοποιεί και ένα FDTI ολοκληρωμένο. Οι μικροελεγκτές ATMega προγραμματίζονται χρησιμοποιώντας σειριακή επικοινωνία με τους υπολογιστές, έτσι το FDTI αναλαμβάνει την εργασία της μετατροπείς της σειριακής θύρας σε USB Pins πλακέτας arduino Η πλακέτα arduino διαθέτει : 14 ψηφιακές Ι/Ο θύρες (εισόδου & εξόδου). Σύμφωνα με το πρόγραμμα που θα φορτωθεί στον μικροελεγκτή αυτές οι θύρες μπορούν να εργαστούν σαν είσοδοι ή έξοδοι ψηφιακών σημάτων. Οι ψηφιακές θύρες 3, 5, 6, 9, 10 και 11 μπορούν να λειτουργήσουν και ως ψευδοαναλογικές θύρες εξόδου με το σύστημα PWM (Pulse Width Modulation), δηλαδή το ίδιο σύστημα που διαθέτουν οι μητρικές των υπολογιστών για να ελέγχουν τις ταχύτητες των ανεμιστήρων. Το PWM παίρνει ένα εύρος τιμών από το 0 έως το 255. Δεν είναι πραγματικά αναλογικό σύστημα, έτσι θέτοντας στην έξοδο την τιμή 127, δεν σημαίνει ότι η έξοδος θα παρέχει 2.5V αντί της κανονικής τιμής των 5V, αλλά ότι θα δίνει έναν παλμό που η τάση του θα εναλλάσσεται με μεγάλη συχνότητα και για ίσα χρονικά διαστήματα μεταξύ των τιμών 0V και 5V με σκοπό η μέση τιμή να ισούται με 2,5V. Οι θύρες 0 και 1 χρησιμοποιούνται επίσης και για να λαμβάνουν (RX) και να μεταδίδoυν (TX) TTL σειριακά δεδομένα. Έτσι, όταν για παράδειγμα το πρόγραμμα στέλνει δεδομένα σειριακά, τότε αυτά προωθούνται στην θύρα USB μέσω του ελεγκτή Serial-Over-USB όπως επίσης και στο pin 0 για να τα διαβάσει ενδεχομένως μία άλλη συσκευή (π.χ. ένα δεύτερο arduino στη δικιά του θύρα 1). Αυτό φυσικά σημαίνει ότι αν στο πρόγραμμα ενεργοποιηθεί το σειριακό interface, καταλαμβάνονται δύο ψηφιακές θύρες εισόδου/εξόδου. Οι θύρες 2 και 3 λειτουργούν και ως εξωτερικά interrupt (interrupt 0 και 1 αντίστοιχα). Με άλλα λόγια, μπορούν να ρυθμιστούν μέσα από το πρόγραμμα ώστε να λειτουργούν αποκλειστικά ως 13

15 ψηφιακές είσοδοι στις οποίες όταν συμβαίνουν συγκεκριμένες αλλαγές τάσης, η κανονική ροή του προγράμματος να σταματάει άμεσα και να εκτελείται μία συγκεκριμένη συνάρτηση. Τα εξωτερικά interrupt είναι ιδιαίτερα χρήσιμα σε εφαρμογές που απαιτούν συγχρονισμό μεγάλης ακρίβειας. 6 αναλογικές θύρες εισόδου αριθμημένες από το 0 έως το 5. Το καθένα από αυτά λειτουργεί ως αναλογική είσοδος κάνοντας χρήση του ADC (Analog to Digital Converter). Για παράδειγμα, αν τροφοδοτηθεί ένα από αυτά τα pin με μία τάση η οποία μπορεί να κυμανθεί με ένα ποτενσιόμετρο από 0V ως μία τάση αναφοράς Vref (η οποία αν δεν γίνει κάποια αλλαγή είναι προρυθμισμένη στα 5V), τότε μέσα από το πρόγραμμα μπορεί να «διαβαστεί» η τιμή της θύρας ως ένας ακέραιος αριθμός χωρητικότητας 10-bit, από το 0 (όταν η τάση στο pin είναι 0V) μέχρι το 1023 (όταν η τάση στο pin είναι 5V). Η τάση αναφοράς μπορεί να ρυθμιστεί με μία εντολή όπως για παράδειγμα στα 1.1V. Ένας άλλος τρόπος όπου η τάση αναφοράς μπορεί να δηλωθεί από τον προγραμματιστή είναι τροφοδοτώντας με μία εξωτερική τάση αναφοράς τη θύρα με την σήμανση AREF που βρίσκεται στην απέναντι πλευρά της πλακέτας. Έτσι, αν τροφοδοτηθεί η θύρα AREF με 3.3V και στην συνέχεια εκτελεστή η εντολή να διαβαστεί κάποιο pin αναλογικής εισόδου στο οποίο εφαρμόζετε τάση 1.65V, το Arduino θα επιστρέψει την τιμή 512. Δίπλα από της θύρες αναλογικής εισόδου, υπάρχει μία ακόμα συστοιχία από 6 pin με την σήμανση POWER. Η λειτουργία του καθενός pin έχει ως εξής: Το πρώτο, με την ένδειξη RESET, όταν γειωθεί (με οποιοδήποτε από τα 3 pin με την ένδειξη GND που υπάρχουν στο arduino) έχει ως αποτέλεσμα την επανεκκίνηση του arduino. Το δεύτερο με την ένδειξη 3.3V, μπορεί να τροφοδοτήσει διατάξεις, συσκευές ή αισθητήρες με τάση 3.3V. Η τάση αυτή δεν προέρχεται από την εξωτερική τροφοδοσία αλλά παράγεται από τον ελεγκτή Serial-over-USB και έτσι η μέγιστη ένταση που μπορεί να παρέχει είναι μόλις 50mA. Η τρίτη θύρα με την ένδειξη 5V, μπορεί να χρησιμοποιηθεί και αυτή για την τροφοδότηση διαφόρων εξαρτημάτων, συσκευών ή αισθητήρων με τάση 5V. Ανάλογα με τον τρόπο τροφοδοσίας του ίδιου του Arduino, η τάση αυτή προέρχεται είτε άμεσα από την θύρα USB (που ούτως ή άλλως παρέχει τάση 5V), είτε από την εξωτερική τροφοδοσία αφού αυτή περάσει από ένα ρυθμιστή τάσης για να την «σταθεροποιήσει» στα 5V. Το τέταρτο και το πέμπτο pin με την ένδειξη GND είναι οι γειώσεις. Το έκτο και τελευταίο pin, με την ένδειξη Vin έχει διπλό ρόλο. Σε συνδυασμό με το pin γείωσης δίπλα του, μπορεί να λειτουργήσει ως μέθοδος εξωτερικής τροφοδοσίας του Arduino στην περίπτωση που δεν βολεύει να χρησιμοποιηθεί η υποδοχή του φις των 2.1mm. Αν όμως υπάρχει ήδη συνδεδεμένη εξωτερική τροφοδοσία μέσω του φις, τότε μπορεί να χρησιμοποιηθεί αυτό το pin για να τροφοδοτήσει εξαρτήματα και συσκευές με την πλήρη τάση της εξωτερικής τροφοδοσίας (7~12V), πριν αυτή περάσει από τον ρυθμιστή τάσης όπως γίνεται με το pin των 5V. H φόρτωση του sketch πραγματοποιείται μέσω μίας USB θύρας που διαθέτει η πλακέτα arduino. Έτσι οι πληροφορίες που προέρχονται από την USB θύρα του υπολογιστή εισέρχονται στην USB θύρα του arduino και στην συνέχεια οδηγούνται στο FDTI ολοκληρωμένο για να διαμορφωθούν σε μία κατάλληλη μορφή ώστε ο μικροελεγκτής να μπορέσει να τις διαβάσει. Πάνω στην πλακέτα του arduino υπάρχει ένας διακόπτης micro-switch και 4 smd (μικροσκοπικά) LED επιφανειακής στήριξης. Η λειτουργία του διακόπτη (που έχει την σήμανση RESET) και του 14

16 ενός LED με την σήμανση POWER είναι προφανής. Τα δύο LED με τις σημάνσεις TX και RX, χρησιμοποιούνται ως ένδειξη λειτουργίας του σειριακού interface, καθώς ανάβουν όταν το arduino στέλνει ή λαμβάνει (αντίστοιχα) δεδομένα μέσω της USB. Tα LED αυτά ελέγχονται από τον ελεγκτή Serial-over-USB και συνεπώς δεν λειτουργούν όταν η σειριακή επικοινωνία γίνεται αποκλειστικά μέσω των ψηφιακών pin 0 και 1. Τέλος, υπάρχει το LED με τη σήμανση L. Η βασική λειτουργία του LED στην πλακέτα Arduino είναι για να αναβοσβήνει συνήθως για δοκιμαστικό σκοπό. Οι κατασκευαστές σκέφτηκαν να ενσωματώσουν ένα LED στην πλακέτα το οποίο το σύνδεσαν στη ψηφιακή θύρα 13. Έτσι ακόμα και αν δεν έχει συνδεθεί τίποτα πάνω στο φυσικό pin 13, αναθέτοντας του την τιμή HIGH μέσα από το πρόγραμμα, θα ανάψει το ενσωματωμένο LED L. Η πλακέτα μπορεί να τροφοδοτηθεί από μία USB θύρα ενός υπολογιστή ή από ένα 9 volt τροφοδοτικό συνεχούς ρεύματος με βύσμα 2.1mm barrel tip. Ο θετικός πόλος θα πρέπει να βρίσκεται στη εσωτερική πλευρά και ο αρνητικός στην εξωτερική πλευρά του βύσματος. Εικόνα Το arduino UNO Άλλες εκδώσεις arduino Σήμερα εκτός από την έκδοση arduino Duemilanove/UNO η οποία και αναλύθηκε παραπάνω, υπάρχουν άλλες οχτώ διαφορετικές πλακέτες arduino. Nano: Είναι μία μικρότερη έκδοση του arduino η οποία συνδέεται στον υπολογιστή μέσω καλωδίου mini USB B. Bluetooth: O ελεγκτής arduino BT περιέχει μία Bluetooth πλακέτα η οποία επιτρέπει την ασύρματη επικοινωνία και προγραμματισμό του μέσω του υπολογιστή. 15

17 LilyPad: Αυτή η έκδοση είναι σχεδιασμένη για να χρησιμοποιείται στα ρούχα. Έχει μοβ χρώμα και μπορεί να ραφτεί εύκολα πάνω σε ύφασμα. Pro: Η συγκεκριμένη πλακέτα είναι σχεδιασμένη για προχωρημένους χρήστες που έχουν σκοπό να τη χρησιμοποιήσουν κάπου μόνιμα. Είναι φθηνότερη από την Duemilanove και συνδέεται εύκολα με μπαταρίες αλλά απαιτούνται επιπλέον ηλεκτρονικές διατάξεις για την χρήση της. Pro-mini: Όπως και στην Pro έκδοση έτσι και σε αυτήν σχεδιάστηκε για προχωρημένους χρήστες με την διαφορά ότι η πλακέτα καταλαμβάνει μικρότερο χώρο. Η Pro-mini είναι και αυτή φθηνότερη έκδοση αλλά χρειάζεται επίσης περαιτέρω εργασία για την χρησιμοποίηση της. Serial: Αυτή είναι η βασική έκδοση arduino που χρησιμοποιεί το πρωτόκολλο RS232 για την επικοινωνία και τον προγραμματισμό του. Το πλεονέκτημα της είναι ότι μπορεί εύκολα να κατασκευαστή από έναν χρήστη. Serial Single Sided: η έκδοση αυτή σχεδιάστηκε με σκοπό να κατασκευαστεί στο χέρι.είναι λίγο μεγαλύτερο από τα προηγούμενα arduino, παρ όλα αυτά παραμένει συμβατή με τις περισσότερες κατασκευές που σχεδιάστηκαν για να προεκτείνουν της δυνατότητες της Duemilanove. Mega: Το Arduino mega όπως και το Duemilanove, συνδέεται μέσω USB και έχει το ίδιο μέγεθος. Η διαφορές τους είναι ότι ο μικροελεγκτής διαθέτει μεγαλύτερη μνήμη και έχει περισσότερες θύρες εισόδου/εξόδου.εκτός όμως από τις εκδόσεις arduino υπάρχουν και πολλές άλλες κατασκευές που λειτουργούν με παρόμοιο τρόπο όπως το Freeduino, το Sanguino, το Bare Bones Board, το LEDuino και το Miduino. 16

18 17

19 Εικόνα Από πάνω αριστερά προς τα κάτω: arduino nano, bluetooth,lilipad, pro, mega, serial, serial single sided, mini pro Το software για τον προγραμματισμό του arduino Το arduino IDE (Integrated Development Environment -Ολοκληρωμένο Περιβάλλον Ανάπτυξης) είναι ένα ειδικό πρόγραμμα βασισμένο σε java που εκτελείται στον υπολογιστή και επιτρέπει να γραφούν τα sketches για την πλακέτα arduino σε μία απλή γλώσσα που διαμορφώθηκε μέσα από την γλώσσα Processing. Πατώντας ένα κουμπί, το πρόγραμμα φορτώνει το sketch στον μικροελεγκτή του arduino. H γλώσσα του arduino βασίζεται στη γλώσσα Wiring, μία παραλλαγή C/C++ για μικροελεγκτές αρχιτεκτονικής AVR όπως ο ATmega, και υποστηρίζει όλες τις βασικές δομές της C καθώς και μερικά χαρακτηριστικά της C++. Για compiler χρησιμοποιείται ο AVR gcc και ως βασική βιβλιοθήκη C χρησιμοποιείται η AVR libc. Λόγω της καταγωγής της από την γλώσσα προγραμματισμού C, στη γλώσσα του arduino μπορούν να χρησιμοποιηθούν ουσιαστικά οι ίδιες βασικές εντολές και συναρτήσεις, με την ίδια σύνταξη, οι ίδιοι τύποι δεδομένων και οι ίδιοι τελεστές με την C. Πέρα από αυτές όμως, υπάρχουν κάποιες ειδικές εντολές, συναρτήσεις και σταθερές που βοηθούν για την διαχείριση του ειδικού hardware του arduino. Τα βήματα με τα οποία μπορεί να προγραμματιστεί το arduino Duemilanove/UNO είναι: 1. Συνδέεται πρώτα η πλακέτα με τον υπολογιστή μέσο USB θύρας 2. Γράφεται ο κώδικας του sketch o οποίος θα προγραμματίσει τον μικροελεγκτή ώστε να εκτελέσει τις επιθυμητές εργασίες 3. Φορτώνεται το sketch στον μικροελεγκτή του arduino μέσο της USB θύρας. Απαιτούνται μερικά δευτερόλεπτα έως ότου να τελειώσει ο μεταφορά και ο προγραμματισμός του μικροελεγκτή και στη συνέχεια το arduino κάνει μία επανεκκίνηση ώστε o μικροελεγκτής να διαβάσει τον καινούριο κώδικα. 4. Η πλακέτα μετά την επανεκκίνηση μπορεί να εκτελέσει το καινούριο sketch το οποίο γράφτηκε και φορτώθηκε στον μικροελεγκτή Arduino shields Πέραν όμως της μεγάλης ποικιλίας των πλακετών arduino, υπάρχει και μία μεγάλη ποικιλία από πλακέτες οι οποίες μπορούν να κουμπώσουν και να συνδεθούν με την πλακέτα arduino, με σκοπό την προέκταση των δυνατοτήτων της. Κάποιες από αυτές είναι: Xbee shield. Το Xbee είναι μία κατασκευή η οποία επιτρέπει σε ένα arduino να επικοινωνήσει ασύρματα με έναν υπολογιστή σε απόσταση έως και 100 μέτρων. Στην πραγματικότητα η ασύρματη αυτή επικοινωνία επιτυγχάνεται από δύο πομποδέκτες. Ο κάθε πομποδέκτης αποτελείτε από μία πλακέτα XBee Explorer USB η οποία είναι ένας μετατροπέας της USB θύρας σε σειριακή και ένα Xbee antenna. Το xbee antenna είναι υπεύθυνο για να εκπέμπει και να λαμβάνει σειριακά ηλεκτρικά σήματα τα οποία έχουν διαμορφωθεί σε ηλεκτρομαγνητικά στην συχνότητα των 2.4GHz. 18

20 Motor Controller. Η ελεγκτές κινητήρων είναι πλακέτες οι οποίες χρησιμοποιούνται με σκοπό τον έλεγχο των κινητήρων. Εξαιτίας του ότι η πλακέτα arduino δεν έχει την δυνατότητα να τροφοδοτήσει με την απαιτούμενη ισχύ τους κινητήρες, παρουσιάστηκε η ανάγκη κατασκευής κυκλώματος όπου θα «οδηγεί» τους κινητήρες αυτούς. Voice Recognition Shield. Είναι μία shield η οποία μαζί με το κατάλληλο software έχει την δυνατότητα να αναγνωρίσει μία ποικιλία φωνητικών εντολών που δίνονται από κάποιον χρήστη και να τις προωθήσει για να πραγματοποιήσει το arduino συγκεκριμένες ενέργειες. LCD shield. Το arduino σε συνδυασμό με μία LCD shield έχει την δυνατότητα να εμφανίσει διάφορα μενού ή μηνύματα σε μία οθόνη. Για παράδειγμα, οι χρήστες μπορούν μέσω της LCD να ενημερώνονται για τα αποτελέσματα που λαμβάνει ένα arduino από τους αισθητήρες που είναι συνδεμένοι. Έτσι δε χρειάζεται να συνδεθεί το arduino με τον υπολογιστή για να διαβαστούν τα αποτελέσματα από το serial monitor. GPS shield. Η συγκεκριμένη πλακέτα επικοινωνεί με τουλάχιστον 3 δορυφόρους και επιστρέφει στο arduino έναν αριθμό μεταβλητών που αντιστοιχούν σε συντεταγμένες. Wave shield. Είναι και αυτή μία πολύ ενδιαφέρoν κατασκευή που δίνει την δυνατότητα στο arduino να αναπαράγει μουσικά αρχεία μορφοποιημένα σε WAVE(.wav). BlinkM. Το BlinkM είναι ένα RGB led. Στην πραγματικότητα αποτελείται από τρεις διόδους led (red, green, blue) και εκμεταλλεύοντας την PWD δυνατότητα του arduino πραγματοποιεί μία μίξη των τριών βασικών χρωμάτων. To αποτέλεσμα είναι να εκπέμπει μία πολύ μεγάλη ποικιλία φωτεινών χρωμάτων. Η λίστα των arduino shields είναι αρκετά μεγάλη για να καλύψει τις απαιτητικές ανάγκες των σχεδιαστών για την πραγματοποίηση νέων ιδεών. Παρόλα αυτά όμως συνεχίζονται να σχεδιάζονται και να κατασκευάζονται καινούρια shields από διάφορες εταιρείες, έτσι μέρα με την μέρα οι σχεδιαστές έχουν την δυνατότητα να κατασκευάσουν όλο και περισσότερες πρωτότυπες ιδέες. 19

21 Εικόνα Arduino Shields από πάνω αριστερά προς τα κάτω: Xbee shield, GPS shield, voice recognition shield, LCD shield, motor shield, wave shield 20

22 1.3 Προγραμματισμός του ελεγκτή Arduino Το περιβάλλον Arduino IDE (integrated development environment) Το Arduino IDE είναι αρκετά απλούστερο σε αντίθεση με άλλα περιβάλλοντα ανάπτυξης λογισμικού όπως το Eclipse, το Xcode και το Visual Studio. Κυρίως αποτελείται από έναν editor (κειμενογράφο), έναν compiler, ένα loader και ένα serial monitor. Δεν περιέχει προχωρημένες λειτουργίες όπως debugging ή code completion, δίνει μόνο τη δυνατότητα για μερικές ρυθμίσεις στα «preferences». Εικόνα Το περιβάλλον προγραμματισμού arduino 21

23 Στην συνέχεια ακολουθεί η εικόνα του toolbar του arduino IDE που δίνει άμεση πρόσβαση στις λειτουργίες που χρειάζονται περισσότερο για την ανάπτυξη των εφαρμογών που επιθυμεί να αναπτύξει ο χρήστης. Εικόνα Το toolbar του arduino IDE Με το κουμπί Verify ο χρήστης μπορεί να μεταγλωττίσει (compile) τον κώδικα που βρίσκεται εκείνη την στιγμή στον editor. Το κουμπί verify εκτός από τον συντακτικό έλεγχο, αφού μεταγλωττιστή ο κώδικας στη συνέχεια τον μετατρέπει σε μορφή κατάλληλη για να «φορτωθεί» στον μικροελεγκτή του arduino. Το κουμπί New δημιουργεί ένα καινούριο πρόγραμμα διαγράφοντας οτιδήποτε υπάρχει στον editor. Πριν όμως πραγματοποιήσει αυτήν την ενέργεια, δίνει στον χρήστη την ευκαιρία να αποθηκεύσει το υπάρχον sketch (πρόγραμμα) στην περίπτωση που έχει κάνει κάποιες αλλαγές σε αυτό. Με το κουμπί Open μπορεί ο χρήστης να ανοίξει ένα υπάρχον πρόγραμμα από το σύστημα του. Το κουμπί Save αποθηκεύει της αλλαγές που έχουν γίνει στο πρόγραμμα που επεξεργάστηκε στον Editor. To κουμπί Upload όπως και το κουμπί Verify μεταγλωττίζει τον υπάρχον κώδικα στον editor. Με τη διαφορά όμως ότι αφού ελέγξει για τυχόν συντακτικά λάθη και το μετατρέψει σε μορφή κατάλληλη για το arduino, στη συνέχεια θα τον προωθήσει στην θύρα που έχει επιλέξει ο προγραμματιστής από το μενού Tools > Serial Port ώστε να «φορτωθεί» στον μικροελεγκτή. Ο υπολογιστής μπορεί να επικοινωνήσει με το arduino μέσο σειριακής σύνδεσης.επιλέγοντας το κουμπί Serial Monitor ανοίγει ένα serial monitor παράθυρο όπου επιτρέπει να παρακολουθεί ο προγραμματιστής τα δεδομένα που στέλνονται προς το arduino αλλά και τα δεδομένα που στέλνονται από το arduino προς τον υπολογιστή. Επιλέγοντας από το μενού το Sketch πέρα από τις λειτουργίες μου αναφέρθηκαν παραπάνω για την εντολή Verify/compile, εμφανίζονται και κάποιες άλλες ενδιαφέρουσες λειτουργίες. Η επιλογή Show Sketch folder είναι μία συντόμευση η οποία ανοίγει σε ένα παράθυρο την διεύθυνση στην οποία το λειτουργικό σύστημα αποθηκεύει τα αρχεία των εφαρμογών. Η επιλογή Add file επιτρέπει στον χρήση να ανοίξει ένα αρχείο το οποίο μπορεί να βρίσκεται οπουδήποτε μέσα στο σύστημα και να το αποθηκεύσει στον ίδιο φάκελο όπου ανήκει και η εφαρμογή. Τελευταία είναι η επιλογή Import Library. O προγραμματιστής έχει την δυνατότητα να εισάγει στο πρόγραμμα που αναπτύσσει οποιαδήποτε βιβλιοθήκη, είτε αυτή είναι του arduino είτε κάποια που δημιούργησε ο ίδιος. Δίπλα από το Sketch στο μενού υπάρχει η επιλογή Tools. Σε αυτή 22

24 την στήλη του μενού ο προγραμματιστής έχει την δυνατότητα να επιλέξει την θύρα (serial port) με την οποία θα επικοινωνήσει ο υπολογιστής με το arduino, καθώς επίσης και πια συγκεκριμένη έκδοση arduino έχει (board). Εκτός όμως από αυτές τις δύο βασικές λειτουργίες υπάρχουν και κάποιες άλλες. Το Auto Format το οποίο μορφοποιεί των κώδικα που βρίσκεται στον editor κατάλληλα για να διαβάζεται ευκολότερα. Το Archive Sketch το οποίο μετατρέπει την εφαρμογή που αναπτύσσει ο προγραμματιστής σε ένα αρχείο zip και το αποθηκεύει. Ακόμα σε μερικές περιπτώσεις όταν ένα αρχείο ανοιχθεί στο arduino IDE υπάρχει η περίπτωση να περιέχει χαρακτήρες οι οποίοι δεν είναι ASCII, επιλέγοντας το Fix Encoding & Reload ο κώδικας θα ανανεωθεί αντικαθιστώντας τους περίεργους χαρακτήρες σε χαρακτήρες UTF-8 έκδοση. Τέλος η επιλογή Burning Bootloader απευθύνεται σε προχωρημένους χρήστες όπου τους δίνεται η δυνατότητα να χρησιμοποιήσουν την μνήμη που αντιστοιχεί στον bootloader Blinking Led Μία κοινή τακτική στα βιβλία προγραμματισμού για αρχάριους είναι να δείξουν σε ένα από τα εισαγωγικά κεφάλαια στους αναγνώστες τους πως να εμφανίσουν στην οθόνη τους το μήνυμα «hello world!». Δυστυχώς όμως στον προγραμματισμό των μικροελεγκτών δεν είναι και τόσο εύκολο σε αντίθεση με τις κοινές γλώσσες προγραμματισμού. Έτσι στους μικροελεγκτές συνηθίζεται να δημιουργούν ένα πρόγραμμα το οποίο αναβοσβήνει ένα LED (blinking a LED [1]). Αυτός είναι ο τρόπος με τον οποίο οι μικροελεγκτές λένε «hello world!». Όπως αναφέρθηκε παραπάνω η πλακέτα arduino έχει ενσωματωμένο ένα LED το οποίο είναι συνδεμένο μεταξύ της γείωσης και της θύρας 13. Έτσι χρησιμοποιώντας την συγκεκριμένη θύρα ο προγραμματιστής δε χρειάζεται να συνδέσει τις απαραίτητες ηλεκτρονικές διατάξεις (LED, αντιστάσεις, καλώδια) για να πραγματοποιήσει το ακόλουθο παράδειγμα. Εκτελώντας το arduino IDE σε επίπτωση που ο editor δεν είναι καθαρός θα πρέπει να δημιουργηθεί ένα καινούριο αρχείο. Εκτός από τον τρόπο που περιγράψαμε παραπάνω χρησιμοποιώντας το κουμπί New από το toolbar, μπορεί να γίνει και επιλέγοντας το New από το μενού. Στην συνέχεια αναπτύσσεται και αποθηκεύεται το sketch που βρίσκεται ακριβώς από κάτω δίνοντας του ένα όνομα όπως για παράδειγμα «blinking led». // παράδειγμα sketch: Blinking LED const int LED = 13; //το LED συνδέεται στο ψηφιακή θύρα 13 void setup() { pinmode(led, OUTPUT); // η θύρα 13 δηλώνετε ως θύρα έξοδου void loop() { digitalwrite(led, HIGH);// Η θύρα LED πηγαίνει σε κατάσταση... 23

25 //...high(+5volt) delay(1000); // Το πρόγραμμα περιμένει για ένα δευτερόλεπτο digitalwrite(led, LOW);//Η θύρα LED πηγαίνει σε κατάσταση low(0volt) delay(1000); // Το πρόγραμμα περιμένει για ένα δευτερόλεπτο Από την στιγμή που ο κώδικας έχει γράφει στον editor, το επόμενο βήμα είναι να γίνει ο έλεγχος του πατώντας το κουμπί Verify. Στην περίπτωση που όλα είναι σωστά και δεν υπάρχουν συντακτικά λάθη τότε εμφανίζεται στο κάτω μέρος του Arduino IDE το μήνυμα «Done compiling». Το μήνυμα που εμφανίζεται σημαίνει ότι το Arduino IDE τροποποίησε τον κώδικα σε ένα εκτελέσιμοι αρχείο το οποίο μπορεί να «τρέξει» στο arduino, κάτι αντίστοιχο με τα.exe αρχεία για τα Windows και τα.app αρχεία για τα Mac Os X. Στην περίπτωση όμως που υπάρχουν λάθη στον κώδικα, τότε στη θέση του μηνύματος «Done compiling» εμφανίζεται ένα αντίστοιχο μήνυμα σφάλματος. Αφού έχει μεταγλωττιστεί σωστά ο κώδικας, μπορεί πλέον πατώντας το κουμπί Upload να «φορτωθεί» στην πλακέτα arduino. Αυτό θα επαναφέρει το arduino στις αρχικές του ρυθμίσεις, αναγκάζοντας το να σταματήσει οποιαδήποτε ενέργεια πραγματοποιούσε μέχρι εκείνη την στιγμή και να «ακούσει» τις οδηγίες που θα λάβει από την USB θύρα. Μόλις o μικροελεγκτής σταματήσει να λειτουργεί, το arduino IDE στέλνει το sketch που έχει δημιουργήσει ο προγραμματιστής προς την πλακέτα, το οποίο θα αποθηκευτεί στην μνήμη του μικροελεγκτή και τελικά θα εκτελεστεί. Στη συνέχεια θα εμφανιστούν μερικά μηνύματα στην μαύρη περιοχή που βρίσκεται στο κάτω μέρος του arduino IDE και ακριβώς από πάνω το μήνυμα «Done uploading» το οποίο ενημερώνει τον προγραμματιστή ότι η διαδικασία τελείωσε με επιτυχία. Τα δύο LED RX και TX στην πλακέτα αναβοσβήνουν κάθε φορά που ένα byte λαμβάνεται ή στέλνεται από το arduino. Έτσι κατά την διάρκεια της διαδικασίας της «φόρτωσης» του sketch προς τον μικροελεγκτή τα δύο αυτά LED θα πρέπει αναβοσβήνουν συνεχώς. Εάν δεν παρατηρηθεί να αναβοσβήνουν τα LED ή εμφανιστεί ένα μήνυμα σφάλματος αντί για το «Done uploading» στην μαύρη περιοχή, τότε υπάρχει πρόβλημα επικοινωνίας μεταξύ του υπολογιστή και του arduino. Ο προγραμματιστής θα πρέπει να σιγουρευτεί από το μενού ότι έχει επιλέξει τις σωστές ρυθμίσεις της πλακέτας (tools > boards) και της θύρας (tools > serial port) διαλέγοντας την σωστή έκδοση του arduino και την σωστή θύρα που είναι συνδεμένο το arduino με τον υπολογιστή. Από την στιγμή που ο κώδικας «φορτώθηκε» στον μικροελεγκτή τότε αυτός παραμένει εκεί έως ότου να αντικατασταθεί από ένα άλλο sketch. Το υπάρχον sketch διατηρείτε στον μικροελεγκτή του arduino μετά από reset (επαναφορά αρχικών ρυθμίσεων) ή μετά από τη διακοπεί της παροχής ρεύματος (turned off), όπως για παράδειγμα τα δεδομένα τα οποία αποθηκεύονται στον σκληρό δίσκο του υπολογιστή. Με την προϋπόθεση ότι όλα έγιναν με επιτυχία τότε το LED «L» που είναι ενσωματωμένο στο Arduino θα πρέπει να αναβοσβήνει ανά ένα δευτερόλεπτο. Αυτό που μόλις δημιουργήθηκε είναι ένα μικρό πρόγραμμα υπολογιστή ή sketch όπως ονομάζονται τα προγράμματα του arduino. Όπως αναφέρθηκε και πριν, το arduino είναι ένας μικρός υπολογιστής και μπορεί να προγραμματιστεί ώστε να κάνει ότι επιθυμεί ο προγραμματιστής. 24

26 1.3.3 Επεξήγηση του Sketch // παράδειγμα sketch: Blinking LED Τα σχόλια είναι απαραίτητα όταν αναπτύσσονται εφαρμογές, ιδιαίτερα όταν αυτές αποτελούνται από πολλές γραμμές κώδικα. Ο μεταγλωττιστής όταν συναντάει κείμενο το οποίο στα αριστερά του ξεκινάει με // το αγνοεί. Αφήνοντας σχόλια στα κυριότερα σημεία του κώδικα, γίνετε ευκολότερος ο τρόπος για να διαβαστεί από έναν προγραμματιστή που τον ανοίγει για πρώτη φορά αλλά και για τον ίδιο τον προγραμματιστή που τον έγραψε όταν τον ξαναδιαβάσει μετά από ένα χρονικό διάστημα. const int LED = 13; const int σημαίνει ότι η LED είναι μία integer μεταβλητή η οποία δεν πρόκειται να αλλάξει ποτέ η τιμή της και θα αντιστοιχεί στον αριθμό 13. Έτσι ενημερώνεται το arduino όπου βλέπει την λέξη LED να την διαβάζει σαν τον ακέραιο αριθμό 13. void setup() Στην γραμμή αυτή δηλώνουμε στο arduino ότι το block που ακολουθεί ονομάζετε setup(). { Με αυτήν την ανοιχτή αγκύλη ένα block κώδικα ξεκινάει. pinmode(led, OUTPUT); //set the digital pin as output Το pinmode λέει στο arduino πως θα διαμορφώσει μία καθορισμένη θύρα (pin). Μία ψηφιακή θύρα μπορεί να χρησιμοποιηθεί ως είσοδος ( INPUT) ή ως έξοδος (OUTPUT). Στην συγκεκριμένη περίπτωση θέλουμε μία θύρα εξόδου για να ελέγξουμε το LED, έτσι τοποθετούμε τον αριθμού της θύρας και την κατάσταση της θύρας μέσα στην παρένθεση. Η pinmode είναι μία συνάρτηση και οι λέξεις (ή οι αριθμοί) μέσα στην παρένθεση είναι τα ορίσματα. Η INPUT και η OUTPUT είναι σταθερά ορίσματα της γλώσσας του arduino. Αυτή η αγκύλη δηλώνει το τέλος της συνάρτησης setup(). void loop() { H συνάρτηση loop() είναι υπεύθυνη για την διαδραστική λειτουργία του μικροελεγκτή. Αυτή θα επαναλαμβάνεται ξανά και ξανά έως ότου να σταματήσει να παρέχεται ρεύμα στην πλακέτα. digitalwrite(led, HIGH); //turns the LED on Η συνάρτηση ενεργοποιεί η απενεργοποιεί την θύρα η οποία έχει οριστεί ως θύρα έξοδου. Το πρώτο όρισμα (στην συγκεκριμένη περίπτωση LED) ορίζει σε πιο pin (θύρα) του arduino θα πραγματοποιηθεί κάποια ενέργεια (άρα εδώ που το όρισμα είναι το LED απευθύνεται στην θύρα 13 όπως δηλώθηκε στην αρχή του κώδικα). Το δεύτερο όρισμα δηλώνει αν η θύρα θα πάει σε 25

27 κατάσταση HIGH ( +5 volt) η σε κατάσταση LOW (0 volt). Σε αυτή την περίπτωση η θύρα θα πάει σε κατάσταση HIGH και το LED που βρίσκεται στο pin 13 θα ανάψει. delay(1000); // waits for a second Η delay(argument) είναι μία συνάρτηση στην οποία λέει στο arduino να μη κάνει απολύτως τίποτα και να περιμένει έως ότου να περάσουν όσα milliseconds αντιστοιχούν στο όρισμα (argument). Έτσι το led που βρίσκεται συνδεμένο στην θύρα 13 παραμένει αναμμένο έως ότου η κατάσταση του pin αλλάξει από HIGH σε LOW. digitalwrite(led, LOW); // turns the led off Σε αυτήν την γραμμή κώδικα χρησιμοποιείται η ίδια συνάρτηση με πριν με την διαφορά ότι το δεύτερο όρισμα είναι το LOW. Το αποτέλεσμα θα είναι η θύρα 13 να επιστρέψει στην προηγούμενη κατάσταση της που ήταν η LOW. Άρα στο LED δεν θα παρέχονται πλέον τα +5 volt με αποτέλεσμα να σβήσει. delay(1000); // waits for a second Η συνάρτηση delay καλείται για ακόμη μία φορά και το led θα παραμείνει σβηστό για 1000 milliseconds (1 second). Η κλειστή αγκύλη δηλώνει το τέλος της συνάρτησης loop() και ο κώδικας που βρίσκεται μέσα σε αυτήν θα επαναλαμβάνεται από την αρχή, έως ότου να σταματήσει να παρέχεται ρεύμα στον ελεγκτή Μεταβλητές και τύποι δεδομένων Όταν δηλώνουμε μία καινούρια μεταβλητή τότε χρειαζόμαστε τουλάχιστον δύο είδη πληροφορίας. Τον τύπο και το όνομα της μεταβλητής. Αυτή η ενέργεια ονομάζεται ορισμός (declaring[2]) μίας μεταβλητής όπου δεσμεύει έναν χώρο στην μνήμη του μικροελεγκτή με σκοπό την αποθήκευση πληροφοριών Ονομασία μεταβλητών Για την ονομασία των μεταβλητών υπάρχουν κάποιοι κανόνες που θα πρέπει να τηρηθούν. Πρώτα απ όλα το όνομα μίας μεταβλητής ή συνάρτησης μπορεί να περιέχει γράμματα, αριθμούς, το σύμβολο του δολαρίου και underscores. Κενά και περίεργους χαρακτήρες όπως για ή & δεν επιτρέπονται, όπως επίσης δεν επιτρέπεται και να ξεκινάει με αριθμό το όνομα μίας μεταβλητής. Παράδειγμα επιτρεπτών ονομάτων από μεταβλητές είναι myvariable, myvalue, DELAY_TIME, ενώ τα ακόλουθα ονόματα 1stValue, delay time, και time&money δεν επιτρέπονται. Τα ονόματα των μεταβλητών συνήθως αντιπροσωπεύουν τον λόγο της ύπαρξης τους με σκοπό να είναι πιο κατανοητή η χρήση τους. 26

28 Τύποι δεδομένων των μεταβλητών Κάθε δεδομένο το οποίο αποθηκεύεται στο arduino πρέπει να αντιστοιχεί σε ένα τύπο. Ανάλογα τις ανάγκες των δεδομένων ο τύπος μπορεί να είναι ένας από τους παρακάτω. Boolean: οι τιμές αυτών των τύπων καταλαμβάνουν μόνο ένα byte στην μνήμη και μπορεί να αντιστοιχεί σε true ή false. Char: οι μεταβλητές αυτές καταλαμβάνουν ένα byte στην μνήμη και αποθηκεύουν αριθμούς από το -128 έως το 127. Τις περισσότερες φορές αυτοί οι αριθμοί αντιπροσωπεύουν χαρακτήρες κωδικοποιημένους σε ASCII. Στο παράδειγμα που ακολουθεί, οι μεταβλητές c1 και c2 έχουν τις ίδιες τιμές. Char c1 = A ; Char c2 = 65; Byte: είναι μεταβλητές που καταλαμβάνουν ένα byte στην μνήμη και παίρνουν τιμές από το 0 έως το 255. Int: οι μεταβλητές αυτές καταλαμβάνουν δύο byte χώρο στην μνήμη και αποθηκεύουν τιμές από το -32,768 έως το 32,767. Για μεγαλύτερους αριθμούς χρησιμοποιείται η long. Καταλαμβάνει 4 byte στην μνήμη και αποθηκεύει τιμές από το -2,147,483,648 έως το 2,147,483,647. Η float και double μεταβλητές είναι ίδιες και μπορούν να χρησιμοποιηθούν για να δηλώσουν αριθμούς κινητής υποδιαστολής. Και οι δύο τύποι καταλαμβάνουν 4 byte στην μνήμη και αποθηκεύουν τιμές από το E+38 έως το E Πίνακες (array) Ο ορισμός ενός πίνακα είναι παρόμοιος με τον ορισμό μίας μεταβλητής. Η απλούστερη σύνταξη για τον ορισμό ενός πίνακα είναι: «τύπος δεδομένων» «όνομα πίνακα» [«αριθμός στοιχείων»]; Ο τύπος δεδομένων αντιστοιχεί στον τύπο των δεδομένων που θα αποθηκευτούν στον πίνακα ενώ μέσα στις αγκύλες δηλώνεται ο αριθμός των δεδομένων που θα αποθηκευτούν μέσα στον πίνακα. Για παράδειγμα η εντολή int myarray[3]; θα δημιουργήσει 3 νέα στοιχεία με το όνομα myarray[0], myarray[1] και myarray[2]. Το πρώτο στοιχείο σε έναν πίνακα βρίσκεται πάντα στην θέση 0. Για να εκχωρηθούν οι τιμές στον πίνακα υπάρχουν δύο τρόποι. Ο πρώτος τρόπος σύνταξης είναι: «όνομα πίνακα»[«θέση στοιχείου»] = «τιμή στοιχείου» Η τιμή που βρίσκεται στα δεξιά του τελεστή εκχώρησης αποθηκεύεται στην θέση του πίνακα που ορίζεται μέσα στις αγκύλες. Ο δεύτερος τρόπος σύνταξης είναι: «τύπος δεδομένων» «όνομα πίνακα»[] = {«τιμή 1ου στοιχείου, τιμή 2 ου στοιχ...»; 27

29 Ο τρόπος αυτής της εκχώρησης χρησιμοποιείται μόνο κατά τον ορισμό του πίνακα. Μέσα στις αγκύλες { περιέχονται τα στοιχεία χωρισμένα με κόμμα που πρόκειται να αποθηκευτούν μέσα στον πίνακα, το πρόγραμμα μετράει τα στοιχεία και γνωρίζει τον αριθμό των θέσεων του πίνακα. Όταν καλείται το όνομα του πίνακα και μέσα στις αγκύλες [] ο αριθμός μίας θέσης του, τότε επιστρέφει η τιμή που είναι αποθηκευμένη στην συγκεκριμένη θέση. Ένα string είναι ένας πίνακας από char μεταβλητές. H σύνταξη ενός char πίνακα μπορεί να διαφέρει λίγο. Στο παράδειγμα που ακολουθεί όλοι οι πίνακες έχουν το ίδιο περιεχόμενο. char string1[8] = { 'A', 'r', 'd', 'u', 'i', 'n', 'o', '\0' ; char string2[] = "Arduino"; char string3[8] = "Arduino"; char string4[] = { 65, 114, 100, 117, 105, 110, 111, 0 ; Τα string πρέπει πάντα να τερματίζονται με ένα μηδενικό byte. Όταν χρησιμοποιούνται double quotes για την δημιουργία ενός string τότε το μηδενικό byte προστίθεται αυτόματα. Αυτός είναι και ο λόγος που πρέπει να προσθέτουμε ακόμη μία μονάδα στο μέγεθος των περιεχομένων του πίνακα Qualifiers μεταβλητών Όταν δηλωθεί μία μεταβλητή μπορούν να χρησιμοποιηθούν τα variable qualifiers. Σκοπός τους είναι η παραλλαγή της συμπεριφοράς μίας μεταβλητής για να αλλάξουν κάποιες λειτουργίες στον τρόπο που χρησιμοποιείται. Η const ή constant μετατρέπει μία μεταβλητή σε κατάσταση read-only (μόνο ανάγνωση) και δεν μπορεί να αλλάξουν οι πληροφορίες της από την στιγμή που οριστεί. Για παράδειγμα: const int red = 9; η μεταβλητή red θα περιέχει τον ακέραιο αριθμό 9 και δε θα μπορεί να αλλάξει την τιμή αυτή ποτέ ξανά. Για να μετατραπεί το εύρος των τιμών που παίρνουν οι μεταβλητές ενός τύπου δεδομένων χρησιμοποιείται το unsigned. Το unsigned είναι και αυτό ένα variable qualifier το οποίο επιτρέπει στις μεταβλητές να παίρνουν μόνο θετικές τιμές. Έτσι αφού η μεταβλητή δεν περιμένει ποτέ να πάρει αρνητικό πρόσημο, διπλασιάζει το εύρος των θετικών τιμών. Για παράδειγμα: unsigned int maxthreshold = 1024; Πιο συγκεκριμένα τοποθετώντας τη λέξη unsigned μπροστά από μία integer μεταβλητή κατά τον ορισμό της, τότε αυτή η μεταβλητή θα παίρνει μόνο θετικές τιμές μεταξύ του 0 και του 65,

30 Προκαθορισμένες μεταβλητές Όπως ο χρήστης δηλώνει κάποιες μεταβλητές μόνο για ανάγνωση (constant) έτσι και το περιβάλλον ανάπτυξης arduino εφαρμογών έχει κάποιες δικές του μεταβλητές με προκαθορισμένες τιμές. Οι πρώτες από αυτές τις προκαθορισμένες μεταβλητές είναι η true και η false βασισμένες από την boolean λογική και τους λογικούς πίνακες αληθείας. Η κατάσταση false εύκολα μπορεί να οριστεί ως μηδέν ή μερικές φορές ως off. Από την άλλη πλευρά η κατάσταση true είναι οτιδήποτε άλλο εκτός του false όπως για παράδειγμα 1, «on» ή κάποιος άλλος αριθμός έκτος του μηδενός. Ένα άλλο ζευγάρι προκαθορισμένων μεταβλητών είναι το INPUT και το OUTPUT. Αυτές οι δύο μεταβλητές καθαρίζουν τον τρόπο λειτουργίας μίας ψηφιακής θύρας (digital pin) χρησιμοποιώντας την συνάρτηση pinmode. Επίσης υπάρχουν ακόμη δύο προκαθορισμένες μεταβλητές η HIGH και η LOW όπου κατά προσέγγιση αντιπροσωπεύουν τις τιμές +5 και 0 volt ή on και off. Χρησιμοποιούνται με σκοπό να δηλώσουν την κατάσταση μίας θύρας Εμβέλεια μεταβλητών Στις προηγούμενες παραγράφους περιγράφηκε ο τρόπος δήλωσης μίας μεταβλητής, ένα άλλο επίσης σημαντικό είναι το μέρος στο οποίο θα δηλωθεί αυτή. Η τοποθεσία που θα οριστεί μία μεταβλητή δηλώνει και την εμβέλεια της. Αυτό είναι γνωστό και ως variable scope.οι μεταβλητές στο παράδειγμα blinking led δηλώθηκαν έξω από τις συναρτήσεις setup() και loop() στην αρχή του κώδικα. Αυτές που δηλώνονται εκτός κάποιας συνάρτησης είναι γνωστές και ως global μεταβλητές (variables) και μπορούν να χρησιμοποιηθούν σε όλο το sketch. Σε αντίθεση, αν κάποια μεταβλητή έχει δηλωθεί μέσα σε μία συνάρτηση για παράδειγμα μέσα στην setup(), τότε αυτή θα είναι διαθέσιμη μόνο μέσα στο block που δηλώθηκε και δε θα μπορούσε να χρησιμοποιηθεί έξω από αυτό. Αυτές είναι γνωστές ως local μεταβλητές (variables) Εκχώρηση τιμών Για να γίνει η εκχώρηση τιμών στις μεταβλητές χρησιμοποιείται ο τελεστής εκχώρησης «=». Αυτός είναι το μαθηματικό σύμβολο της ισότητας αλλά δεν λειτουργεί με τον ίδιο ακριβώς τρόπο όπως στα μαθηματικά. Ο τελεστής λέει στον compiler να πάρει τις τιμές που βρίσκονται στα δεξιά του και να τις εκχωρήσει στην μεταβλητή που βρίσκεται στα αριστερά του Μαθηματικοί τελεστές Υπάρχουν πέντε βασικοί τελεστές που χρησιμοποιούνται για να κάνουν τις βασικές αριθμητικές πράξεις. Πρώτος τελεστής είναι αυτός της πρόσθεσης «+». Έτσι αν επιθυμεί ο προγραμματιστής να προσθέσει δύο στοιχεία και να εκχωρήσει σε μία μεταβλητή το αποτέλεσμα τους, θα το κάνει κάπως έτσι: 29

31 myvalue = ; Ξεκινώντας από τα δεξιά το arduino θα προσθέσει το 4 με το 38 και θα εκχωρήσει το άθροισμα τους στην μεταβλητή myvalue που βρίσκεται στα αριστερά του τελεστή εκχώρησης. myvalue = 255; newvalue = myvalue - 128; Ο τελεστής της αφαίρεσης «-» στο παραπάνω παράδειγμα θα αφαιρέσει από την μεταβλητή myvalue η οποία ισούται με το 255 τον αριθμό 128 και το αποτέλεσμα θα το εκχωρήσει στη μεταβλητή newvalue. float pi = ; int diameter = 5; float C; C = pi * diameter; Στην συγκεκριμένη περίπτωση ο τελεστής του πολλαπλασιασμού «*» αγνοεί τον τύπο της μεταβλητής diameter που είναι integer και πολλαπλασιάζει τις δύο μεταβλητές μεταξύ τους σαν να είναι float. Στην συνέχεια εκχωρεί το αποτέλεσμα στην μεταβλητή C. int myvalue; myvalue = 9 / 5; Ο τελεστής διαίρεσης «/» πραγματοποιεί μία διαίρεση μεταξύ των τελεστών και επιστρέφει το αποτέλεσμα. Στο παραπάνω παράδειγμα ο τελεστής διαίρεσης θα κάνει την διαίρεση και θα επιστρέψει την τιμή 1, εξαιτίας του ότι η αριθμητική πράξη γίνεται μεταξύ ακέραιων μεταβλητών. Έτσι η μεταβλητή myvalue θα περιέχει την τιμή 1 αντί για 1.8 στην περίπτωση που οι μεταβλητές ήταν αριθμοί κινητής υποδιαστολής. Τέλος ο τελεστής υπολοίπου «%» επιστρέφει το υπόλοιπο μίας διαίρεσης μεταξύ ακέραιων τελεστών. Η έκφραση δηλαδή 9%5 θα επέστρεφε την τιμή 0.8 επειδή είναι το υπόλοιπο της διαίρεσης Σύνθετοι τελεστές Τελεστές προσαύξησης και μείωσης Μία συνηθισμένη εργασία είναι να προστίθεται ή να αφαιρείται το 1 από μία ακέραια μεταβλητή. myvalue = myvalue +1; Το παραπάνω παράδειγμα θα μπορούσε να αντικατασταθεί χρησιμοποιώντας έναν σύνθετο τελεστή. Στην περίπτωση δηλαδή που θέλουμε να αυξήσουμε μία μεταβλητή κατά ένα, για συντομία θα 30

32 μπορούσε να γραφεί το όνομα της μεταβλητής και ο τελεστής ++. Η γραμμή κώδικα που ακολουθεί θα είχε ακριβώς το ίδιο αποτέλεσμα με την παραπάνω. myvalue++; Στην περίπτωση που η μεταβλητή έπρεπε να μειωθεί κατά 1, θα χρησιμοποιούνταν ο αντίστοιχος τελεστής --. Η σύνταξη της εντολής θα ήταν: myvalue--; Αυτοί οι δύο τελεστές χρησιμοποιούνται μόνο για να αυξήσουν ή να μειώσουν μία μεταβλητή κατά μία μονάδα. Αν ο προγραμματιστής επιθυμεί να αυξήσει ή να μειώσει την μεταβλητή με αριθμό μεγαλύτερο από το 1 τότε μπορεί να χρησιμοποιήσει τους σύνθετους τελεστές εκχώρησης +=, -=, *=, /=. Για παράδειγμα αν θέλει να αυξήσει μία μεταβλητή κατά 10 μπορεί να εκτελέσει την ακόλουθη εντολή: myvalue +=10; Η δήλωση αυτή είναι η ίδια με την myvalue = myvalue + 10;. Δηλαδή πρόσθεσε την μεταβλητή myvalue με το 10 και στη συνέχεια εκχωρεί το αποτέλεσμα της πρόσθεσης στην ίδια μεταβλητή. Επίσης μπορεί η μεταβλητή να πολλαπλασιαστεί με έναν αριθμό και το αποτέλεσμα να αποθηκευτεί στην ίδια. Για παράδειγμα: myvalue *=1,5; Η μεταβλητή myvalue πολλαπλασιάζεται με το 1.5 και το αποτέλεσμα εκχωρείται πάλι στην myvalue, έτσι αν η αρχική τιμή της ήταν 10, τώρα θα ισούται με το 15. Παρόμοια λειτουργούν και οι υπόλοιποι σύνθετοι τελεστές εκχώρησης -=,/= Συσχετιστικοί τελεστές Το arduino μπορεί να χρησιμοποιηθεί για την λήψη αποφάσεων, έτσι αν ο προγραμματιστής θέλει να ελέγξει κατά ποσό ή όχι μία μεταβλητή ανέκτησε την επιθυμητή τιμή, θα πρέπει να χρησιμοποιήσει μία έκφραση σαν αυτή που ακολουθεί. myvalue == 5 Στο παράδειγμα αυτό χρησιμοποιείται o τελεστής συσχέτισης ==, o οποίος ελέγχει εάν μία μεταβλητή ή τιμή που βρίσκεται στο αριστερό μέρος είναι ίση με μία μεταβλητή ή τιμή που βρίσκεται στο δεξιό μέρος. Στην περίπτωση του παραδείγματος η έκφραση θα πρέπει να επιστρέψει true εάν η μεταβλητή myvalue περιέχει την τιμή 5, ενώ false αν περιέχει διαφορετική τιμή. Ένας παρόμοιος τελεστής σύγκρισης που επιστρέφει ακριβώς τα αντίθετα αποτελέσματα με τον προηγούμενο είναι το!=. Σύμφωνα με αυτόν τον τελεστή όταν το αριστερό στοιχείο είναι διαφορετικό από το δεξιό τότε επιστρέφει true, ενώ όταν έχουν την ίδια τιμή επιστρέφει false. Άλλοι συσχετιστικοί τελεστές είναι το > και το <. Ο τελεστής > επιστρέφει true όταν συγκρίνει δύο στοιχεία και το αριστερό είναι μεγαλύτερο από το δεξιό στοιχείο. Αντίθετα ο τελεστής < επιστρέφει true όταν το αριστερό στοιχείο είναι μικρότερο από το δεξιό. Στις περιπτώσεις που τα στοιχεία είναι ίσα μεταξύ τους τότε επιστρέφεται η τιμή false. Τέλος υπάρχει ακόμη ένα ζευγάρι τελεστών 31

33 σύγκρισης. Ο τελεστής >= ο οποίος επιστρέφει true στην περίπτωση που το αριστερό στοιχείο είναι μεγαλύτερο ή ίσο με το δεξιό και false εάν το αριστερό είναι μικρότερο. Ο τελεστής <= επιστρέφει την τιμή true εάν το αριστερό στοιχείο είναι μικρότερο ή ίσο με το δεξιό στοιχείο, σε διαφορετική περίπτωση θα επιστρέψει false Λογικοί τελεστές Οι συγκριτικοί τελεστές δουλεύουν ιδανικά όταν θέλουμε να συγκρίνουμε δύο τιμές μεταξύ τους, υπάρχουν όμως περιπτώσεις που απαιτούν πιο πολύπλοκες συγκρίσεις. Σε τέτοιες περιπτώσεις χρησιμοποιούνται οι λογικοί τελεστές. Για παράδειγμα όταν υπάρχουν δύο ξεχωριστές συγκρίσεις και αυτές θα πρέπει να κάνουν κάτι μόνο στην περίπτωση που είναι και οι δύο αληθείς. Τότε η έκφραση θα πρέπει να γραφεί κάπως έτσι. myvalue >= 10 && myvalue <=20 Η παραπάνω έκφραση χρησιμοποιεί το λογικό AND «&&» και επιστρέφει true μόνο όταν οι δύο εκφράσεις στα αριστερά και στα δεξιά του λογικού τελεστή επιστρέψουν true. Άρα για να συμβεί αυτό, η τιμή της μεταβλητής myvalue θα πρέπει να είναι μεγαλύτερη του 9 και μικρότερη του 21. Μόνο όταν η τιμή της μεταβλητής βρίσκεται μέσα στο εύρος τιμών 10 έως 20 θα επιστρέψει true. Όταν ο προγραμματιστής όμως επιθυμεί να επιστραφεί η τιμή true στην περίπτωση που τουλάχιστον μία από τις δύο συνθήκες είναι true τότε θα πρέπει να χρησιμοποιήσει το λογικό OR. Η έκφραση αυτή θα επιστρέψει true όταν μία ή και οι δύο από τις εκφράσεις που βρίσκονται αριστερά και δεξιά του λογικού τελεστή επιστρέψουν true. Για παράδειγμα: myvalue < 10 myvalue > 20 Τέλος υπάρχει και ο λογικός τελεστής NOT (!). Ο τελεστής αυτός αντιστρέφει την τιμή μίας έκφρασης boolean. Δηλαδή στο επόμενο παράδειγμα:!myvalue θα επιστρέψει true μόνο όταν η μεταβλητή myvalue είναι false. Στην περίπτωση που η μεταβλητή είναι true τότε η έκφραση θα επιστρέψει false Σειρά προτεραιότητας των τελεστών Όταν οι πράξεις γίνονται πιο πολύπλοκες τότε ακολουθείται μία σειρά προτεραιότητας για τις πράξεις. Πιο αναλυτικά, πρώτα πραγματοποιούνται οι πράξεις οι οποίες βρίσκονται μέσα στις παρενθέσεις ή αγκύλες «[], ()». Στην συνέχεια πραγματοποιούνται οι πράξεις με τους τελεστές μοναδιαίας αύξησης ++ και μείωσης --. Αμέσως μετά, την προτεραιότητα έχουν οι πράξεις του πολλαπλασιασμού, τις διαίρεσης και του υπολοίπου ( *, /, %) ενώ μετά σειρά έχουν οι προσθέσεις και οι αφαιρέσεις (+, -). Αφού τελειώσουν οι αριθμητικές πράξεις πραγματοποιούνται οι συγκριτικές εντολές και στην συνέχεια οι λογικές. Τελευταίοι σε προτεραιότητα είναι οι τελεστές εκχώρησης δηλαδή το «=» καθώς και οι σύνθετοι (+=, -=, *=, /=). 32

34 1.3.9 Εντολές ελέγχου Υπάρχουν δύο ειδών εντολών διαθέσιμες στο arduino C που ελέγχουν την ροή του προγράμματος. Οι εντολές υπό συνθήκη (conditional statement) οι οποίες παίρνουν μία απόφαση ανάλογα με το εάν ή όχι μία συνθήκη επιστρέφει true και οι επαναληπτικές καταστάσεις (iterative statement) οι οποίες επαναλαμβάνουν ένα block εντολών αρκετές φορές έως ότου μία συνθήκη επιστρέψει false. Στις καταστάσεις υπό συνθήκη περιλαμβάνονται η if else και η switch εντολές ελέγχου, οι οποίες επιτρέπουν την εκτέλεση ορισμένων ενεργειών σύμφωνα με την κατάσταση της συνθήκης. Στις επαναλαμβανόμενες καταστάσεις περιλαμβάνονται η for και η while, οι οποίες συχνά αποκαλούνται και loops (βρόχοι) επειδή όπως και η συνάρτηση loop() επαναλαμβάνουν ότι βρίσκεται μέσα στο βρόχο έως ότου να επιστρέψει false η υπεύθυνη συνθήκη Εντολή if else Η εντολή if είναι η απλούστερη μορφή ελέγχου και από τις σημαντικότερες εντολές του arduino για την λήψη αποφάσεων. Η βασική σύνταξη είναι: if(συνθήκη){ εντολές Η λέξη if ακολουθείται από ένα ζευγάρι παρενθέσεων (), και μέσα σε αυτές βρίσκεται η συνθήκη. Για παράδειγμα εάν το πρόγραμμα πρέπει να τρέξει μία εντολή όταν η μεταβλητή myvalue ισούται με το 5, η εντολή θα είναι: if (myvalue == 5) Στην περίπτωση που η συνθήκη επιστρέψει true τότε θα εκτελεστεί η άμεσος επόμενη εντολή ή το block που ακολουθεί μέσα στις αγκύλες {. Μία κοινή χρήση της συνθήκης if είναι ο έλεγχος μίας ψηφιακής θύρας του arduino και η εκτέλεση μίας εντολής σύμφωνα με την συνθήκη που βρίσκεται. Όταν όμως η συνθήκη if επιστρέψει false τότε η εντολή ή το block που ακολουθεί θα παρακαμφθούν. Στην περίπτωση αυτή ίσως ο προγραμματιστής επιθυμεί να εκτελέσει μία άλλη εντολή, τότε μπορεί να χρησιμοποιηθεί προαιρετικά η εντολή else. Παρακάτω φαίνεται ο τρόπος σύνταξης της if μαζί με την else. If(συνθήκη){ εντολή else { 33

35 εντολή Έτσι στην περίπτωση που η συνθήκη της if είναι μη αληθής τότε θα εκτελεστεί η έκφραση ή το block που βρίσκεται ακριβώς μετά την else. Αντίστοιχα όταν η συνθήκη της if είναι αληθής τότε η εντολή else αγνοείτε Εντολή switch Στη περίπτωση που χρησιμοποιηθούν πολλές συνθήκες if με σκοπό να καλυφθεί ένα εύρος τιμών ελέγχου μίας μεταβλητής, τότε το πρόγραμμα γίνεται πολύπλοκο. Η εντολή switch μπορεί να απλοποιήσει αλλά και να επιταχύνει την διαδικασία εκτέλεσης των εντολών. Η σύνταξη της είναι: switch(μεταβλητή){ case «περίπτωση τιμής μεταβλητής»: εντολή 1; case «περίπτωση τιμής μεταβλητής 2»: εντολή 2; case «περίπτωση τιμής μεταβλητής 3»: εντολή 3; default : εντολή χ; Μετά την λέξη switch αναφέρεται το όνομα της μεταβλητής που θα ελεγχθεί μέσα στις παρένθεσης (). Στην συνέχεια μέσα στο block καταγράφονται οι περιπτώσεις (cases) της μεταβλητής, έτσι όταν η τιμή της μεταβλητής αντιστοιχήσει με μία περίπτωση τότε εκτελείται η αντίστοιχη εντολή. Όταν όμως η μεταβλητή δεν αντιστοιχίσει σε κάποια περίπτωση, τότε εκτελείται η default εντολή. Η default μπορεί να παραληφθεί. Μετά το τέλος των εντολών κάθε περίπτωσης μπορεί να προστεθεί η εντολή break; switch(μεταβλητή){ 34

36 case «περίπτωση τιμής μεταβλητής»: εντολή 1; break; Η συγκεκριμένη εντολή προκαλεί άμεση έξοδο από την switch. Έτσι αν μετά την εκτέλεση μίας περίπτωσης δεν υπάρχει λόγος να συνεχίσει να συγκρίνει την μεταβλητή με άλλες περιπτώσεις, τότε χρησιμοποιώντας την εντoλή break; μπορεί το πρόγραμμα να διαφύγει από το block της switch Βρόχοι For O βρόχος for επιτρέπει στο arduino να επαναλάβει εκτελέσιμες γραμμές κώδικα που βρίσκονται μέσα σε block για συγκεκριμένο αριθμό. Αυτό που κάνει την εντολή for μοναδική είναι ότι βασίζεται σε έναν μετρητή ο οποίος αυξάνεται κάθε φορά που ο βρόχος επαναλαμβάνεται. Ο μετρητής έχει την δυνατότητα να χρησιμοποιηθεί και μέσα στον βρόχο όπως μία τοπική μεταβλητή. Η βασική σύνταξη του βρόχου for είναι: for( ορισμός μεταβλητής ; έλεγχος μεταβλητής ; αύξηση μεταβλητής) {εντολές Η αρχή του βρόχου αποτελείται από τρία μέρη, τον ορισμό μίας μεταβλητής, την συνθήκη που θα ελέγξει τη μεταβλητή και τον τρόπο με τον οποίο θα αυξάνεται η μεταβλητή. Στο πρώτο μέρος ορίζουμε ή αρχικοποιούμε την μεταβλητή, η εντολή αυτή εκτελείται μόνο την πρώτη φορά. Στο δεύτερο μέρος έχουμε μία λογική έκφραση η οποία επιστρέφει μία τιμή boolean. Αν ο έλεγχος επιστρέψει true τότε συνεχίζεται η εκτέλεση του βρόχου, διαφορετικά σταματάει. Στο τρίτο μέρος αυξάνει την τιμή της μεταβλητής κάθε φορά που ολοκληρώνεται η εκτέλεση των εντολών του βρόχου. Ένα παράδειγμα του βρόχου for είναι: for(int i = 0; i <5; i++){ Στο πρώτο μέρος ορίζουμε μία καινούρια integer μεταβλητή και της εκχωρούμε την τιμή 0 (int i = 0;) Στην συνέχεια ελέγχουμε αν η μεταβλητή «i» είναι μικρότερη από το 5 για να συνεχιστεί η εκτέλεση του βρόχου (i < 5;) 35

37 Ενώ στο τρίτο μέρος αυξάνουμε την τιμή της μεταβλητής κατά μία μονάδα, κάθε φορά που ο βρόχος επαναλαμβάνεται (i++) Έτσι το εσωτερικό που βρόχου θα εκτελεστεί 5 φορές εάν δεν υπάρξει κάποια προσαύξηση ή μείωση της μεταβλητής «i» μέσα στο block While Ο βρόχος while χρησιμοποιείται για να επαναλάβει ένα block για όσο χρόνο μία συγκεκριμένη συνθήκη είναι true. Ακολουθεί η σύνταξη του βρόχου while: while(συνθήκη) { εντολές Το προηγούμενο παράδειγμα θα μπορούσε να ξαναγραφεί χρησιμοποιώντας τη white: int i = 0; while( i < 5 ){... i++; Στην πρώτη γραμμή ορίζεται η integer μεταβλητή i = 0. Στην επόμενη γραμμή δημιουργείται ο βρόχος while και συγκρίνει αν η μεταβλητή είναι μικρότερη του 5. Στην περίπτωση που η συνθήκη επιστρέψει true θα εκτελεστή ο κώδικας μέσα στο block, ενώ στην τελευταία γραμμή του block θα αυξηθεί η τιμή της μεταβλητής κατά μία μονάδα. Τέλος θα επιστρέψει στην αρχή του βρόχου while, θα επαναλάβει τον έλεγχο της συνθήκης και μέχρι αυτή να επιστρέψει false θα επαναλαμβάνει την εκτέλεση των εντολών μέσα στο block Do Οι βρόχοι for και while αξιολογούν μία συνθήκη πριν εκτελέσουν τις εντολές που βρίσκονται μέσα στο block. Στην περίπτωση όμως που δεν ικανοποιείται η συνθήκη τότε το block δε θα τρέξει ποτέ. Μερικές φορές είναι χρήσιμο ο κώδικας που βρίσκεται μέσα στο block να εκτελείται τουλάχιστον μία φορά. Αυτό επιτυγχάνεται χρησιμοποιώντας το βρόχο do, ο οποίος ενεργεί σαν μία while με την 36

38 διαφορά ότι πρώτα εκτελεί τον κώδικα που βρίσκεται μέσα στο block και στην συνέχεια ελέγχει αν η συνθήκη επιστρέφει true με σκοπό να τον επαναλάβει. Η βασική της σύνταξη είναι: do { εντολές white( συνθήκη); Continue Η εντολή continue; χρησιμοποιείται μέσα σε βρόχους με σκοπό την έναρξη της επόμενης επανάληψης του. Δηλαδή όταν το πρόγραμμα διαβάσει την εντολή continue; θα σταματήσει την εκτέλεση των εντολών που ακολουθούν μέσα στο βρόχο και θα επιστρέψει στην αρχή. Εκεί θα ελέγξει αν η συνθήκη συνεχίσει να επιστρέφει true ώστε να επαναλάβει τον κώδικα μέσα στο βρόχο ακόμη μία φορά Συναρτήσεις Βασικές συνάρτησης setup & loop Τα προγράμματα που αναπτύσσονται για να εφαρμοστούν στο arduino εκτός της βασικής βιβλιοθήκης arduino απαιτούν και δύο συναρτήσεις, την setup() και την loop(). Κάθε sketch πρέπει να περιλαμβάνει αυτές τις δύο συναρτήσεις ώστε να μπορέσει να τρέξει η εφαρμογή, έστω και αν είναι άδειες. To επόμενο παράδειγμα είναι τεχνικά ένα ολοκληρωμένο sketch που τρέχει κανονικά, αν και δεν κάνει απολύτως καμία ενέργεια. void setup(){ void loop(){ H setup() καλείται μόνο μία φορά κατά την έναρξη του sketch και χρησιμοποιείται με σκοπό να πραγματοποιήσει διάφορες εντολές, όπως είναι η έναρξη μίας σειριακής επικοινωνίας με μία σειριακή συσκευή, η εκχώρηση αρχικών τιμών σε αισθητήρες ή να εκτελέσει ορισμένες εργασίας που απαιτούνται για την ομαλή λειτουργία του προγράμματος. Η loop() δίνει την δυνατότητα στο sketch να τρέχει επαναλαμβανόμενα έως ότου να σταματήσει η παροχή του ρεύματος στο arduino. Η έναρξη της σηματοδοτείται με το που εκτελέσει όλες τις εντολές τις η setup(). Με το που θα 37

39 εκτελεστεί η τελευταία εντολή της συνάρτησης loop(), τότε το πρόγραμμα θα ξεκινήσει και πάλι να εκτελεί τις εντολές της loop() από την πρώτη γραμμή του block Δημιουργία νέων συναρτήσεων Σε ένα sketch, ο προγραμματιστής εκτός από τις ήδη υπάρχουσες συναρτήσεις που βρίσκονται στις βιβλιοθήκες, του δίνεται η δυνατότητα να χρησιμοποιήσει και δικές του. Αν στο πρόγραμμα επαναλαμβάνονται κάποιες γραμμές κώδικα, τότε ο προγραμματιστής θα μπορούσε να δημιουργήσει μία νέα συνάρτηση και να συμπεριλάβει μέσα σε αυτήν τον επαναλαμβανόμενο κώδικα. Έτσι κάθε φορά που απαιτούνται οι συγκεκριμένες γραμμές κώδικα, αντί να τις γράφει επανειλημμένα μπορεί απλά και εύκολα να καλεί την συνάρτηση που δημιούργησε. Για την δημιουργία μίας συνάρτησης απαιτείται να δηλωθούν ο τύπος της τιμής που θα επιστρέφει, το όνομα της συνάρτησης και το σύνολο των παραμέτρων που απαιτούνται για την εκτέλεση των εντολών μέσα στη συνάρτηση. Ο ορισμός μίας συνάρτησης τηρεί το ακόλουθο σχήμα: «τύπος επιστρεφόμενης τιμής» «όνομα συνάρτησης» («λίστα παραμέτρων») { «εντολές συνάρτησης» Η κάθε συνάρτηση που προστίθεται στο sketch πρέπει να δημιουργείται έξω από τις υπόλοιπες συναρτήσεις που υπάρχουν. Τις περισσότερες φορές δεν παίζει κάποιο ρόλο σε πιο ακριβώς σημείο θα τοποθετηθούν αλλά συνηθίζεται οι καινούριες συναρτήσεις να μπαίνουν αμέσως μετά το τέλος της συνάρτησης loop() Καλώντας τις συναρτήσεις Μία συνάρτηση καλείται όταν ο προγραμματιστής θέλει να εκτελέσει ένα σύνολο ομαδοποιημένων εντολών που βρίσκονται μέσα σε αυτήν. Η συνάρτηση καλείται με την ακόλουθη μορφή: «όνομα συνάρτησης» («παράμετροι»); Όταν καλείται η συνάρτηση τότε το πρόγραμμα πηδάει από το σημείο που καλείται στο σημείο που δημιουργήθηκε για να εκτελέσει της εντολές που βρίσκονται μέσα σε αυτήν. Μόλις το πρόγραμμα τελειώσει όλες τις εντολές που βρίσκονται μέσα στην συνάρτηση, τότε θα συνεχίσει από το σημείο που συνάντησε το κάλεσμα της συνάρτηση Επιστροφές τιμών συνάρτησης Σε αρκετές περιπτώσεις ο σκοπός της συνάρτησης είναι να εκτελέσει διάφορες πράξεις και να επιστρέψει ένα αποτέλεσμα σε μία κατάλληλη μορφή ώστε το πρόγραμμα να την χρησιμοποιήσει κάπου αλλού. Η ενέργεια του καλέσματος μίας συνάρτησης και η επιστροφή μίας τιμής από την ίδια 38

40 συνάρτηση είναι γνωστή ως function return. Στην δήλωση της συνάρτησης το πρώτο πράγμα που χρειάζεται να δηλωθεί είναι ο τύπος της τιμής που θα επιστραφεί. Επίσης μέσα στην συνάρτηση θα χρησιμοποιηθεί η εντολή return «όνομα μεταβλητής»; η οποία επιστρέφει την τιμή της μεταβλητής στο σημείο που καλέστηκε η συνάρτηση. Ο τύπος της συνάρτησης θα πρέπει να είναι ο ίδιος με τον τύπο της μεταβλητής που επιστρέφεται. Στην περίπτωση που η συνάρτηση δε επιστρέφει καμία τιμή τότε η συνάρτηση δηλώνεται ως void Παράμετροι συνάρτησης Οι παράμετροι συνάρτησης είναι ένα είδος σαν τις μεταβλητές αλλά δηλώνονται μέσα στις παρενθέσεις όπου ορίζεται η συνάρτηση και χωρίζονται με κόμμα. Αν απαιτούνται κάποιες μεταβλητές για τις πράξεις μέσα στην συνάρτηση, των οποίων οι εμβέλεια τους δεν επιτρέπει την χρήση τους, μπορούν να δηλωθούν ως παράμετροι συνάρτησης. Έτσι κατά το κάλεσμα της συνάρτησης μέσα στις παρενθέσεις μπορούν να εισαχθούν τα απαιτούμενα στοιχεία και στην συνέχεια με το που διαβάσει το πρόγραμμα το όρισμα της συνάρτησης, αντιστοιχεί τα στοιχεία με νέες μεταβλητές τοπικής εμβέλειας. Ένα παράδειγμα δημιουργίας και κάλεσμα συνάρτησης: void loop(){ int a = 5; int b = 4; int c; c = add(a, b); int add(int num1, int num2){ return num1+num2; Στην πρώτη σειρά εκτελείται επανειλημμένα η συνάρτηση loop. Μέσα στο block της loop, ορίζονται τρεις τοπικές μεταβλητές a b c και εκχωρούνται οι τιμές 5, 4 στις δύο πρώτες. Αφού οριστούν οι μεταβλητές μετά καλείται η συνάρτηση add με παραμέτρους τις μεταβλητές a, b. Έτσι η τιμή που θα επιστραφεί από την συνάρτηση add() θα εκχωρηθεί στην μεταβλητή c. Όταν το πρόγραμμα συναντήσει το κάλεσμα της συνάρτησης αμέσως πηγαίνει στο σημείο όπου ορίζεται. Η συνάρτηση που καλείται ορίζεται ως int επειδή θα επιστρέψει έναν ακέραιο αριθμό. Το όνομα της είναι add και μέσα στην παρένθεση θα δημιουργήσει δύο νέες μεταβλητές τοπικής εμβέλειας. Στις μεταβλητές αυτές (num1 και num2) θα καταχωρηθούν οι τιμές που αντιστοιχούν στις παραμέτρους μου βρίσκονται στο κάλεσμα της συνάρτησης. Στην τελευταία σειρά επιστρέφεται η τιμή που αντιστοιχεί 39

41 στο άθροισμα των δύο τοπικών μεταβλητών. Έτσι η συνάρτηση add επιστρέφει μία τιμή που στην συνέχεια εκχωρείται στηνμ μεταβλητή c Ψηφιακές συναρτήσεις pinmode() Πριν χρησιμοποιηθεί μία ψηφιακή θύρα (digital pin) θα πρέπει πρώτα το arduino να ενημερωθεί με ποιον τρόπο, δηλαδή εάν η θύρα θα είναι εισόδου ή εξόδου. Για να γίνει αυτό καλείται η συνάρτηση pinmode() η οποία ενημερώνει στον μικροελεγκτή τον αριθμό της θύρας που να χρησιμοποιηθεί καθώς και την κατάσταση της (εισόδου/εξόδου). Η σύνταξη είναι αρκετά απλή: pinmode(«αριθμός θύρας», «κατάσταση»); Μέσα στις παρενθέσεις υπάρχουν δύο παράμετροι οι οποίες χωρίζονται με κόμμα. Η πρώτη αντιστοιχεί στον αριθμό της θύρας που ο προγραμματιστής επιθυμεί να χρησιμοποιήσει. Η τιμή αυτή μπορεί να κυμαίνεται από το 0 έως το 13 ή από το Α0 μέχρι το Α5 στην περίπτωση που επιθυμεί να χρησιμοποιήσει της αναλογικές εισόδους ως ψηφιακές εισόδου/εξόδου. Η δεύτερη τιμή ορίζει την κατάσταση που θα εργάζεται στο κύκλωμα η συγκεκριμένη θύρα. Αυτό επιτυγχάνεται χρησιμοποιώντας τις δύο προκαθορισμένες από το arduino σταθερές, την INPUT και την OUTPUT. Όταν η θύρα ορίζεται ως INPUT, τότε δέχεται εισερχόμενα σήματα και καταλαβαίνει μόνο δύο καταστάσεις, την HIGH και την LOW. Αντίστοιχα όταν η θύρα ορίζεται ως OUTPUT τότε έχει την δυνατότητα να παρέχει στην έξοδο έως και 40 milli amps σε ένα άλλο κύκλωμα, ισχύς που είναι αρκετή για να ανάψει ένα LED digitalwrite() Αν μία θύρα έχει οριστεί ως OUTPUT τότε η ρύθμιση της εξόδου της σε on(+5volt) ή off (0Volt) κατάσταση πραγματοποιείται χρησιμοποιώντας την συνάρτηση digitalwrite(). Η σύνταξη της είναι: digitalwrite(«αριθμός θύρας», «κατάσταση θύρας»); Εδώ όπως και στην pinmode() υπάρχουν δύο παράμετροι που απαιτούνται για την συνάρτηση. Η πρώτη δηλώνει τον αριθμό της θύρας που παίρνει τιμές από 0 έως 13 ή από Α0 έως Α5. Η δεύτερη τιμή αντιστοιχεί στις δύο καταστάσεις που μπορεί να ρυθμιστεί η έξοδος χρησιμοποιώντας δύο προκαθορισμένες μεταβλητές του arduino, την HIGH και την LOW. Η κατάσταση HIGH παρέχει στην έξοδο την +5VDC τάση της πλακέτας ενώ η LOW συνδέει το κύκλωμα που βρίσκεται στην έξοδο της θύρας με την γείωση (0 Volt) digitalread() Όταν μία ψηφιακή θύρα ρυθμιστεί έως INPUT (εισόδου) τότε για να διαβαστεί η είσοδος της χρησιμοποιείται η συνάρτηση digitalread(). Η σύνταξη της είναι: digitalread(«αριθμός θύρας»); 40

42 Η συγκεκριμένη συνάρτηση χρησιμοποιεί μόνο μία παράμετρο που αντιστοιχεί στον αριθμό της θύρας εισόδου. H συνάρτηση σύμφωνα με την είσοδο της, επιστρέφει μία τιμή HIGH ή LOW. Η τιμή αυτή μπορεί να αποθηκευτεί ή να συγκριθεί με μία άλλη μεταβλητή Αναλογικές συναρτήσεις Οι αναλογικές συναρτήσεις είναι λίγο διαφορετικές από τις ψηφιακές. Σε αντίθεση από τις ψηφιακές, δε χρειάζεται το arduino να ενημερωθεί για τον αριθμό της αναλογικής θύρας που πρόκειται να χρησιμοποιηθεί όπως συμβαίνει με την συνάρτηση pinmode(). Επιπλέον αντί για τιμές HIGH και LOW χρησιμοποιούν ακέραιους αριθμούς εύρους από το 0 έως το 1023 για τις τιμές εισόδου και από 0 έως 255 για τις τιμές εξόδου analogread() H analogread() λειτουργεί παρόμοια με την digitalread. H σύνταξη της συνάρτησης είναι: analogread(«αριθμός θύρας»); Όταν καλείται η παραπάνω συνάρτηση, απαιτείται να προσδιοριστεί ο αριθμός της αναλογικής θύρας από όπου αναμένεται να διαβαστούν τα δεδομένα. H παράμετρος της analogread παίρνει τιμές από το Α0 έως το Α5. Το γράμμα Α μπαίνει μπροστά από τον αριθμό της θύρας με σκοπό να υπενθυμίσει τον προγραμματιστή ότι πρόκειται για Analog θύρα. Αφού η συνάρτηση διαβάσει το εισερχόμενο σήμα τότε επιστρέφει μία τιμή χωρητικότητας 10 bit που αντιπροσωπεύει έναν ακέραιο αριθμό εύρους από το 0 έως το Η τιμή που επιστρέφεται αντιστοιχεί στην στάθμη του αναλογικού σήματος εισόδου της θύρας analogwrite() Η συνάρτηση analogwrite() επιτρέπει την πρόσβαση στο pulse width modulation hardware του μικροελεγκτή στο arduino. Η βασική σύνταξη της συνάρτησης είναι: analogwrite(«αριθμός θύρας», «κατάσταση παλμού»); Χρησιμοποιώντας αυτή την συνάρτηση απαιτούνται δύο παράμετροι. Η πρώτη παράμετρος ορίζει τον ρυθμό της αναλογικής θύρας εξόδου. Για το arduino duemilanove/uno η πρώτη παράμετρος μπορεί να πάρει μόνο τις ακόλουθες τιμές 3, 5, 6, 9, 10 και 11 οι οποίες αντιστοιχούν σε θύρες που έχουν την ένδειξη PWD πάνω στην πλακέτα. Άλλες εκδόσεις arduino μπορεί να έχουν περισσότερες ή λιγότερες PWD θύρες. Η δεύτερη παράμετρος ορίζει την κατάσταση του παλμού η οποία εκφράζεται με έναν integer αριθμό εύρους από το 0 έως το 255 καταλαμβάνοντας χωρητικότητα 8 bit. Όταν η τιμή ισούται με το 0 τότε ο παλμός βρίσκεται στη κατάσταση off ή 0% ή 0 volt καθ' όλη την διάρκεια της περιόδου. Ανάλογα όταν η τιμή ισούται με το 255 τότε σε αυτήν την περίπτωση ο παλμός βρίσκεται στη κατάσταση on ή 100% ή 5 volt καθ όλη την διάρκεια της περιόδου.αν όμως η τιμή βρίσκεται στο μέσο μεταξύ των τιμών 0 και 255 τότε σε κάθε περίοδο ο παλμός θα βρίσκεται 41

43 στην κατάσταση off κατά την μίση διάρκεια της περιόδου και στην υπόλοιπη διάρκεια στην κατάσταση on analogreference() Χρησιμοποιώντας την συνάρτηση analogread(), το arduino είναι προετοιμασμένο να δεχτεί ένα εύρος τάσης από 0 έως +5 volt. Όμως όλο και περισσότεροι αισθητήρες χρησιμοποιούν χαμηλότερη τάση λειτουργίας. Έτσι όταν ένας σένσορας στέλνει μεγίστη τιμή μικρότερη των 5 volt τότε το arduino (που περιμένει μεγίστη τιμή 5 volt) θα μεταφράσει λανθασμένα την πληροφορία του αισθητήρα. O μικροελεγκτής της ATMEL έχει την δυνατότητα να αλλάξει την τάση αναφοράς καλώντας την συνάρτηση analogreference(). Η σύνταξη της συνάρτησης είναι: analogreference(«επιλογή αναφοράς»); Μέσα στις παρενθέσεις ορίζεται το σημείο αναφοράς που θα έχει ο μικροελεγκτής. Υπάρχουν τρεις επιλογές τιμής αναφοράς οι οποίες είναι: DEFAULT. Επιλέγοντας την προκαθορισμένη τιμή, το arduino χρησιμοποιεί σαν τάση αναφοράς τα 5 volt (ή τα 3.3 volt ανάλογα τον τύπο του arduino). External. Η πλακέτα του arduino διαθέτει ένα pin διπλά από το pin 13 που ονομάζεται AREF. Έτσι όταν καλείται η συνάρτηση analogreference(external); η θύρα AREF χρησιμοποιείται με σκοπό ο μικροελεγκτής να διαβάσει μία εξωτερική τάση αναφοράς διαφορετική από την προκαθορισμένη που είναι τα 5 volt. INTERNAL. Δηλώνοντας την παράμετρο INTERNAL, το arduino χρησιμοποιεί ως τάση αναφοράς τα 1,1 volt. Η συνάρτηση αυτή εκτελείται μόνο μία φορά στο sketch πριν την χρήση της συνάρτησης analogread(). Συνηθίζεται να καλείται μέσα στην συνάρτηση setup() map() Το εύρος της τιμής που επιστρέφει μία αναλογική θύρα είναι αρκετά μεγάλο (0 έως 1023). Το γεγονός αυτό πολλές φορές δυσκολεύει τον έλεγχο της τιμής εισόδου, έτσι απαιτείται η μείωση του εύρους της με σκοπό την διευκόλυνση της επεξεργασία της. Ένας άλλος λόγος μείωσης του εύρους είναι η εξοικονόμηση αποθηκευτικού χώρου που απαιτεί μία μεταβλητή από την μνήμη. H συνάρτηση map() επιστρέφει μία νέα τιμή σύμφωνα με το επιθυμητό εύρος. Η σύνταξη της είναι: map(«αρχική τιμή», «ελ. τιμή αρχικού εύρους», «μεγ. τιμή αρχικού εύρους», «ελ. τιμή νέου εύρους», «μεγ. τιμή νέου εύρους»); H map() όταν καλείται απαιτεί 5 παραμέτρους. Η πρώτη αντίστοιχη σε μία τιμή που ανήκει στο αρχικό επιτρεπτό εύρος τιμών, και επιθυμείτε να μετατραπεί σε μία νέα τιμή σύμφωνα με ένα νέο εύρος. Η δεύτερη και η τρίτη παράμετρος ορίζει την ελάχιστη και την μεγίστη επιτρεπτή τιμή του αρχικού εύρους. Η τέταρτη και η πέμπτη παράμετρος ορίζει την ελάχιστη και τη μέγιστη τιμή του νέου εύρους τιμών. H map() στην ουσία επιστρέφει μία νέα τιμή η οποία ανήκει σε ένα νέο εύρος τιμών και είναι αντίστοιχη της αρχικής τιμής (πρώτη παράμετρος) που ανήκει στο αρχικό εύρος τιμών. 42

44 constrain() Η συνάρτηση constrain() ελέγχει μία τιμή εάν βρίσκεται μέσα στα όρια ενός εύρους τιμών. Στην περίπτωση που η τιμή δεν ανήκει μέσα στα όρια των επιτρεπτών τιμών τότε επιστρέφεται η ελάχιστη ή η μεγίστη επιτρεπτή τιμή, ανάλογα εάν η τιμή είναι μικρότερη η μεγαλύτερη από τα επιθυμητά όρια. Όταν όμως η τιμή ανήκει μέσα στα όρια τότε επιστρέφεται χωρίς κάποια αλλαγή. Η σύνταξη της είναι: constrain(«τιμή», «ελαχ. επιτρεπτή τιμή», «μεγ. επιτρεπτή τιμή»); Η συνάρτηση χρησιμοποιεί τρεις παραμέτρους. Η πρώτη παράμετρος είναι η τιμή που θα ελεγχθεί. Η δεύτερη είναι το κατώτατο και η τρίτη το ανώτατο όριο της επιτρεπόμενης τιμής. Η συνάρτηση επιστρέφει πάντα μία τιμή που ανήκει μέσα στα όρια του ορίστηκαν στην συνάρτηση Προχωρημένες συναρτήσεις Μέχρι τώρα εκτός από τη δομή και την σύνταξη ενός arduino προγράμματος που είναι νβασισμένο στη γλώσσα προγραμματισμού C αναφέρθηκαν και οι βασικές συνάρτησης που χρησιμοποιούνται για το «διάβασμα» και το «γράψιμο» ψηφιακών και αναλογικών δεδομένων εισόδου και εξόδου. Εκτός όμως από αυτές τις συναρτήσεις, η βιβλιοθήκη του arduino περιλαμβάνει και άλλες εξίσου σημαντικές και χρήσιμες οι οποίες θα αναλυθούν στην συνέχεια Συναρτήσεις Timing Επειδή ο μικροελεγκτής του arduino μπορεί να «κινηθεί» πιο γρήγορα οπ όσο τουλάχιστον μπορεί να αντιληφθεί ο άνθρωπος, είναι αρκετές φορές σκόπιμο να επιβραδυνθούν οι ενέργειες που πραγματοποιεί. Αυτό επιτυγχάνεται καλώντας τις κατάλληλες συναρτήσεις delay() Η συνάρτηση delay δημιουργεί μία μικρή παύση στην ροής του προγράμματος. Η σύνταξη της είναι: delay(«χρόνος»); Η delay έχει μία παράμετρο η οποία αντιστοιχεί στον χρόνο που θα «παγώσει» την ροή του προγράμματος. Η μονάδα μέτρησης του χρόνου που χρησιμοποιείται είναι τα milliseconds. Έτσι όταν το πρόγραμμα καλέσει την εντολή delay(1000); τότε η ροή του θα σταματήσει για 1 δευτερόλεπτο, αφού 1 second ισούται με 1000 milliseconds. 43

45 delaymicroseconds() Στην περίπτωση που η delay() κάνει μεγάλης διάρκειας παύσεις τότε μπορεί να χρησιμοποιηθεί η συνάρτηση delaymicroseconds(). Όπως και στην delay() έτσι και η delaymicroseconds() συνάρτηση έχει ακριβώς την ίδια σύνταξη με την διαφορά ότι η παράμετρος του χρόνου αντιστοιχεί σε microseconds. Ένα second ισούται με 1,000,000 microseconds millis() Μέσα στον μικροελεγκτή της πλακέτας arduino υπάρχουν τρεις on-board hardware μετρητές (timers) οι οποίοι εκτελούνται πίσω από το κύριος πρόγραμμα με σκοπό να χειριστούν επαναλαμβανόμενες εργασίες όπως είναι η αύξηση της τιμής ενός χρονόμετρου. Η συνάρτηση millis() χρησιμοποιεί έναν από τους τρεις hardware timers που περιέχει τον χρόνο από το σημείο που ο microcontroller τέθηκε σε λειτουργία, είτε μετά από διακοπή ρεύματος, είτε μετά από reset. Η σύνταξη της δεν περιέχει κάποια παράμετρο, έτσι καλώντας απλά την συνάρτηση millis(); αυτή θα επιστρέψει μία τιμή σε milliseconds. Η τιμή αυτή μπορεί να εκχωρηθεί σε μία μεταβλητή και να χρησιμοποιηθεί όπως μία οποιαδήποτε άλλη μεταβλητή macros() Όπως η συνάρτηση millis() επιστρέφει τον χρόνο λειτουργίας του μικροελεγκτή σε milliseconds, έτσι και η συνάρτηση macros() κάνει ακριβώς το ίδιο πράγμα με την διαφορά ότι η μονάδα μέτρησης του χρόνου που επιστρέφετε είναι σε microseconds Συναρτήσεις random Πολλές φορές στο πρόγραμμα απαιτείται η δημιουργία τυχαίων αριθμών, όπως για παράδειγμα για την κατασκευή ενός ηλεκτρονικού ζαριού. Το arduino παρέχει την δυνατότητα χρησιμοποίησης ψευδο-τυχαίων (semi-random) αριθμών καλώντας τις απαιτούμενες συναρτήσεις random() Η συνάρτηση random() επιστρέφει μία ψευδο-τυχαία (semi-random) τιμή, σύμφωνα με τις παραμέτρους. Αν δεν υπάρχουν παράμετροι τότε θα επιστρέψει μία τιμή τύπου long εύρους από το - 2,147,483,648 έως το 2,147,483,647. Η κανονική σύνταξη της είναι: random(«ελάχιστη τιμη», «μεγίστη τιμη»); Η πρώτη παράμετρος ορίζει την ελάχιστη επιτρεπτή τιμή που μπορεί να επιστρέψει, ενώ αντίστοιχα η δεύτερη παράμετρος την μέγιστη. Στην περίπτωση που η ελάχιστη τιμή είναι το μηδέν τότε η πρώτη παράμετρος μπορεί να παραληφθεί. Έτσι το πρόγραμμα όταν δει μόνο μία παράμετρο, 44

46 καταλαβαίνει ότι η ελάχιστη επιτρεπτή τιμή είναι το μηδέν ενώ η μεγίστη ισούται με την παράμετρο της συνάρτησης randomseed() Όπως αναφέρθηκε προηγούμενος οι τιμές του επιστρέφει η random() δεν είναι ακριβώς τυχαίες. Το γεγονός αυτό οφείλεται στον σχεδιασμό του arduino που είναι ένα ντετερμινιστικό σύστημα. Έτσι όταν χρησιμοποιείται η συνάρτηση, η φόρμουλα που παράγει τους τυχαίους αριθμούς επαναλαμβάνεται κάθε φορά που εκτελείται. Με αποτέλεσμα οι τιμές να είναι προβλεπόμενες αφού στην πραγματικότητα δεν είναι τυχαίες. Για να αποφευχθεί η ανάκτηση των ίδιων ψευδο-τυχαίων αριθμών χρησιμοποιείται η συνάρτηση randomseed(), η σύνταξη της είναι: randomseed(«τιμη»); Τροφοδοτώντας την συνάρτηση με μία τιμή, μπορεί να κάνει την παραγωγή ψευδο-τυχαίων αριθμών αρκετά πιο απρόβλεπτη. Η τιμή μπορεί να αντιστοιχεί σε έναν integer ή ένα long αριθμό που ορίζεται μέσα στο πρόγραμμα. Για να δημιουργηθούν ακόμη πιο τυχαίοι αριθμοί, αντί να οριστεί η τιμή, μπορεί κάλλιστα να εισαχθεί από μία αναλογική θύρα (analog pin) χρησιμοποιώντας έναν αισθητήρα. Για παράδειγμα: randomseed(analogread(a0)); Hardware Διακοπές Οι λόγοι για να ζητήσουμε από το πρόγραμμα να διακόψει την ροή της εκτέλεσης του είναι πολλοί. Ένας λόγος είναι ότι η συνάρτηση loop() μπορεί να περιέχει πολλές γραμμές κώδικα με αποτέλεσμα να χρειάζεται αρκετό χρόνο για μία πλήρη επανάληψη των εντολών που περιέχει, έτσι είναι πιθανών όταν πατηθεί ένα button να μην γίνει αντιληπτή η ενέργεια. Ένα άλλο παράδειγμα είναι όταν χρησιμοποιείται ένας φωτοηλεκτρικός αισθητήρας ο οποίος αντιλαμβάνεται ένα αντικείμενο όταν πλησιάζει. Οι αποφάσεις του arduino για τις εντολές που πρέπει να δώσει στους κινητήρες θα πρέπει να ληφθούν άμεσα και με ακρίβεια. Η συνάρτηση attachinterrupt() ενεργοποιεί μία διακοπή της κανονικής ροής του κώδικα που εκτελεί το arduino με σκοπό να τρέξει μία συγκεκριμένη συνάρτηση. Η συνάρτηση καλείται όταν σκανδαλιστεί ο μικροελεγκτής σε ένα συγκεκριμένο pin. H σύνταξη της είναι: attachinterupt(«διακόπτης», «συνάρτηση», «κατάσταση»); Η πρώτη παράμετρος ορίζει τον διακόπτη που θα σκανδαλίσει τον microcontroller. Στο arduino UNO υπάρχει η δυνατότητα για την χρήση δύο διακοπτών, συγκεκριμένα ο αριθμός 0 δηλώνει ότι ο διακόπτης αντιστοιχεί στο pin 2 και ο αριθμός 1 αντιστοιχεί στο pin 3. Η δεύτερη παράμετρος δηλώνει την συνάρτηση που θα εκτελεστεί όταν καλεστεί η attachinterrupt(). Τέλος η τρίτη παράμετρος δηλώνει με πιο τρόπο θα σκανδαλίσει ο διακόπτης τον μικροελεγκτή. Υπάρχουν τέσσερις πιθανές καταστάσεις. 1. LOW: σκανδαλίζει όταν ο διακόπτης είναι σε κατάσταση LOW( 0 volt). 45

47 2. CHANGE: σκανδαλίζει όταν ο διακόπτης αλλάζει κατάσταση, είτε από LOW (0 volt) πηγαίνει σε HIGH (+5 volt) κατάσταση, είτε το αντίθετο. 3. RISING: σκανδαλίζει όταν ο διακόπτης από την κατάσταση LOW αλλάζει σε κατάσταση HIGH. 4. FALLING: σκανδαλίζει όταν ο διακόπτης από την κατάσταση HIGH πηγαίνει στη κατάσταση LOW. Κατά την διάρκεια εκτέλεσης του προγράμματος και ενώ είναι ενεργοποιημένη η συνάρτηση διακοπής, δίνεται η δυνατότητα αλλαγής της κατάστασης με την οποία θα σκανδαλίζεται η διακοπή. Καλώντας την συνάρτηση detachinterrupt() θα απενεργοποιηθεί η συνάρτηση διακοπής. Έτσι αφού διακοπεί, η attachinterupt() μπορεί να ξαναεκτελεστεί ορίζοντας τον επιθυμητό τρόπο σκανδαλισμού. H συνάρτηση detachinterrupt() έχει μία παράμετρο που ορίζει τον διακόπτη που θα απενεργοποιήσει, 0 για το διακόπτη στην θέση pin 2 και 1 για το διακόπτη στη θέση pin Σειριακή βιβλιοθήκη arduino Το arduino χρησιμοποιείται σε πολλές stand-alone εφαρμογές ελέγχου οι οποίες δεν έχουν μεγάλες απαιτήσεις για την επεξεργασία δεδομένων, έτσι οι δυνατότητες του μικροελεγκτή είναι αρκετές για τον πλήρη έλεγχο. Σε άλλες όμως επιπτώσεις απαιτείται μεγαλύτερη υπολογιστική δύναμη με αποτέλεσμα να χρειάζεται την βοήθεια ενός υπολογιστή. Για να επιτευχθεί η επικοινωνία του arduino με τον υπολογιστή γίνεται χρήση της σειριακής βιβλιοθήκης. Η συγκεκριμένη βιβλιοθήκη εισάγεται αυτόματα στο sketch μαζί με την κανονική βιβλιοθήκη του arduino χωρίς να απαιτείται κάποια περαιτέρω εντολή στο πρόγραμμα όπως συμβαίνει με τις υπόλοιπες βιβλιοθήκες. Όταν καλείται η Serial τότε μία instance της Serial βιβλιοθήκης δημιουργείται. Έτσι οπότε καλείται μία από τις μεθόδους που ανήκουν στην Serial, θα προηγείται πάντα το όνομα της instance «Serial» begin() Με την Serial βιβλιοθήκη να περιλαμβάνεται στο sketch και μία instance που ονομάζεται Serial να έχει ήδη δημιουργηθεί, το πρώτο πράγμα που χρειάζεται να πραγματοποιηθεί για να μπορούν να χρησιμοποιηθούν οι Serial μέθοδοι είναι να καθοριστεί η ταχύτητα μεταφοράς δεδομένων. Για να επιτευχθεί αυτό καλείται η μέθοδος begin(), η σύνταξη της είναι: Serial.begin(«ρυθμός δεδομένων»); H παράμετρος αντιστοιχεί στο μέτρο ταχύτητας μεταφοράς bit ανά δευτερόλεπτο ανάμεσα στο arduino και τον υπολογιστή και μπορεί να πάρει μία από τις ακόλουθες τιμές 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, ή Γενικά χρησιμοποιείται η τιμή 9600 που είναι αρκετά κοινή και γρήγορη ταχύτητα μεταξύ συσκευών σειριακής επικοινωνίας για την μεταφορά δεδομένων available() 46

48 Η μέθοδος available() δεν έχει κάποια παράμετρο αλλά επιστρέφει τον αριθμό των διαθέσιμων byte που περιμένουν στο σειριακό buffer. H hardware σειριακή θύρα του arduino περιέχει ένα buffer το οποίο μπορεί να αποθηκεύσει μέχρι και 128 byte πληροφορίες. Στην περίπτωση που καμία πληροφορία δεν περιέχεται στο buffer τότε η μέθοδος επιστρέφει την τιμή 0. Η σύνταξη της είναι: Serial.available() read() Από την στιγμή που το πρόγραμμα γνωρίζει ότι το buffer περιέχει πληροφορίες, χρησιμοποιείται η μέθοδος read() για να τις διαβάσει. Η σύνταξη της είναι: Serial.read() Η read() επιστρέφει το πρώτο διαθέσιμο byte του buffer, στην πραγματικότητα διαβάζει μία ASCII τιμή από το 0 έως το 127 που αντιστοιχεί σε έναν ASCII χαρακτήρα. Τα byte λαμβάνονται ένα ένα κάθε φορά μέσω σειριακού hardware print() Η μέθοδος print() χρησιμοποιείται για να εμφανίσει ASCII χαρακτήρες στην συσκευή που είναι σειριακά συνδεμένοι με το arduino. Η σύνταξη της είναι: Serial.print(«δεδομένα»); H παράμετρος που περιέχει τα δεδομένα μπορεί να δηλωθεί με διάφορους τρόπους println() Η μέθοδος println() όπως και η print() χρησιμοποιείται για την εμφάνιση χαρακτήρων. Έχουν την ίδια σύνταξη και η μονή τους διαφορά είναι ότι κάθε φορά που εμφανίζει τα δεδομένα η println() στη συνέχεια προσθέτει έναν ειδικό χαρακτήρα νέας σειράς «/n» Εισαγωγή βιβλιοθήκης Για να χρησιμοποιηθεί μία βιβλιοθήκη πρέπει να ενημερωθεί το arduino πια είναι αυτή η βιβλιοθήκη από τον προγραμματιστή. Υπάρχουν δύο τρόποι να γίνει αυτό. Ο πρώτος είναι να χρησιμοποιηθεί η εντολή #include πριν την εκτέλεση του κώδικα στην αρχή του sketch διευκρινίζοντας το όνομα της επιθυμητής βιβλιοθήκης που θα εισαχθεί στο πρόγραμμα. Η σύνταξη για την εισαγωγή μίας βιβλιοθήκης είναι: #include< name library.h> 47

49 To «name library» δηλώνει το όνομα του αρχείου της βιβλιοθήκης που επιθυμεί ο προγραμματιστής να χρησιμοποιήσει. Ο δεύτερος τρόπος για την εισαγωγή μίας βιβλιοθήκης είναι από την εργαλειοθήκη του arduino IDE. Κάνοντας κλικ την επιλογή sketch από το μενού και επιλέγοντας το Import Library. Ο προγραμματιστής έχει την δυνατότητα να επιλέξει μία από της βιβλιοθήκες που περιλαμβάνει το arduino IDE. Στη συνέχεια το περιβάλλον είναι αυτό που αναλαμβάνει από μόνο του να εισάγει την βιβλιοθήκη στο sketch Comments Τα comments (σχόλια) είναι περιοχές κειμένων που αγνοούνται από το πρόγραμμα αλλά περιέχουν χρήσιμες σημειώσεις που δίνουν κάποιες πληροφορίες για την λειτουργία του sketch με σκοπό να κάνει τον κώδικα πιο κατανοητό από τους ανθρώπους. Τα comments δεν καταλαμβάνουν χώρο μέσα στην μνήμη του μικροελεγκτή, έτσι μπορούν να χρησιμοποιηθούν άφοβα. Υπάρχουν δύο τρόποι σύνταξης comments στον κώδικα του arduino. Ο πρώτος είναι: /* «comments» */ Ότι βρίσκεται ανάμεσα στους ειδικούς χαρακτήρες /* και */ αγνοείται. Τα σχόλια μπορούν να αποτελούνται από όσες γραμμές επιθυμεί ο προγραμματιστής. Ο δεύτερος τρόπος χρησιμοποιεί δύο slash «//». Όταν το πρόγραμμα συναντήσει δύο slash καταλαβαίνει ότι το κείμενο που ακολουθεί στα δεξιά είναι comments και τα αγνοεί. Για παράδειγμα: delay(1000); // παύση προγράμματος για ένα sec Το πρόγραμμα θα εκτελέσει την συνάρτηση delay() κανονικά και δεν θα ασχοληθεί με το τι υπάρχει δεξιά των slash. 1.4 Εφαρμογές arduino Όπως αναφέρθηκε και στα προηγούμενα κεφάλαια το arduino είναι ένας ελεγκτής που έχει την ικανότητα να επικοινωνήσει μέσο σειριακής θύρας με άλλες συσκευές. Γεγονός που του δίνει τη δυνατότητα να αλληλεπιδράσει σε συνεργασία διαφόρων προγραμμάτων του υπολογιστή. Οι γλώσσες προγραμματισμού στα οποία έχουν αναπτυχθεί τα προγράμματα ποικίλουν σύμφωνα με τις απαιτήσεις του προγραμματιστή. Ο πιο διαδεδομένος τρόπος για την ανάπτυξη προγραμμάτων που έχουν την ικανότητα να αλληλεπιδρούν με το arduino είναι η γλώσσα προγραμματισμού Processing (περισσότερες πληροφορίες για την processing θα αναπτυχθούν στην επόμενη ενότητα). Μερικές εφαρμογές που αναπτύχθηκαν με τον ελεγκτή arduino αλλά με τη βοήθεια άλλον προγραμμάτων είναι. 48

50 1.4.1 Εφαρμογές του arduino στην μουσική Laser harp Ίσως το πιο γνωστό project με την χρήση του arduino είναι το laser harp (laser άρπα). Πιθανόν να παρουσιάστηκε για πρώτη φορά από τον Bernard Szajner το 1981, αλλά έγινε δημοφιλές από τον Jean Michel Jarre όπου και το χρησιμοποιούσε στις συναυλίες του. Το 2009 ο Stephen Hobley επηρεασμένος από μία συναυλία του Jarre αποφάσισε να κατασκευάσει τη δική του laser άρπα. Το laser harp είναι ένα μουσικό όργανο που αλληλεπιδράει με το φως. Στην πραγματικότητα αποτελείται από μία συσκευή η οποία παράγει μία σειρά κάθετων φωτεινών γραμμών (laser) που ξεκινούν από το δάπεδο. Ο μουσικός διακόπτοντας τις δέσμες φωτός παράγει μία ποικιλία μουσικών ήχων. Ρόλο για την παραγωγή του ήχου δε παίζει μόνο η διακοπή της δέσμης αλλά και το ύψος που θα τοποθετηθεί το εμπόδιο από το δάπεδο. Η άρπα δεν παράγει από μόνη της τους ήχους, απαιτείται να συνδεθεί με ένα νέας τεχνολογίας synthesizer ώστε να λαμβάνει από το arduino σειριακά τα MIDI (Musical Instrument Digital Interface) δεδομένα που παράγει. Εικόνα Επάνω: η συσκευή lazer harp. Κάτω: Παίξιμο του μουσικού οργάνου lazer harp 49

51 Soundmachine Το Σεπτέμβριο στην έκθεση μηχανοκίνητων IAA 2011 της Φρανκφούρτης, η σχεδιαστική ομάδα The Product σε ένα ειδικό τμήμα που αφορούσε νέες τεχνολογίες οι οποίες αλληλεπιδρούν με τον άνθρωπο παρουσίασε την soundmachine. Η εξωτερική εμφάνιση της κατασκευής όπως φαίνεται και στην εικόνα μοιάζει αρκετά με ένα κλασικό πικάπ, η λειτουργία της όμως είναι εντελώς διαφορική. Η βελόνα του πικάπ έχει μαντικατασταθεί με ένα led το οποίο φωτίζει την περιστρεφόμενη πλατφόρμα και έναν αισθητήρα φωτός που ανιχνεύει το αντανακλώμενο φως. Η κυκλική περιστρεφόμενη πλατφόρμα η οποία στην πραγματικότητα έχει αντικαταστήσει το βινύλιο αποτελείται από διάφορες χρωματιστές ακτίνες. Οι ακτίνες με τη σειρά τους ανάλογα από το χρώμα που έχουν, αντανακλούν το φως στον αισθητήρα ο οποίος μετατρέπει το φως σε ηλεκτρικά σήματα και τα στέλνει στο arduino. Ο μικροελεγκτής είναι υπεύθυνος για την μετατροπή των σημάτων στην κατάλληλη μορφή και στη συνέχεια για την αποστολή τους στον υπολογιστή. Από το σημείο αυτό και μετά την εργασία αναλαμβάνει μία ειδική εφαρμογή που έχει αναπτυχθεί σε processing όπου ανάλογα το φως που αντανακλάται από την πλατφόρμα, ο υπολογιστής παίζει τα ανάλογα μουσικά loops. 50

52 Εικόνα Επάνω: το εσωτερικό τμήμα της soundmachine. Κάτω: μουσικός που παίζει με την soundmachine Εφαρμογές του arduino στον μοντελισμό Μία άλλη διαδεδομένη εφαρμογή του arduino κυρίως ανάμεσα στους φίλους του μοντελισμού είναι η κατασκευή τηλεκατευθυνόμενου οχήματος. Για τη κατασκευή ενός τέτοιου οχήματος απαιτείται ένας μικροελεγκτής που θα είναι υπεύθυνος για τον έλεγχο του οχήματος (arduino), επίσης απαραίτητο είναι και ένα σύστημα για την ασύρματη επικοινωνία του arduino με την συσκευή που θα το τηλεκατευθύνει (όπως για παράδειγμα η shield x-bee). Ο δουλειά του μικροελεγκτή είναι να ελέγχει τους απαραίτητους κινητήρες και σερβοκινητήρες οι οποίοι τροφοδοτούνται από μία πηγή ρεύματος (συνήθως μπαταρίες) για την κατεύθυνση του σκάφους. Η τηλεκατεύθυνση μπορεί να προσαρμοστεί σε οποιαδήποτε μορφή σκάφους (αυτοκίνητο, πλοίο, αεροπλάνο). Εκτός όμως του βασικού εξοπλισμού, οι μοντελιστές έχουν την δυνατότητα να προσθέσουν περαιτέρω συσκευές ανάλογες των απαιτήσεων τους. Όπως για παράδειγμα είναι η shield GPS που ενημερώνει το arduino με τις συντεταγμένες του σημείου που βρίσκεται. Με τον τρόπο αυτό το όχημα γνωρίζοντας τον προορισμό του βάση των συντεταγμένων που του δόθηκαν, θα μπορεί να κινηθεί προς αυτόν χωρίς να χρειάζεται κάποιος να το κατευθύνει. Εικόνα UAV κατασκευή χρησιμοποιώντας μικροελεγκτή arduino Εφαρμογές του arduino για την διακόσμηση 51

53 Led cube Μία ενδιαφέρον και σχετικά απλή εφαρμογή είναι η κατασκευή κύβου με led. Το led cube σχηματίζεται από led τα οποία είναι διατεταγμένα σε θέσεις ίσης απόστασης μεταξύ τους. Όπως φαίνεται στην εικόνα o κύβος είναι 4x4x4, δηλαδή αποτελείται από τέσσερις στρώσεις, και η κάθε μία με την σειρά της αποτελείται από τέσσερις γραμμές και τέσσερις στήλες. Tα led αναβοσβήνουν σύμφωνα με το arduino είτε τυχαία είτε με τέτοιο τρόπο ώστε να σχηματίσουν ένα σχήμα. Με την χρήση περισσότερων led είναι δυνατή η αναπαράσταση τρισδιάστατων γραμμάτων ή ακόμη και εικόνων. Τέτοιου είδους εφαρμογές συνήθως χρησιμοποιούνται για διακοσμητικούς ή διαφημιστικούς σκοπούς. Εικόνα Διακοσμητικό led cube στο σκοτάδι Εφαρμογές του arduino στο σπίτι Το arduino επίσης μπορεί να χρησιμοποιηθεί για να διευκολύνει τον τρόπο διαβιώσεις των ανθρώπων μέσα στο σπίτι. Αυτό επιτυγχάνεται με διάφορες κατασκευές Αrduino security alarm 52

54 Ο ελεγκτής έχει την δυνατότητα να συνδυαστεί με μία ποικιλία αισθητηρίων με σκοπό να λειτουργεί ως ένας συναγερμός σπιτιού. Έτσι ανιχνεύοντας για παράδειγμα την κίνηση, ελέγχοντας συγκεκριμένες πόρτες και παράθυρα ακόμη και την θερμοκρασία σε περίπτωση πυρκαγιάς μπορεί να γίνει ένα αξιόπιστο σύστημα συναγερμού, ενώ με ένα κατάλληλο πρόγραμμα στον υπολογιστή έχει την δυνατότητα ακόμη και να ενημερώνει απομακρυσμένα τους υπεύθυνους του κτιρίου Εφαρμογές arduino σε παιχνίδια Όπως είναι φυσικό οι καινοτομίες του arduino δεν πέρασαν απαρατήρητες και από τους άνθρωπος που ασχολούνται με την κατασκευή πρωτότυπων παιχνιδιών. Η επικοινωνία του ελεγκτή με τον υπολογιστή έδωσε την δυνατότητα για την εύκολη κατασκευή παιχνιδιών που αλληλεπιδρούν με τον άνθρωπο Marble labyrinth ελεγχόμενο με χρήση the WiiFit Το marble labyrinth είναι ένα είδος λαβυρίνθου που περιέχει μία μεταλλική μπίλια. Σκοπός του παιχνιδιού είναι η μπίλια να διασχίσει μία συγκεκριμένη διαδρομή του λαβύρινθου για να φτάσει στον τερματισμό. Μέσα στους διαδρόμους υπάρχουν διάφορες τρύπες που θα πρέπει να τις προσπεράσει χωρίς να πέσει μέσα ώστε να μην χρειαστεί να ξαναρχίσει την διαδρομή από την αρχή. Για να μετακινηθεί η μπίλια, πρέπει ο παίχτης να αλλάζει συνεχώς το ύψος των πλευρών του λαβύρινθου από το δάπεδο, έτσι λόγο της βαρύτητας η μπίλια θα αναγκαστεί να κινηθεί προς την κατευθύνει της πιο χαμηλής πλευράς του λαβύρινθου. Εικόνα Ο λαβύρινθος marble μαζί με το wiifit της NITENDO Αντί ο χρήστης να χρειάζεται να σηκώσει ολόκληρη την πλατφόρμα του λαβύρινθου για να ελέγξει την κίνηση της μπίλιας, σταθεροποίησαν τον λαβύρινθο πάνω σε μία άλλη πλατφόρμα η οποία με την βοήθεια δύο σερβοκινητήρων μπορεί να αλλάξει να ύψος των πλευρών του λαβύρινθου και να αναγκάσει την μπίλια να κινηθεί. Ο παίχτης για να κατευθύνει την μπίλια πατάει πάνω σε ένα wiifit, μία επιδαπέδια πλατφόρμα της παιχνιδομηχανής wii της NITENDO. H πλατφόρμα wiifit λειτουργεί 53

55 όπως ένα χειριστήριο, δηλαδή ανάλογα με το σημείο που ο παίχτης θα ρίξει το βάρους του, αυτή θα ερμηνεύσει την κίνηση σε μία κατεύθυνση (μπροστά, δεξιά, πίσω, αριστερά). Το wiifit με την σειρά του στέλνει σειριακά τα δεδομένα στο arduino το οποίο ελέγχει τους σερβοκινητήρες και έτσι αλλάζει στάση ο λαβύρινθος. Η ιδέα για την κατασκευή του παιχνιδιού ανήκε στον Jestin Stoffel. Το wiifit μπορεί να αντικατασταθεί με διαφορετικά τύπου χειριστήρια χωρίς ιδιαίτερη δυσκολία Εφαρμογές του arduino στις τέχνες (ζωγραφική) Senseless drawing bot Το senseless drawing bot είναι μία κατασκευή η οποία ζωγραφίζει τυχαίες καμπύλες μστους τοίχους. Όπως φαίνεται και στην εικόνα η συσκευή αυτή είναι ένα μηχανοκίνητο όχημα το οποίο κινείται παράλληλα σε έναν τοίχο. Επάνω στο όχημα έχει τοποθετηθεί ένα διπλό εκκρεμές και στην άκρη του ένα σπρέι χρώματος. Κατά την κίνηση του οχήματος το εκκρεμές αρχίζει να ταλαντώνεται δεξιά και αριστερά ενώ παράλληλα ελέγχεται από έναν αισθητήρα για το εάν ξεπερνάει ένα κατώτατο και ένα ανώτατο όριο. Έτσι για παράδειγμα στην περίπτωση που η ταλάντωση του εκκρεμές είναι μικρότερη από την επιθυμητή τότε το όχημα αρχίζει και κινείτε ρυθμικά αριστερά και δεξιά ώστε να αυξήσει την ταλάντωση του εκκρεμές. Αντίθετα όταν η ταλάντωση είναι μεγαλύτερη από την επιτρεπτή τότε το όχημα σταματάει. Όταν το εκκρεμές έχει την σωστή ταλάντωση, τότε με ένα σύστημα αυτοματισμού το σπρέι αρχίζει να ζωγραφίζει χρωματιστές καμπύλες σε όλο το μήκος του τοίχου. Αντικαθιστώντας το σπρέι με διάφορα χρώματα μπορεί να δημιουργηθεί ένα πρωτότυπο έργο τέχνης. Η κατασκευή αυτή προσομοιώνει την δημιουργία ενός γκραφίτι σε τοίχο απελευθερώνοντας τον δυναμισμό του σχεδιασμού του γκράφιτι καταργώντας παράλληλα τον ανθρώπινο παράγοντα. 54

56 Εικόνα Το senseless drawing bot ζωγραφίζει στο τοίχο LumiBots Έναν αξιοθαύμαστο και διαφορετικό τρόπο σχεδίασης σκέφτηκε και κατασκεύασε ο δημιουργός του lumibots. Ο Mey Lean Kronemann πάνω σε μία φωσφορίζουσα επιφάνεια έβαλε να κινούνται 9 αυτόνομα robot τα οποία στο κάτω μέρος τους εκπέμπουν προς την φωσφορίζουσα επιφάνεια υπεριώδες φως. Έτσι καθώς τα ρομπότ κινούνται στο σκοτάδι, αφήνουν πίσω τους να φωσφορίζουν τα σημεία απ όπου πέρασαν. Το κάθε ένα lumibot (ρομπότ) σχεδιάστηκε με σκοπό τα υλικά κατασκευής του να έχουν όσον το δυνατόν φθηνότερο κοστολόγιο. Αποτελείτε από ένα ελεγκτή arduino, δύο αισθητήρες φωτός, δύο διακόπτες οι οποίοι ανιχνεύουν την επαφή του ρομπότ με τα τοιχώματα ή με ένα άλλο ρομπότ και τέλος ένα led που εκπέμπει UV φως και κάνει την επιφάνεια στην οποία κινείται να φωσφορίζει. Οι κινήσεις τους δεν είναι ούτε προγραμματισμένες ούτε προβλέψιμες, απλά βασίζονται σε δύο απλούς κανόνες. Ο πρώτος είναι να ακολουθούν μία φωσφορίζουσα γραμμή που υπάρχει στην επιφάνεια πάνω στην οποία κινούνται (όσο πι φωτεινή η γραμμή τόσο καλύτερα). Ο δεύτερος κανόνας αναγκάζει το όχημα να αλλάξει πορεία όταν αυτό έρχεται σε επαφή με ένα άλλο όχημα ή με τα τοιχώματα που υπάρχουν με σκοπό να περιορίσει την κίνηση του lumibot μέσα στην φωσφορίζουσα επιφάνεια. Όταν το lumibot δεν βρίσκει να ακολουθήσει φωσφορίζουσες γραμμές τότε αυτό από μόνο του κινείται κυκλικά σύμφωνα με μία ακτίνα που του έχει δοθεί. Όπως φαίνεται και στην παρακάτω εικόνα τα σχήματα που δημιουργούνται είναι εκπληκτικά. 55

57 Εικόνα Επάνω το lumibot. Κάτω το αποτέλεσμα που φαίνεται πάνω στην φωσφορίζων επιφάνεια Εφαρμογές του arduino στην ρομποτική Η μεγάλη ποικιλία των συμβατών αισθητήρων για arduino που διατίθενται στο εμπόριο κάνουν τον σχεδιασμό ρομποτικών συστημάτων πολύ ενδιαφέρον. Ενώ παράλληλα η ασύρματη επικοινωνία του arduino με έναν υπολογιστή μπορεί να αυξήσει τις δυνατότητες των ρομπότ σε πολύ μεγάλο βαθμό. 56

58 1.4.8 Mind-control Μία από τις πιο εντυπωσιακές ρομποτικές κατασκευές είναι και αυτή η οποία παρουσιάζεται στο βιβλίο «Make a Mind-Controlled Arduino Robot» της oreilly. Στο βιβλίο αυτό περιγράφεται πως κατασκευάζεται ένα ρομπότ το οποίο θα ανταποκρίνεται σύμφωνα με την επιθυμία του ανθρώπου χωρίς να χρειαστεί να πατήσει κάποιο πλήκτρο. Πιο συγκεκριμένα εξηγείται ο τρόπος για την κατασκευή ενός ρομπότ το οποίο θα παίζει ήχους, θα αναβοσβήνει led και θα αντιδρά στα σήματα που θα δέχεται από το mindwave. Το mindwave είναι μία συσκευή η οποία τοποθετείται στο κεφαλή και ανιχνεύει την ηλεκτρική δραστηριότητα του ανθρώπινου εγκεφάλου. Η συσκευή αυτή μπορεί να ερμηνεύσει συγκεκριμένες ενέργειες και να τις μετατρέψει σε εντολές οι οποίες στην συνέχεια μπορούν να μεταβιβαστούν σειριακά στο arduino. Ο τρόπος λειτουργίας του mindwave είναι ακριβώς ο ίδιος με αυτόν του εγκεφαλογραφήματος. Εικόνα Η συσκευή mindwave της neurosky η οποία ανιχνεύει την ηλεκτρική δραστηριότητα του ανθρώπινου εγκεφάλου. 57

59 Κεφάλαιο 2 : ΕΦΑΡΜΟΓΗ - ΣΧΕΔΙΑΣΜΟΣ - ΚΑΤΑΣΚΕΥΗ - ΛΕΙΤΟΥΡΓΙΑ 2.1 Η ιδέα της εφαρμογής - περιγραφή Αρχικά η βασική ιδέα για τον σχεδιασμό του πληκτρολογίου προήλθε από το project Arduino Monome clone[3]. Σε αυτό το project χρησιμοποιήθηκε ένα Arduino και κάποια RGB leds με ένα ποτενσιόμετρο ώστε να δημιουργηθεί ένα πολύχρωμο πληκτρολόγιο. Κόψαμε το πληκτρολόγιο ώστε να αποτελείται από δύο σειρές και τέσσερις στήλες. Αυτό είχε σαν αποτέλεσμα να μειωθεί σημαντικά το κόστος για την κατασκευή του πληκτρολογίου και κάνει τον κώδικα που πολύ πιο εύκολο. 2.2 Σχεδιασμός μηχανικού μέρους Υλικά κατασκευής-προδιαγραφές Πιο αναλυτικά για την κατασκευή του πληκτρολογίου χρειαστήκαμε: Έναν μικροελεγκτή Arduino Uno 1 TIP120 transistor 1 δίοδο 1N διόδους 1N n2222 transistors 1 πληκτρολόγιο Monome style (Sparkfun Electronics [4]) 1 Keypad PC board (Sparkfun Electronics [5]) 8 RGB LEDs (Sparkfun Electronics [6]) 1 ελεγκτή τάσης αντιστάσεις 100 ohm 2 αντιστάσεις 150 ohm 8 αντιστάσεις 1 Kohm 58

60 2.3 Η μηχανική κατασκευή Το πληκτρολόγιο στη πραγματικότητα αποτελείται από δυο ξεχωριστά κυκλώματα τα οποία αλληλεπικαλύπτονται. Το κύκλωμα εισόδου είναι μια μήτρα απλού πληκτρολογίου. Για να διαβάσει το πάτημα κάθε κουμπιού το Arduino κάνει μία είσοδο του πληκτρολογίου λογικό 1 (high) και ελέγχει την τάση από τις τέσσερις γραμμές στη σειρά. Οι δίοδοι τον κύκλωμα, αποκλείουν την ανατροφοδότηση μεταξύ γραμμών και στηλών. Τα RGB leds ανάβουν μέσω ενός εντελώς ξεχωριστού κυκλώματος. Η φωτεινότητα κάθε γραμμής των χρωματιστών leds, ελέγχεται από ένα ψηφιακό ποτενσιόμετρο. Το ψηφιακό ποτενσιόμετρο, λειτουργεί όπως ένα κανονικό ποτενσιόμετρο αλλά ελέγχεται ψηφιακά από τον Arduino.Εντωμεταξύ, κάθε στήλη από τα Leds ελέγχεται από ένα ξεχωριστό τρανζίστορ. Αλλάζοντας γρήγορα την αντίσταση και καθώς προχωράμε στις στήλες, κάθε led θα φαίνεται σαν να ελέγχεται ατομικά. Η πόρτα του κυκλώματος είναι αρκετά απλή. Δεδομένου ότι περιέχει ένα πηνίο, θα το αντιμετωπίσουμε σαν το πηνίο ενός βηματικού κινητήρα και θα χρησιμοποιήσουμε ένα TIP120 τρανζίστορ να παρέχει το ρεύμα. Όταν η ισχύς αφαιρείται από ένα πηνίο, η κατάρρευση του μαγνητικού πεδίου δημιουργεί ένα ρεύμα μέσα από το πηνίο. Για να προστατέψουμε τον TIP120 από υπερθέρμανση, θα προσθέσουμε μια δίοδο για να χειριστούμε το κύμα που δημιουργήθηκε από την field breakdown. Σημείωση: Η δίοδος είναι σε καλύτερη θέση παράλληλα με το πηνίο για να χειριστεί την παροδική αύξηση. Είναι σωστό, αλλά το κύκλωμα εδώ έχει λειτουργήσει τέλεια για αρκετούς μήνες, οπότε λειτουργεί με τον ένα ή τον άλλο τρόπο. Τα ίχνη για τα button φαινόταν λίγο δύσκολο να ταιριάξουν με τα ίδια τα button, γι 'αυτό παραγγείλαμε αυτήν την πλακέτα που παράγει η εταιρεία Sparkfun για τα πληκτρολόγια της. Η Sparkfun παρέχει τη διάταξη για αυτά τα πλήκτρα στην βιβλιοθήκη τους, ώστε να μπορείτε να φτιάξουμε το δικό μας PCB. Για περισσότερη αξιοπιστία, θα προτιμούσαμε πιθανώς να παράγεται στο εμπόριο. Η πλακέτα δεν έχει σχεδιαστεί για να κοπεί σε κομμάτια, αλλά μετά από μια επανεξέταση των ιχνών και των μονοπατιών, αποφασίσαμε ότι θα μπορούσαμε να ξεπεράσουμε αυτό το εμπόδιο με την αφαιρεση ενός ζευγαριού γραμμών από την πλακέτα. 59

61 Εικόνα Κοπή πλακέτας Χωρίζουμε προσεκτικά την πλακέτα κάτω από τη μέση ένα κοπίδι. Αν κοιτάξετε προσεκτικά, μπορείτε να δείτε πού μερικά από τα μονοπάτια έχουν πράγματι μειωθεί κατά το ήμισυ. (η για πιο επαγγελματική δουλειά με μια πριονοκορδέλα). Εικόνα 2.2 Κοπή πληκτρολογίου 60

62 Η κοπή των button είναι πολύ πιο εύκολη. Τα button έχουν προ-χαραγμένες γραμμές που χρειάζονται μόνο ένα γρήγορο και δυνατό κτύπημα από ένα κοφτερό μαχαίρι ή ψαλίδι για να τα χωρίσει. Το νέο μικρότερο PCB χρειάζεται μόνο μερικά τμήματα: μερικές 1N4148 διόδους και τα RGB LEDs. Η μεταξοτυπία στο ταμπλό δείχνει την κατεύθυνση και τη θέση των διόδων και των LED. Εικόνα 2.4 Σύνδεση καλωδίων σε πλακετα Μόλις κολλήσουμε τις 1N4148 διόδους, τις κόβουμε όσο πιο κοντά στην πλακέτα μπορούμε. Κόφτες με επίπεδη κεφαλή σαν αυτόν λειτουργούν εξαιρετικά καλά. Το πληκτρολόγιο θα καθίσει σε αυτήν την πλευρά της πλακέτας και θέλουμε να βεβαιωθούμε ότι μπορεί να καθίσει όσο το δυνατόν επίπεδα. 61

63 Εικόνα 2.5 Τοποθέτηση LEDs σε πλακέτα Τοποθετούμε τα LEDs στον προσανατολισμό που υποδεικνύεται από την μεταξοτυπία στο ταμπλό. Τα σπρώχνουμε προς τα κάτω στην πλακέτα μέχρι να εισαχθούν ακριβώς όπως αυτό. Αν τα αφήσουμε να κολλήσουν πολύ ψηλά, θα παρεμβαίνουν με τα κουμπιά του πληκτρολογίου να πιέζονται. 62

64 Εικόνα 2.6 Συγκόλληση LEDs Μόλις συγκολλήσουμε όλα τα LEDs στη θέση τους,τα καθαριζουμε ψαλιδίζοντας οτιδήποτε δε μας χρειάζεται. Στη συνέχεια, θα χρειαστεί να προσθέσουμε καλώδιο από το πληκτρολόγιο έως την πλακέτα διεπαφής που θα κατασκευάσουμε. Χρησιμοποιήσαμε κάποια παλιά καλωδίωση CAT-5. Δεδομένου ότι κάθε άξονας της πλακέτας έχει οκτώ ακίδες, είναι ιδανικό για την εφαρμογή. Εικόνα 2.7 RGB LED Κάθε RGB LED διαθέτει τρεις λυχνίες LED στο εσωτερικό της συσκευασίας. Μοιράζονται ένα κοινό τερματικό και διαθέτουν ένα μόνο ξεχωριστό αγωγό που βγαίνει έξω. Επειδή έχουν διαφορετικά χαρακτηριστικά - την φωτεινότητα, τις τρέχουσες και τις απαιτήσεις τάσης, περάσαμε αρκετό χρόνο δοκιμάζοντας διάφορους συνδυασμούς. 63

65 Εικόνα 2.8 Κύκλωμα φωτεινότητας LED Μετά από κάποια πειράματα, καταφέραμε να βρούμε το σωστό συνδυασμό για να δημιουργήσoυμε κάποια με αρκετά λευκό φως. Οι απαιτήσεις θα ποικίλλουν μεταξύ των κατασκευαστών, αλλά για τα Sparkfun LEDs διαπιστώσαμε ότι ένα ζεύγος αντιστάσεων 100 ohm και μία αντίσταση 150 ohm μπορούν να συνδυάσουν το κόκκινο, το πράσινο και το μπλε αρκετά καλά. 64

66 Εικόνα 2.9 Κύκλωμα φωτεινότητας LED Εικόνα 2.10 Κύκλωμα φωτεινότητας LED 65

67 Ο συνδυασμός χρωμάτων ήταν δύσκολο για τα μάτια μέχρι να βάλουμε το πληκτρολόγιο πάνω από το LED για να ελέγξουμε διπλά τα ευρήματά μας. Εικόνα 2.11 Σχέδιο κυκλώματος Το κύκλωμα έχει αφθονία στοιχείων, αλλά είναι αρκετά εύκολο να κατασκευαστεί. Θα χωρίσουμε τα πάντα από το τμήμα για να κρατήσουμε τα πράγματα εύκολα. Για τη σχεδίαση του κυκλώματος χρησιμοποιήσαμε το Eagle [7]. Εικόνα 2.12 Τύπωση κυκλώματος για AD

68 Εικόνα 2.13 Πλακέτα AD5206 Εικόνα 2.14 Ηλεκτρονικό σχέδιο AD

69 Εικόνα 2.15 Συγκόλληση AD5206 σε πλακέτα Το ψηφιακό ποτενσιόμετρο έχει έξι εξόδους. Κάθε μία από αυτές θα τροφοδοτήσει μια σειρά από κόκκινο, πράσινο ή μπλε LEDs, μέσω μίας φωτοαντίστασης. Η ψηφιακή καλωδίωση του ποτενσιόμετρου προέρχεται άμεσα από αυτόν τον τρόπο. Για περισσότερες πληροφορίες, μπορούμε να ανατρέξουμε εδώ [8]. Συνδέστε AD5206 ακίδες 3, 6, 10, 13, 16, 21 και 24 5v. Συνδέστε τις ακίδες 1, 4, 9, 12, 15, 18, 19, και 22 στο έδαφος. Συνδέστε την ακίδα 5 στην ακίδα 10 του Arduino Συνδέστε την ακίδα 7 στην ακίδα 11 του Arduino Συνδέστε την ακίδα 8 στην ακίδα 13 του Arduino Παίρνουμε τέσσερις αντιστάσεις 100 ohm και δύο 150 ohm αντιστάσεις. Τα τοποθετούμε στο breadboard στη σειρά με κάθε άκρη σε ένα ξεχωριστό δίαυλο. (Απέναντι από το κέντρο της πλακέτας είναι πιο εύκολο), Συνδέουμε τα έξι LED που οδηγούν από το πληκτρολόγιο στο ένα άκρο της κάθε αντίστασης τα κόκκινα παίρνουν τις 150 και τα μπλε και τα πράσινο τις 100. Εδώ είναι η σειρά σύνδεσης που χρησιμοποιούμε. RED3 σε μία αντίσταση 150 ohm στην ακίδα 14 Green3 σε μία αντίσταση 100 ohm στην ακίδα 11 BLUE3 σε μία αντίσταση 100 ohm στην ακίδα 2 RED4 σε μία αντίσταση 150 ohm στην ακίδα 23 68

70 GREEN4 σε μία αντίσταση 100 ohm στην ακίδα 20 BLUE4 σε μία αντίσταση 100 ohm στην ακίδα 17 Εικόνα 2.16 Συνδεσμολογία τρανζίστορ Για τη γείωση των LED, θα πρέπει να χρησιμοποιήσουμε τέσσερα 2N2222 τρανζίστορ. Το Arduino θα ενεργοποιήσει κάθε τρανζίστορ ξεχωριστά μέσω μίας αντίστασης 1Kohm. Ο συλλέκτης του κάθε τρανζίστορ συνδέεται σε μία γραμμή γείωσης από το πληκτρολόγιο. Ο εκπομπός του κάθε τρανζίστορ είναι συνδεδεμένος με το έδαφος. Τα τέσσερα τρανζίστορ επιλέγουν γραμμές για να συνδεθούν με τις ακίδες του Arduino 0, 1, 2, και 3. Έχουν σημειωθεί ως Αναλογικά, αλλά δεν έχει σημασία. 69

71 Εικόνα 2.17 Ηλεκτρονικό σχέδιο πληκτρολογίου αντιστάσεων Η μήτρα πληκτρολογίου διακόπτη συνδέεται σε τέσσερις στήλες και δύο σειρές. Κάθε μία από τις τέσσερις στήλες παίρνει μία αντίσταση. Χρησιμοποιήσαμε 1Kohm αντιστάσεις για τις R11, R12, R13, και R14. To ένα ποδαράκι της αντίστασης, συνδέεται με τις στήλες και το άλλο είναι γειωμένο. Οι ακίδες 2 και 3 του Arduino θα πρέπει να συνδεθούν με τις δύο μη γειωμένες γραμμές, οι οποίες σημειώνονται SWITCH3 και SWITCH4 στον πίνακα PC (5 και 6 στο schematic). Οι ακίδες 6, 7, 8, και 9 του Arduino, πρέπει να συνδεθούν με τις τέσσερις γραμμές που αναγράφουν SWT-GND1, SWT-GND2, SWT-GND3 και SWT-GND4 (1-4 για το schematic). 70

72 Εικόνα Ηλεκτρονικό σχέδιο σύνδεσης κλειδαριάς Η τελική έκδοση της πλακέτας παίρνει 12VDC είσοδο για να λειτουργεί η κλειδαριά της πόρτας. Προσθέσαμε έναν 7805 για να ρίξει τα 12V στα 5V για το Arduino.. Το Arduino έχει ένα ενσωματωμένο ρυθμιστή, αλλά οι 7805 είναι φθηνοί και βοηθούν στη μείωση του φορτίου στην κατασκευή του Arduino ως ρυθμιστή. Για την ανάπτυξη κώδικα, συνδέσαμε μόνο ένα LED με μία αντίσταση στη γραμμή εξόδου που θα ελέγχει την κλειδαριά της πόρτας. Εικόνα 2.18 Τελική συγκόλληση και συνδεσμολογία συστήματος 71

73 Με όλα καλωδιωμένα στην πρωτότυπη πλακέτα, ήρθε η ώρα να το δοκιμάσουμε. Εικόνα 2.19 Προγραμματιστικό περιβάλλον Arduino Ο προγραμματισμός του Arduino είναι εύκολος. Απλά μπορούμε να κατεβάσουμε το πρόγραμμα [9]. Αφού ελέγχτηκαν τα κουμπιά μας, θέλαμε να δοκιμάσουμε και τα LEDs. Επομένως Κατεβάσαμε την ρουτίνα RGB_light_fade [10] και ανεβάσαμε τη στο Arduino. Αυτό είναι το αγαπημένο μας demo γιατί δείχνει πραγματικά τις χρωματικές δυνατότητες ανάμειξης του ψηφιακού ποτενσιόμετρου. 72

74 Εικόνα 2.20 Σύστημα με demo κώδικα Αφού δοκιμάσαμε το Arduino μας, και είδαμε ότι δουλεύει, ήρθε η ώρα να δοκιμάσουμε και το πρωτότυπο μας. Εικόνα 2.20 Σύστημα έχοντας φορτώσει τον τελικό κώδικα Για την τελική κατασκευή, κόβουμε με ένα κοπίδι το κουτί ώστε να τοποθετήσουμε τα κουμπιά αλλά και ολόκληρο το σύστημα μας σωστά. 73

75 Εικόνα 2.21 Κοπή πλαισίου για τοποθέτηση πληκτρολογίου 74

76 Εικόνα Τελική κατασκευή 2.4 Σχεδιασμός του λογισμικού Για την ανάπτυξη του λογισμικού θα χρησιμοποιηθεί η γλώσσα προγραμματισμού Processing Τι είναι η Processing Η processing είναι μία γλώσσα προγραμματισμού ανοικτού κώδικα και παράλληλα ένα περιβάλλον προγραμματισμού για τα άτομα που θέλουν να δημιουργήσουν εικόνες (στάσιμες ή κινούμενες) και αλληλεπιδράσεις. Αρχικά αναπτύχθηκε για να χρησιμεύσει ως ένα sketchbook λογισμικού και να διδάξει βασικά στοιχεία του προγραμματισμού σε ένα οπτικό πλαίσιο. Όλα ξεκίνησαν το 2001 όταν δύο απόφοιτοι του πανεπιστημίου ΜΙΤ, Benjamin Fry και Casey Reas ξεκίνησαν την ανάπτυξη της γλώσσας Processing πάνω σε Java. Παρόλο που η γλώσσα αναπτύχθηκε στη Java, το συντακτικό της είναι πιο απλό, με αποτέλεσμα γρήγορα να εξελιχθεί σαν ένα εργαλείο για τη δημιουργία επαγγελματικών εφαρμογών. Σήμερα, υπάρχουν δεκάδες χιλιάδες φοιτητές, καλλιτέχνες, σχεδιαστές, ερευνητές και ερασιτέχνες που χρησιμοποιούν την processing για εκμάθηση, προτυποποίηση και παραγωγή προγραμμάτων. 75

77 Εικόνα Το περιβάλλον processing IDE Το σύστημα μας για την λειτουργία του, χρησιμοποιεί ένα απλό χρωματικό κώδικα. Αν εισαχθεί σωστά, οι ενδείξεις του πληκτρολογίου θα ανάψουν πράσινο και η κλειδαριά της πόρτας ανοίγει για 10 δευτερόλεπτα. Αν πατηθούν πάρα πολλά πλήκτρα, το πληκτρολόγιο κλειδώνει και ανάβει κόκκινο για 30 δευτερόλεπτα. Κατά τον κανονικό χρόνο αδράνειας, το πληκτρολόγιο προχώρα μέσα από κάθε πλήκτρο και τα leds ανάβουν μπλε μόνο για διασκέδαση Αλγόριθμος processing Αλγόριθμος κυρίου μέρους (processing) Ακολουθεί το κύριο μέρος του αλγορίθμου για το άνοιγμα της κλειδαριάς και την αποστολή των εντολών προς τον μικροελεγκτή: 76

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

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017) ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017) Περιγραφή της Άσκησης Ο σκοπός της πρώτης άσκησης είναι κυρίως η εξοικείωση με το περιβάλλον προγραμματισμού του Arduino, γι αυτό και δεν είναι ιδιαίτερα σύνθετη. Αρχικά, θα

Διαβάστε περισσότερα

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

Γνωριμία με το Arduino Γνωριμία με το Arduino Τι είναι το Arduino; Το arduino είναι ένας μικρός υπολογιστής σε μέγεθος παλάμης που περιλαμβάνει ένα μικροελεγκτή (για εκτέλεση εντολών) και ένα σύνολο εισόδων/εξόδων για επικοινωνία

Διαβάστε περισσότερα

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

Εφαρμογές Σειριακής Επικοινωνίας Εφαρμογές Σειριακής Επικοινωνίας Εισαγωγή Στο μάθημα αυτό θα μάθουμε πώς να χρησιμοποιούμε την βιβλιοθήκη serial για την επικοινωνία από την πλατφόρμα Arduino πίσω στον υπολογιστή μέσω της θύρας usb. Τι

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ Σκοπός της άσκησης Οι φοιτητές θα εξοικειωθούν με την πλακέτα του μικροελεγκτή και θα αναγνωρίσουν τα βασικά της στοιχεία. Επίσης θα εξοικειωθούν

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 Mηχανοτρονική Το Arduino είναι μια «ανοικτού κώδικα» πλατφόρμα «πρωτοτυποποιημένων» ηλεκτρονικών βασισμένη σε ευέλικτο και εύκολο στη χρήση

Διαβάστε περισσότερα

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

Ενσωµατωµένα Συστήµατα Ενσωµατωµένα Συστήµατα για εφαρµογές πραγµατικού χρόνου Μικροελεγκτής Arduino Ιωάννης Καλόµοιρος Αναπληρωτής Καθηγητής Τµήµα Μηχανικών Πληροφορικής Μάθηµα 7ο Τι είναι το Arduino... Ένα open-hardware σύστηµα

Διαβάστε περισσότερα

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

Προγραμματισμο ς σε Arduino Προγραμματισμο ς σε Arduino Arduino UNO & Innoesys Educational Shield www.devobox.com Ηλεκτρονικά Εξαρτήματα & Υλικά Κατασκευής Πρωτοτύπων Λέανδρου 79, 10443, Κολωνός +30 210 51 55 513, info@devobox.com

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ

ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΟΙΚΟΝOΜΟΥ ΧΑΡΗΣ (6424) ΦΩΚΟΣ ΝΙΚΟΛΑΟΣ(6592) ΚΑΜΒΥΣΗΣ ΝΙΚΟΛΑΟΣ(7178) 2013-2014 ΠΕΡΙΕΧΟΜΕΝΑ Σκοπός της εργασίας Ανάλυση Arduino Uno Δημιουργία πληροφορίας Αποστολή και

Διαβάστε περισσότερα

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

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino. Το Arduino είναι βασισμένο σε μια απλή μητρική πλακέτα ανοικτού κώδικα, με ενσωματωμένο

Διαβάστε περισσότερα

Εγκατάσταση του Arduino IDE

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

Διαβάστε περισσότερα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα 1ο ΕΠΑΛ Περάματος 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino.

Διαβάστε περισσότερα

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

Εφαρμογές Αναλογικών Ε/Ε PWM (pulse Width Modulation) Εφαρμογές Αναλογικών Ε/Ε PWM (pulse Width Modulation) Εισαγωγή Σε αυτή την ενότητα θα δούμε εφαρμογές που χρησιμοποιούν τις αναλογικές Εισόδους/Εξόδους του Arduino ή την τεχνική PWM. Ψηφιακό vs Αναλογικό

Διαβάστε περισσότερα

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

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοινωνία. Σειριακή Επικοινωνία USB Σύνδεση / Πρωτόκολλο Σκοπός Εντολή επιλογής (if) Εντολή Επανάληψης (while) Πίνακες 1 Μέρος Α : Σκοπός

Διαβάστε περισσότερα

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

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ARDUINO Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών Υλοποίηση δικτύου ασύρματης ραδιοεπικοινωνίας μεταξύ δύο ενσωματωμένων κόμβων (κόμβος ταυτοποίησης

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO. Υποψήφιος Διδάκτωρ ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO Δημιουργός: Επιβλέπων: Μπακάλη Ιωάννα Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ 1 ΤΙ ΕΙΝΑΙ ΤΟ ARDUINO; Είναι ένας συνδυασμός Υλικού (πλακέτας, μικροελεγκτή, αντιστάσεων κτλ) και Λογισμικού

Διαβάστε περισσότερα

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

ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO Αντώνιος Καραγεώργος Βασικά Στοιχεία της Γλώσσας Προγραμματισμού Arduino Constants: HIGH/LOW Ορίζουν το επίπεδο της τάσης εισόδου/εξόδου ενός pin INPUT/OUTPUT Ορίζουν την

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino UNO Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O

Διαβάστε περισσότερα

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

Διαβάστε περισσότερα

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

Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Α : Υλικά Σκοπός Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Α : Υλικά Μικροελεγκτές Πλακέτα Arduino Προσομοίωση Μικροελεγκτών Προγραμματισμός Μικροελεγκτών στη C. 7.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΕΡΓΑΣΙΑΣ

Διαβάστε περισσότερα

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2 Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου Ενότητα 2 Τι είναι το PLC ΠΕΡΙΕΧΟΜΕΝΑ 2 Τι είναι το PLC. 2.1 Πλεονεκτήματα των PLC. 2.2 Η δομή ενός PLC. 2.3 Τα PLC της αγοράς. 2.4 Αρχή λειτουργίας ενός PLC.

Διαβάστε περισσότερα

Μαθαίνοντας το hardware του αναπτυξιακού

Μαθαίνοντας το hardware του αναπτυξιακού 1. ΑΣΚΗΣΗ 1 Μαθαίνοντας το hardware του αναπτυξιακού Προϋποθέσεις Το εργαστήριο αυτό προϋποθέτει το διάβασμα και χρήση των εξής: Αρχείο mcbstr9.chm HTML, που δίδεται με τα υπόλοιπα αρχεία του εργαστηρίου.

Διαβάστε περισσότερα

ΕΛΕΓΧΟΣ ΑΝΤΛΙΟΣΤΑΣΙΟΥ ΜΕ ΔΕΞΑΜΕΝΗ ΜΕΣΩ GSM CHECK IN TANK PUMPING THROUGH GSM

ΕΛΕΓΧΟΣ ΑΝΤΛΙΟΣΤΑΣΙΟΥ ΜΕ ΔΕΞΑΜΕΝΗ ΜΕΣΩ GSM CHECK IN TANK PUMPING THROUGH GSM ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΏΝ ΕΦΑΡΜΟΓΏΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ CHECK IN TANK PUMPING THROUGH GSM Επιβλέπων Καθηγητής: Κόγιας Παναγιώτης Επιβλέπουσα Καθηγήτρια: Κόγια Φωτεινή ΚΑΒΑΛΑ, ΦΕΒΡΟΥΑΡΙΟΣ

Διαβάστε περισσότερα

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

ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2 ΘΕΜΑ : ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2 ΔΙΑΡΚΕΙΑ:? περίοδος Οι μικροελεγκτές είναι υπολογιστές χωρίς περιφερειακά, σε ολοκληρωμένα κυκλώματα. Μπορούν να συνδυάσουν αρκετές από τις βασικές λειτουργίες άλλων ειδικών

Διαβάστε περισσότερα

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

Το κύκλωμα σε breadboard Φύλλο εργασίας 8 - Ανιχνευτής απόστασης Σε αυτήν τη δραστηριότητα θα κατασκευάσουμε έναν ανιχνευτή απόστασης. Θα χρησιμοποιήσουμε τον αισθητήρα υπερήχων (ή απόστασης) HC-SR04 για τον υπολογισμό της απόστασης.

Διαβάστε περισσότερα

LFT169 - LFR169 ΠΟΜΠΟΣ ΚΑΙ ΔΕΚΤΗΣ ΨΗΦΙΑΚΩΝ ΚΑΙ ΑΝΑΛΟΓΙΚΩΝ ΣΗΜΑΤΩΝ

LFT169 - LFR169 ΠΟΜΠΟΣ ΚΑΙ ΔΕΚΤΗΣ ΨΗΦΙΑΚΩΝ ΚΑΙ ΑΝΑΛΟΓΙΚΩΝ ΣΗΜΑΤΩΝ LFT169 - LFR169 ΠΟΜΠΟΣ ΚΑΙ ΔΕΚΤΗΣ ΨΗΦΙΑΚΩΝ ΚΑΙ ΑΝΑΛΟΓΙΚΩΝ ΣΗΜΑΤΩΝ Οδηγίες Παραμετροποίησης Power Electronics Control Ε.Π.Ε. Τύποι Συσκευών: LFT169 - LFR169 Περιγραφή: Πομπός και Δέκτης Τηλεχειρισμού 169MHz

Διαβάστε περισσότερα

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΡΟΜΠΟΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΜΠΑΝΤΗΣ ΑΝΤΩΝΙΟΣ 533 ΤΣΙΚΤΣΙΡΗΣ ΔΗΜΗΤΡΙΟΣ 551 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΡΟΜΠΟΤ LEGO NXT Το ρομπότ

Διαβάστε περισσότερα

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

2017 Κατασκευάζω και Προγραμματίζω με τον μικροελεγκτή Arduino 2017 Κατασκευάζω και Προγραμματίζω με τον μικροελεγκτή Arduino Αριστείδης Παλιούρας e-mail: arispaliouras@gmail.com ISBN: 978-960-93-8945-7 Κατασκευάζω και Προγραμματίζω με τον μικροελεγκτή Arduino Copyright

Διαβάστε περισσότερα

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

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων Σε αυτήν τη δραστηριότητα θα κατασκευάσουμε ένα αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων. Εκτός από τον μικροελεγκτή Arduino, το breadboard,

Διαβάστε περισσότερα

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

Φύλλο εργασίας 6 - Θερμόμετρο εξωτερικού χώρου. Το κύκλωμα σε breadboard Φύλλο εργασίας 6 - Θερμόμετρο εξωτερικού χώρου Σε αυτήν την δραστηριότητα θα κατασκευάσουμε ένα θερμόμετρο εξωτερικού χώρου. Θα χρησιμοποιήσουμε τον αισθητήρα θερμοκρασίας LM35 και για την ένδειξη της

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016) ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016) Περιγραφή της Άσκησης Στόχος της άσκησης είναι η δημιουργία ενός συστήματος διαχείρισης φωτισμού. Μία φωτομεταβαλλόμενη αντίσταση (LDR) θα διαπιστώνει την ποσότητα του φωτός

Διαβάστε περισσότερα

ΜΕΛΕΤΗ ΚΑΙ ΔΗΜΙΟΥΡΓΙΑ 10 ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ ΜΕ ΤΗ ΜΟΡΦΗ ΦΥΛΛΩΝ ΕΡΓΟΥ ΓΙΑ ΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΤΗΣ ΠΛΑΤΦΟΡΜΑΣ ARDUINO

ΜΕΛΕΤΗ ΚΑΙ ΔΗΜΙΟΥΡΓΙΑ 10 ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ ΜΕ ΤΗ ΜΟΡΦΗ ΦΥΛΛΩΝ ΕΡΓΟΥ ΓΙΑ ΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΤΗΣ ΠΛΑΤΦΟΡΜΑΣ ARDUINO ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΕΤΗ ΚΑΙ ΔΗΜΙΟΥΡΓΙΑ 10 ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ ΜΕ ΤΗ ΜΟΡΦΗ ΦΥΛΛΩΝ ΕΡΓΟΥ ΓΙΑ ΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΤΗΣ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Η δυναμική του Arduino στο μάθημα της Τεχνολογίας. Φάσουρας Δημήτριος Ηλεκτρολόγος ΠΕ 17,03

Η δυναμική του Arduino στο μάθημα της Τεχνολογίας. Φάσουρας Δημήτριος Ηλεκτρολόγος ΠΕ 17,03 Η δυναμική του Arduino στο μάθημα της Τεχνολογίας Φάσουρας Δημήτριος Ηλεκτρολόγος ΠΕ 17,03 dfasouras@gmail.com Τι είναι το Arduino ; Το Arduino είναι μια απλή μητρική πλακέτα ανοικτού κώδικα. Διαθέτει

Διαβάστε περισσότερα

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

ΕΝΟΤΗΤΑ 5 Αναλογικά σήματα ΕΝΟΤΗΤΑ 5 Αναλογικά σήματα Σκοπός και περίγραμμα της Ενότητας 5 Σκοπός της παρουσίασης Να δώσουμε τις βασικές ιδέες για τα αναλογικά σήματα και την χρήση διαφορετικών ειδών περιφερειακών Σύνοψη Επεξήγηση

Διαβάστε περισσότερα

Σημειώσεις : Χρήστος Μουρατίδης. Κάντε κλικ για έναρξη

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O Pins:

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ

ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ ΑΜΑΛIΑ ΦΩΚA ΕΠIΚΟΥΡΗ ΚΑΘΗΓHΤΡΙΑ Περιεχόμενο Μαθήματος 2 Arduino Τι είναι το Arduino; 3 μικρή συσκευή (μικροεπεξεργαστής) που συνδέεται με USB στον υπολογιστή μια πλατφόρμα

Διαβάστε περισσότερα

Ενότητα 1η. Εισαγωγή στην Πληροφορική

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

Διαβάστε περισσότερα

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

Μια πρόταση διδασκαλίας για το μάθημα του προγραμματισμού Η/Υ στο Λύκειο με τη μεθοδολογία STEM Μια πρόταση διδασκαλίας για το μάθημα του προγραμματισμού Η/Υ στο Λύκειο με τη μεθοδολογία STEM Οδηγίες για την υλοποίηση της διδακτικής παρέμβασης 1η διδακτική ώρα: Υλοποίηση του φύλλου εργασίας 1 με

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Σχεδίαση και ανάπτυξη οχήματος που ακολουθεί μια γραμμή

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Σχεδίαση και ανάπτυξη οχήματος που ακολουθεί μια γραμμή ΤΕΙ ΑΝΑΤΟΛΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΚΑΙ ΘΡΑΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Σχεδίαση και ανάπτυξη οχήματος που ακολουθεί μια γραμμή Σπουδαστές: Ταβλάκης Γεώργιος ΑΕΜ:

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ 1.1 ΕΙΣΑΓΩΓΗ ΣΤΑ ΑΝΑΛΟΓΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ 1 1.1.1 Αναλογικά σήματα 1 1.1.2 Οι αντιστάσεις 3 1.1.3 Οι πυκνωτές 7 1.1.4 Τα πηνία 11 1.1.5 Οι δίοδοι 13 1.1.6

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Φύλλο εργασίας 7 - Δημιουργώ τα δικά μου χρώματα με το RGB LED Φύλλο εργασίας 7 - Δημιουργώ τα δικά μου χρώματα με το RGB LED Στην δραστηριότητα αυτή θα δουλέψουμε με το RGB LED για να παράγουμε μια μεγάλη ποικιλία χρωμάτων. Το RGB LED είναι στην ουσία τρία διαφορετικά

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects)

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects) ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ Τίτλος Μαθήματος Μικροελεγκτές και Ενσωματωμένα συστήματα Ανάπτυξη και Εφαρμογές Κωδικός Μαθήματος Μ2 Θεωρία / Εργαστήριο Θεωρία + Εργαστήριο Πιστωτικές μονάδες 4 Ώρες Διδασκαλίας 2Θ+1Ε

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 1: Εισαγωγή στα ενσωματωμένα συστήματα (embedded systems) Εργαστήριο Αυτομάτου Ελέγχου Ενσωματωμένα συστήματα (Embedded Systems) Ενσωματωμένα συστήματα (Embedded

Διαβάστε περισσότερα

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

Διαβάστε περισσότερα

Εφαρμογές αναλογικών / Ψηφιακών

Εφαρμογές αναλογικών / Ψηφιακών Εφαρμογές αναλογικών / Ψηφιακών 1 ΕΙΣΑΓΩΓΗ Σε αυτήν την ενότητα θα δούμε μερικές ακόμα εφαρμογές ψηφιακών / αναλογικών εισόδων/ εξόδων που μπορούμε να φτιάξουμε με την βοήθεια του Arduino, χρησιμοποιώντας

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD Σκοπός του εργαστηρίου: Οι φοιτητές εξοικειώνονται με βασικές απεικονίσεις αριθμητικών ψηφίων και χαρακτήρων, καθώς και με τη βασική οδήγηση τέτοιων απεικονίσεων,

Διαβάστε περισσότερα

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

Φύλλο εργασίας 4 - Δημιουργώ τα δικά μου χρώματα με το RGB LED Φύλλο εργασίας 4 - Δημιουργώ τα δικά μου χρώματα με το RGB LED Στην δραστηριότητα αυτή θα δουλέψουμε με το RGB LED για να παράγουμε μια μεγάλη ποικιλία χρωμάτων. Το RGB LED είναι στην ουσία τρία διαφορετικά

Διαβάστε περισσότερα

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

Κεφάλαιο 2.4: Εργασία με εικονίδια

Κεφάλαιο 2.4: Εργασία με εικονίδια Κεφάλαιο 2.4: Εργασία με εικονίδια 2.4.1 Συχνότερα εμφανιζόμενα εικονίδια των Windows Τα πιο συνηθισμένα εικονίδια, που μπορεί να συναντήσουμε, είναι: Εικονίδια συστήματος: Τα Windows εμφανίζουν τα στοιχεία

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 3 ΕΚΦΡΑΣΕΙΣ, ΑΝΑΜΟΝΕΣ (DELAYS), ΗΧΟΙ

ΕΝΟΤΗΤΑ 3 ΕΚΦΡΑΣΕΙΣ, ΑΝΑΜΟΝΕΣ (DELAYS), ΗΧΟΙ ΕΝΟΤΗΤΑ 3 ΕΚΦΡΑΣΕΙΣ, ΑΝΑΜΟΝΕΣ (DELAYS), ΗΧΟΙ Σκοπός και περίγραμμα της Ενότητας 3 Σκοπός της παρουσίασης Να δούμε πιο προσεκτικά τις μεταβλητές, τις σταθερές και τις εκφράσεις γενικότερα. Να σας παρουσιάσουμε

Διαβάστε περισσότερα

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O Pins:

Διαβάστε περισσότερα

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

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό 5 ο Εργαστήριο Λογικοί Τελεστές, Δομές Ελέγχου Λογικοί Τελεστές > μεγαλύτερο = μεγαλύτερο ή ίσο!= διαφορετικό Οι λογικοί τελεστές χρησιμοποιούνται για να ελέγξουμε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Arduino Teachers Workshop

Arduino Teachers Workshop Arduino Teachers Workshop Εισαγωγή στο Arduino Προγραμματισμός στο Arduino IDE Επικοινωνία με τον υπολογιστή μέσω USB Πλακέτα εύκολων συνδέσεων Breadboard Projects Led Blink Αναλογική ανάγνωση Ποτενσιόμετρου

Διαβάστε περισσότερα

ΘΕΜΑ : ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ. ΔΙΑΡΚΕΙΑ: 1 περίοδος

ΘΕΜΑ : ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ. ΔΙΑΡΚΕΙΑ: 1 περίοδος ΘΕΜΑ : ΗΛΕΚΤΡΟΝΙΚΗ ΜΝΗΜΗ ΚΑΙ ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΔΙΑΡΚΕΙΑ: 1 περίοδος Σε αυτό το μάθημα θα μάθετε να: 1. Αναφέρετε τα διάφορα είδη μνήμης και συσκευές που τις περιέχουν. 2. Περιγράφετε τα σημαντικά χαρακτηριστικά

Διαβάστε περισσότερα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

Κεφάλαιο 8. Αριθμητική Λογική μονάδα

Κεφάλαιο 8. Αριθμητική Λογική μονάδα Κεφάλαιο 8 Αριθμητική Λογική μονάδα 8.1 Εισαγωγή Στη μηχανική υπολογιστών η αριθμητική/λογική μονάδα (ALU) είναι ένα ψηφιακό κύκλωμα το οποίο εκτελεί αριθμητικούς και λογικούς υπολογισμούς. Η ALU είναι

Διαβάστε περισσότερα

διατίθεται με άδεια χρήσης GPL για πλατφόρμες Linux, MAC και Windows.

διατίθεται με άδεια χρήσης GPL για πλατφόρμες Linux, MAC και Windows. Arduino ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO Α. Ανδρεάτος Κεφ. 1/ Εισαγωγή - Τι είναι το Arduino; Σύμφωνα με τον δημιουργό του, το Arduino είναι μια πλατφόρμα ανάπτυξης ηλεκτρονικών κατασκευών ανοικτών τεχνολογιών (υλικού

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ 2 Ο ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΠΟΣΤΟΛΙΑ ΠΑΓΓΕ Υπολογιστής Συνοπτικό λεξικό Οξφόρδης -> «ηλεκτρονική υπολογιστική μηχανή»

Διαβάστε περισσότερα

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή στην Πληροφορική 1 Γενικές πληροφορίες Εισαγωγή στην Πληροφορική ιδασκαλία: Παναγιώτης Χατζηδούκας Email:

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 4 TΟ ΡΟΜΠΟΤΙΚΟ ΟΧΗΜΑ ROGUE BLUE

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 4 TΟ ΡΟΜΠΟΤΙΚΟ ΟΧΗΜΑ ROGUE BLUE Εργαστήριο Ευφυών Συστημάτων και Ρομποτικής Τμήμα Μηχανικών Παραγωγής και Διοίκησης Πολυτεχνείο Κρήτης www.robolab.tuc.gr, τηλ: 28210 37292 / 37314 e-mail: savas@dpem.tuc.gr, kyralakis@dpem.tuc.gr ΕΡΓΑΣΤΗΡΙΑΚΗ

Διαβάστε περισσότερα

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

ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ Στόχος και Περίγραμμα της Ενότητας 10 Στόχος της παρουσίασης Παρουσίαση της βασικής ιδέα και απλών παραδειγμάτων για την οδήγηση DC και βηματικών κινητήρων με το Arduino.

Διαβάστε περισσότερα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα 1ο ΕΠΑΛ Περάματος 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino.

Διαβάστε περισσότερα

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου για συγκεκριμένους υπολογιστές ή άλλη προγραμματιζόμενη

Διαβάστε περισσότερα

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Aντώνης Σπυρόπουλος v2_061015 Οροι που

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ ΕΙΣΑΓΩΓΗ Θέµατα ❸Συστήµατα Η/Υ (αναφορά) ❸Γλώσσα υπολογιστών ❸Γλώσσες προγραµµατισµού (low-high level) ❸Low level VS high level programming ❸Βασικά µέρη Η/Υ ❸Μικροϋπολογιστές (µc µp) ❸Αρχιτεκτονική µικροελεγκτών

Διαβάστε περισσότερα

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μελετώντας το μάθημα θα μπορείς να ξέρεις τη λειτουργία του Polling να ξέρεις

Διαβάστε περισσότερα

Arduino. δουλεύοντας με το... Υλικό αναφοράς και χρήσης της ανοιχτής πλατφόρμας

Arduino. δουλεύοντας με το... Υλικό αναφοράς και χρήσης της ανοιχτής πλατφόρμας δουλεύοντας με το... Arduino Υλικό αναφοράς και χρήσης της ανοιχτής πλατφόρμας έκδοση των μαθητών της Β τάξης Γενικού Ενιαίου Λυκείου Φαλάνης, του Εργαστηρίου Πληροφορικής και του εκπαιδευτικού Γιώργου

Διαβάστε περισσότερα

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

ΕΝΟΤΗΤΑ 6 LCD ΟΘΟΝΕΣ ΕΝΟΤΗΤΑ 6 LCD ΟΘΟΝΕΣ Σκοπός και περίγραμμα της Ενότητας 6 Σκοπός της παρουσίασης Να δείτε μια οθόνη LCD ως περιφερειακό εξόδου: σας επιτρέπει να εμφανίσετε κάθε είδους πληροφορίας εξόδου, συμπεριλαμβανομένων

Διαβάστε περισσότερα

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

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 3: Βασικός Προγραμματισμός Arduino (AVR) (Συνέχεια) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino Microcontroller: ATmega328 Operating Voltage: 5V Digital

Διαβάστε περισσότερα

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης Το εσωτερικό ενός PC 1 Το κουτί του PC (περίβλημα) περιέχει όλα τα βασικά μέρη του συστήματος Δύο κατηγορίες κουτιών: Desktop και Tower Mini tower Midi tower Full tower Κεντρική μονάδα Ο τύπος του κουτιού

Διαβάστε περισσότερα

Μάθημα 4.2 Η μητρική πλακέτα

Μάθημα 4.2 Η μητρική πλακέτα Μάθημα 4.2 Η μητρική πλακέτα - Εισαγωγή - Οι βάσεις του επεξεργαστή και της μνήμης - Οι υποδοχές της μητρικής πλακέτας - Άλλα μέρη της μητρική πλακέτας - Τυποποιήσεις στην κατασκευή μητρικών πλακετών Όταν

Διαβάστε περισσότερα

ΤΟ ΕΣΩΤΕΡΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ

ΤΟ ΕΣΩΤΕΡΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΤΟ ΕΣΩΤΕΡΙΚΟ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΕΙΣΑΓΩΓΗ Οι υπολογιστές αποτελούνται από πολλά ηλεκτρονικά εξαρτήματα. Κάθε εξάρτημα έχει ειδικό ρόλο στη λειτουργία του υπολογιστή. Όλα όμως έχουν σχεδιαστεί, για να συνεργάζονται,

Διαβάστε περισσότερα

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α.

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α. Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων Διδάσκοντας: Α. Καραγεώργος 24-05-2016 Επαναληπτικές Ερωτήσεις 1. Πότε τα έπιπλα καλούνται

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

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

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW. Σκοπός Μάθημα 2 Δραστηριότητα 1 Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Βασική δομή ενός προγράμματος στο LabVIEW. Εμπρόσθιο Πλαίσιο (front panel). Σχεδίαση

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

Διαβάστε περισσότερα

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή 1.5.1 Ανάλυση των μερών ενός υπολογιστή Μονάδα συστήματος Είναι το κουτί του υπολογιστή το οποίο φαίνεται αρκετά συμπαγές, αλλά στην πραγματικότητα αποτελείται

Διαβάστε περισσότερα

ARDUINO ΟΔΗΓΟΣ ΓΙΑ ΑΡΧΑΡΙΟΥΣ

ARDUINO ΟΔΗΓΟΣ ΓΙΑ ΑΡΧΑΡΙΟΥΣ ARDUINO ΟΔΗΓΟΣ ΓΙΑ ΑΡΧΑΡΙΟΥΣ ΤΙ ΕIΝΑΙ ΤΟ ARDUINO; Το Arduino είναι μια «ανοικτού κώδικα» πλατφόρμα βασισμένη σε ευέλικτο και εύκολο στη χρήση hardware και software. Αυτό σημαίνει ότι ο καθένας μπορεί να

Διαβάστε περισσότερα

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

4 Εισαγωγή στο Arduino 28 Εισαγωγή στο Arduino 4 Εισαγωγή στο Arduino Τι είναι το Arduino; To arduino είναι ένας μικροελεγκτής, προσαρμοσμένος σε μια πλακέτα και έτοιμος προς χρήση. Μας φώτισες. Και τι είναι ένας μικροελεγκτής;

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

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

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Η επεξεργασία των δεδομένων ακολουθεί μια στερεότυπη διαδρομή: τα δεδομένα εισάγονται στο υπολογιστικό σύστημα, υφίστανται μια ορισμένη επεξεργασία και

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 1 ΤO ΡΟΜΠΟΤ INTELLITEK ER-2u

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 1 ΤO ΡΟΜΠΟΤ INTELLITEK ER-2u Εφαρμογή 1: Το ρομπότ INTELITEK ER-2u Εργαστήριο Ευφυών Συστημάτων και Ρομποτικής Τμήμα Μηχανικών Παραγωγής και Διοίκησης Πολυτεχνείο Κρήτης www.robolab.tuc.gr, τηλ: 28210 37292 / 37314 e-mail: savas@dpem.tuc.gr,

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα της γλώσσας C, το Dev-C++, το οποίο είναι εφαρμογή που τρέχει

Διαβάστε περισσότερα

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

Διαβάστε περισσότερα

www.tridimas.gr E-mail: info@tridimas.gr

www.tridimas.gr E-mail: info@tridimas.gr Κεντρικό: Ν. Πλαστήρα 257 & Αιόλου 36, ΤΚ: 135 62, Αγ. Ανάργυροι Αθήνα, Τηλ. Κέντρο: 210 26 20 250, Fax: 210 26 23 805 Υποκατάστημα: Σμύρνης 31, Τ.Κ.: 143 41, Ν. Φιλαδέλφεια, Αθήνα Τηλ: 210 25 25 534-210

Διαβάστε περισσότερα