1ο ΕΠΑΛ Περάματος -7ο ΕΚ Πειραιά. Εφαρμογές Arduino. Σεμινάριο Ηλεκτρονικού Τομέα. Φεβρουάριος 2014

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

Download "1ο ΕΠΑΛ Περάματος -7ο ΕΚ Πειραιά. Εφαρμογές Arduino. Σεμινάριο Ηλεκτρονικού Τομέα. Φεβρουάριος 2014"

Transcript

1 1 1ο ΕΠΑΛ Περάματος -7ο ΕΚ Πειραιά Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα Φεβρουάριος 2014

2 2 Εισαγωγή Με αυτό το σεμιναρίο φιλοδοξούμε να μάθουμε ο ένας στον άλλο βασικές αρχές και εφαρμογές που αφορούν την πλατφόρμα arduino. Σχεδιάστηκε από την Σύμβουλο των Ηλεκτρονικών (ΠΕ12.10) Κα Σαλωνίδου Αθηνά και τον συνάδελφο Μαλτέζο Γιάννη, ενώ στην επιμέλεια του υλικού συμμετείχαν οι συνάδελφοι Νίκας Αναστάσιος, Κουβαράκης Γιάννης και Δερμάτης Χαράλαμπος. Γενική φιλοσοφία του σεμιναρίου είναι η πρακτική εξάσκηση (Hands on Training). Κάθε αντικείμενο θα συζητηθεί μέσω ασκήσεων και παραδειγμάτων χρήσιμων για την κατανοηση και σωστή χρήση του arduino. Το σεμινάριο έχει σχεδιαστεί έτσι ώστε κάποιες βασικές γνώσεις να μην είναι απαραίτητες, μιας και η προσέγγιση του αντικειμένου γίνεται από την αρχή. Οι σημειώσεις είναι προιόν επεξεργασίας των πηγών που αναφέρουμε και τα πνευματικά δικαιώματα ανήκουν στους δημιουργούς τους. Σε όλες τις πρακτικές εφαρμογές έχει γίνει πειραματική επαλήθευση στο εργαστήριο Ηλεκτρονικών του σχολείου μας. Το θεωρητικό μέρος του υλικού είναι από την πτυχιακή εργασία των σπουδαστών του ΤΕΙ Σερρών Φελλόπουλου Αναστάσιου και Σπύρου Μαρίας με επιβλέποντα τον Δρ. Σταύρο Βολογιαννίδη, που αφορά την κατασκευή ενός τρίτροχου κινούμενου ρομπότ με πλατφόρμα Arduino. Από την πτυχιακή χρησιμοποιήθηκαν τα κεφάλαια 1,2 και 8 αυτούσια και χωρίς καμία επέμβαση στο υλικό των δημιουργών τους που ευχαριστούμε θερμά

3 3 Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής και Επικοινωνιών Υλοποίηση ενός τρίτροχου κινούμενου ρομπότ χρησιμοποιώντας πλατφόρμα Arduino Πτυχιακή Εργασία Φελλόπουλος Αναστάσιος ΑΜ: 1989 Σπύρου Μαρία ΑΜ: 2084 Επιβλέπων: Δρ. Σταύρος Βολογιαννίδης, Επιστημονικός Συνεργάτης ΣΕΡΡΕΣ, ΜΑΪΟΣ 2012 i

4 4 Περιεχόμενα Περιεχόμενα... vi ΚΕΦΑΛΑΙΟ Arduino... 1 ΚΕΦΑΛΑΙΟ Arduino Uno Γενικά Μέρη ενός Arduino Uno Σειριακή Θύρα Χαρακτηριστικά του Arduino Βασικές μνήμες Τροφοδοσία Επικοινωνία Γλώσσα Προγραμματισμού Εγκατάσταση του προγράμματος Ολοκληρωμένο Περιβάλλον Ανάπτυξης του Arduino Σειριακή οθόνη (Serial Monitor) H Δομή το προγράμματος Βασικές δομές και λειτουργίες προγραμματισμού Ψηφιακές ακίδες (Digital pins) Αναλογικές ακίδες εισόδου (Analog input pins) Υποστήριξη Βιβλιοθηκών (Libraries) vi

5 5 ΚΕΦΑΛΑΙΟ Processing Χαρακτηριστικά της Processing Έργα βασισμένα στην Processing Η δομή του προγράμματος Βιβλιοθήκες και εργαλεία Πρόγραμμα 5: Αναπαράσταση αποτελεσμάτων σε πραγματικό χρόνο ΚΕΦΑΛΑΙΟ Βιβλιογραφία Πηγές πληροφοριών viii

6 6 Κεφάλαιο 1 : Arduino ΚΕΦΑΛΑΙΟ 1 Arduino Οι πλατφόρμες Arduino κατασκευάζονται κυρίως από την εταιρία Smart Project. Ωστόσο, το Arduino ξεκίνησε ως έργο προς ανάπτυξη το 2005 στην Ιταλία, στο Ινστιτούτο Αλληλεπίδρασης Σχεδίασης Ivrea ώστε οι φοιτητές του Ινστιτούτου να αναπτύσσουν ενσωματωμένα συστήματα οικονομικά και αποδοτικά αξιοποιώντας τις δυνατότητες και τις ευκαιρίες που μπορεί να προσφέρει το ελεύθερο λογισμικό. Γενικότερα, το Arduino θα λέγαμε ότι είναι ένα εργαλείο που μπορούμε να κατασκευάσουμε ένα υπολογιστικό σύστημα με την έννοια ότι αυτό θα ελέγχει συσκευές του φυσικού κόσμου, σε αντίθεση με τον κοινό Ηλεκτρονικό Υπολογιστή. Βασίζεται σε ευέλικτο, εύκολο στη χρήση υλικό και λογισμικό, σε μια αναπτυξιακή πλακέτα που ενσωματώνει επάνω έναν μικροελεγκτή και συνδέεται με τον Η/Υ για να προγραμματιστεί μέσα από ένα απλό περιβάλλον ανάπτυξης. Με το Arduino δημιουργούνται συσκευές οι οποίες εξυπηρετούν διάφορους σκοπούς έχοντας την δυνατότητα να δέχονται ερεθίσματα από το περιβάλλον τους (μέσω των αισθητήρων) και να αντιδρούν ανάλογα με το πως έχουν προγραμματιστεί. Τα παραπάνω δεν ακούγονται πρωτότυπα. Υπάρχουν και άλλες πλατφόρμες και υλοποιήσεις που μπορούν να κάνουν τα ίδια πράγματα. Ποια είναι η ειδοποιός διαφορά; Το Arduino βασίζεται σε τεχνολογίες ανοιχτού κώδικα. Μπορεί να κατασκευαστεί από τον καθένα, μπορεί να ενσωματωθεί σε συσκευές ακόμα και για εμπορικούς σκοπούς και το σημαντικότερο είναι ότι υπάρχει μια ολόκληρη κοινότητα που χρησιμοποιεί το Arduino σε κατασκευές άρα υπάρχει μεγάλος όγκος ελεύθερης πληροφορίας. Γενικά, τα Projects στον εν λόγω Μικροελεγκτή μπορούν να είναι αυτόνομα (σε επίπεδο hardware) ή να επικοινωνούν με κάποιο software στον Η/Υ του προγραμματιστή (προγράμματα όπως τα Flash, Processing, MaxMSP). Το Arduino χρησιμοποιεί τώρα ένα ειδικά προγραμματιζόμενο Atmega382 αντί του chip FTDI ώστε αυτό να επιτρέπει τόσο την πιο γρήγορη ταχύτητα μεταφοράς όσο και τη γρήγορη σειριακή επικοινωνία. Ο μικροεπεξεργαστής ενός Arduino συνήθως προγραμματίζεται εκ των προτέρων ώστε να παρέχει κάποιο φορτωτή εκκίνησης (BootLoader). Ο φορτωτής εκκίνησης υπάρχει ώστε να απλοποιεί την διαδικασία της αποθήκευσης των προγραμμάτων στην Flash Memory του Arduino μέσω σειριακής USB θύρας. Επιπλέον, η γλώσσα προγραμματισμού, οι διάφορες βιβλιοθήκες και το ολοκληρωμένο περιβάλλον ανάπτυξης που υπάρχουν για τον προγραμματισμό της πλατφόρμας Arduino αποτελούν ανοιχτό λογισμικό προσφέροντας έτσι ανεκτίμητη γνώση σε όλους. 1

7 7 Βασικά Πλεονεκτήματα πλατφόρμας Arduino: Κεφάλαιο 1 : Arduino Οικονομική: Η πλατφόρμα Arduino αποτελεί οικονομική λύση διότι είναι φθηνότερη. Επιπλέον, είναι αρχιτεκτονικά ανοιχτή και μπορεί ο οποιοσδήποτε να την αναπτύξει από μόνος του. Μεταφέρσιμη: Σε σχέση με τις υπάρχουσες πλατφόρμας στο εμπόριο η πλατφόρμα Arduino παρέχει πλήρη μεταφερσιμότητα με αποτέλεσμα να μπορεί να προγραμματιστεί στα περισσότερα λειτουργικά συστήματα. Επεκτάσιμη: Το υλικό και το λογισμικό της πλατφόρμας Arduino είναι ανοιχτά και ελεύθερα για όλους. Καθημερινά, χιλιάδες υποστηρικτές του ελεύθερου λογισμικού αναπτύσσουν διάφορες βιβλιοθήκες για την υποστήριξη της πλατφόρμας. Παράλληλα, τόσο η αρχιτεκτονική όσο και το υλικό της πλατφόρμας εξελίσσονται συνεχώς. Παρακάτω ακολουθούν μερικές από τις πλατφόρμες Arduino που έχουν αναπτυχθεί και όπου η κάθε μία είτε αποτελεί εξέλιξη κάποιας άλλης, είτε έχει αναπτυχθεί για κάποιο συγκεκριμένο σκοπό : Arduino Uno Arduino Stamp Arduino Diecimila Arduino Fio Arduino Duemilanove Arduino NG Arduino Mega1280 Arduino NG+ Arduino Mega2560 Arduino Extreme Arduino Mini Arduino Bluetooth Arduino Nano LilyPad Arduino Arduino USB Serial Arduino Ακολουθεί ένας πίνακας όπου περιέχει για τις πιο τυπικές πλατφόρμες Arduino τα βασικά χαρακτηριστικά όσο αφορά το υλικό τους μέρος. Πλατφόρμα Arduino Μικροελεγκτής Atmel AVR Flash KiB EEPROM KiB SRAM KiB Ψηφιακές Επαφές Ε / Ε PWM Αναλογικές Επαφές Εισόδου Diecimila ATmega Duemilanove ATmega168/ Uno ATmega Mega ATmega Fio ATmega328P Mega 2560 ATmega

8 8 1.1 Το λογισμικό του Arduino Κεφάλαιο 1 : Arduino Το περιβάλλον ανάπτυξης του Arduino (IDE) έχει συγγραφεί με την γλώσσα προγραμματισμού Java και αυτό το καθιστά μεταφέρσιμο στα περισσότερα λειτουργικά συστήματα. Το IDE του Arduino περιέχει έναν έξυπνο συντάκτη, μεταγλωττιστή της C, C++, τερματικό για σειριακή επικοινωνία με το Arduino, κ.α. Πιο συγκεκριμένα, η γλώσσα προγραμματισμού που χρησιμοποιείται για την συγγραφή προγραμμάτων στο Arduino είναι η Wiring (C, C++). Το IDE του Arduino χρησιμοποιεί εργαλεία GNU toolchain και AVR Libc για να παρέχει την μεταγλώττιση προγραμμάτων από C, C++ σε κατάλληλες AVR εντολές γλώσσας μηχανής, καθώς και το εργαλείο avrudude για την αποστολή του εκτελέσιμου προγράμματος στην Flash memory του Arduino. Η ψηφιακή σχεδίαση του υλικού μέρους του Arduino είναι ανοιχτή και προσβάσιμη από όλους μια και είναι δημοσιευμένη υπό την άδεια Creative Commons Attribution Share-Alike 2.5. Επίσης, το περιβάλλον ανάπτυξης (IDE) του Arduino είναι ελεύθερο λογισμικό και είναι δημοσιευμένο υπό την άδεια GNU General Public License Version2. 3

9 9 Κεφάλαιο 2 : Arduino Uno ΚΕΦΑΛΑΙΟ 2 Arduino Uno 2.1 Γενικά Η καρδιά του Arduino Uno είναι φυσικά ένας μικροεπεξεργαστής. Αυτός είναι το «μυαλό» του Arduino και είναι προγραμματιζόμενος ώστε να ελέγχει τα 14 ψηφιακά input/output pins και τα 6 αναλογικά που υπάρχουν πάνω στην πλακέτα ανάπτυξης. Δια μέσου αυτών των 20 pins γίνονται όλες οι διασυνδέσεις με εξωτερικά στοιχεία (κινητήρες, LEDs, LCD οθόνες κλπ) και αισθητήρες (Ultrasonic, θερμόμετρα, accelometers κ.α). Στην πλακέτα ανάπτυξης υπάρχει μια θύρα USB. Μέσω αυτής γίνεται η μεταφορά δεδομένων από αυτήν προς κάποια άλλη συσκευή, συνήθως έναν υπολογιστή, και το αντίστροφο. Ωστόσο, η κύρια χρήση στα αρχικά στάδια εκμάθησης είναι η μεταφορά του προγράμματος από τον υπολογιστή στον μικροεπεξεργαστή αλλά και η οπτικοποίηση των δεδομένων που απορρέουν από την λειτουργία της συσκευής μετά από το προγραμματισμό. 2.2 Μέρη ενός Arduino Uno Το Arduino έχει 14 ψηφιακούς ακροδέκτες Εισόδου/Εξόδου οι οποίοι μπορούν να τεθούν ως είσοδοι ή ως έξοδοι με τις εντολές-συναρτήσεις pinmode(), digitalwrite(), και digitalread() που θα αναλυθούν παρακάτω. Λειτουργούν στα 5 Volts και έχουν την δυνατότητα να παρέχουν ή να καταβυθίζουν ένταση της τάξεως των 40mA. Σε κάθε pin υπάρχει εσωτερικά ένας Pull-up αντιστάτης στα 20-50KΩ. Επιπλέον, έχει 6 αναλογικούς ακροδέκτες Εισόδου. Αυτοί μπορούν να διαβάσουν αναλογικές τιμές όπως η τάση μιας μπαταρίας κτλ και να τις μετατρέψουν σε έναν αριθμό από Η μέτρηση της τάσης γίνεται από προκαθορισμένα από 0 έως 5 volts. Εκτός αυτού, 6 εκ των 14 ψηφιακών ακροδεκτών οι P3, P5, P6, P9, P10 και P11 έχουν την δυνατότητα να προγραμματιστούν ώστε να λειτουργούν ως αναλογικές Έξοδοι. Κάποιοι ακροδέκτες έχουν συγκεκριμένες λειτουργίες. Σειριακή Λειτουργία: 0 (RX) και 1 (TX). Χρησιμοποιούνται για λήψη (RX) και εκπομπή (TX) TTL σειριακών δεδομένων. Εξωτερικές Διακοπές: 2 και 3. Αυτοί οι ακροδέκτες μπορούν να ενεργοποιούν διακοπές αν ανιχνευθεί παλμός χαμηλής τάσης. Με την συνάρτηση 4

10 10 Κεφάλαιο 2 : Arduino Uno attachinterrupt(). Ο σκανδαλισμός των διακοπών μπορεί να γίνεται στο λογικό 0,1. PWM: 3, 5, 6, 9, 10, και 11 pins. Παρέχουν Έξοδο 8-bit PWM με την συνάρτηση analogwrite(). SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Αυτοί οι ακροδέκτες επιτρέπουν επικοινωνία SPI, η οποία αν και παρέχεται από το hardware δεν είναι ακόμα διαθέσιμη στην γλώσσα προγραμματισμού του Arduino. LED: 13. Στον ακροδέκτη 13 υπάρχει ένα ενσωματωμένο LED. Όταν ο ακροδέκτης έχει τιμή HIGH, το LED ανάβει ενώ όταν το pin είναι LOW δεν ανάβει. Εικόνα 2.1 Μέρη της πλατφόρμας Arduino Uno 2.3 Σειριακή Θύρα Χρησιμοποιείται για επικοινωνία μεταξύ της πλατφόρμας Arduino και ενός υπολογιστή ή με άλλες συσκευές. Επομένως, όλες οι πλακέτες έχουν τουλάχιστον μια σειριακή θύρα. Επικοινωνεί με τις ψηφιακές ακίδες 0 (RX) και 1 (TX), καθώς και με τον υπολογιστή μέσω USB. Έτσι, εάν χρησιμοποιείται αυτή η λειτουργία(usb), δεν μπορούν ταυτόχρονα να χρησιμοποιηθούν οι ακίδες 0 και 1 για ψηφιακή είσοδο ή έξοδο. Αξίζει να αναφερθεί, η ενσωματωμένη σειριακή οθόνη στο περιβάλλον του Arduino μπορεί να χρησιμοποιηθεί για να επικοινωνεί με την πλακέτα Arduino. Κάνοντας κλικ στο κουμπί Serial Monitor στην γραμμή εργαλείων και επιλέγοντας την ίδια ταχύτητα που χρησιμοποιείται στην κλήση της Serial.begin(). 5

11 11 Κεφάλαιο 2 : Arduino Uno Οι βασικές συναρτήσεις της σειριακής θύρας είναι: begin() (αρχικοποίηση της σειριακής) end() (κλείσιμο της σειριακής) available() (έλεγχος αν υπάρχουν δεδομένα να διαβαστούν) read() (ανάγνωση των εισερχόμενων σειριακών δεδομένων) peek() (επιστρέφει το επόμενο byte από την σειριακή) flush() (άδειασμα του buffer της σειριακής από δεδομένα που έχει) print() (γράψιμο δεδομένων στη σειριακή) println() (το ίδιο με την Print(), αλλά με αλλαγή γραμμής στο τέλος) write() (γράφει δυαδικά δεδομένα στη σειριακή) 2.4 Χαρακτηριστικά του Arduino Microcontroller: ATmega328 Τάση λειτουργίας: 5V Τάση εισόδου: 7-12V Τάση εισόδου (όριο): 6-20V Digital I/O Pins: 14 (εκ των οποίων 6 περιέχουν PWM εξόδους) Analog Input Pins: 6 DC ρεύματος I/O Pin: 40 ma DC τρέχουσα για 3.3V Pin: 50 ma Flash Memory: 32 KB εκ των οποίων 0,5 KB που χρησιμοποιούνται από τον bootloader SRAM: 2 KB EEPROM: 1 KB Clock Speed: 16 MHz 2.5 Βασικές μνήμες Οι πλατφόρμες Arduino διαθέτουν τρείς βασικές μνήμες: Flash memory (32 Kbytes) στην οποία τοποθετείται κάθε φορά το πρόγραμμα που πρόκειται να εκτελεστεί καθώς και ο φορτωτής εκκίνησης που διευκολύνει την διαδικασία του προγραμματισμού της πλατφόρμας. SRAM memory (στατική μνήμη τυχαίας προσπέλασης των 2 Kbytes) η οποία χρησιμοποιείται για την προσωρινή αποθήκευση των στατικών και των μεταβλητών δεδομένων του προγράμματος που εκτελείται. ΕEPROM memory (1 Kbytes) στην οποία αποθηκεύονται οι τιμές των μεταβλητών όταν η πλατφόρμα σβήσει(off). Χρησιμοποιείται για την αποθήκευση ρυθμίσεων και άλλων παραμέτρων ανάμεσα στα Reset του Arduino. 6

12 12 Κεφάλαιο 2 : Arduino Uno Πρέπει να προστεθεί, η μνήμη Flash και η μνήμη ΕEPROM είναι σταθερές (οι πληροφορίες παραμένουν μετά την απενεργοποίησης του ρεύματος). Η μνήμη SRAM είναι ασταθής και οι πληροφορίες χάνονται όταν εναλλάσσεται το ρεύμα. Επειδή δεν υπάρχει πολύ διαθέσιμη SRAM, αν τελειώσει, το πρόγραμμα μπορεί να αποτύχει με απροσδόκητους τρόπους. Μπορεί να φαίνεται ότι φορτώνει με επιτυχία, αλλά δεν τρέχει, ή τρέχει παράξενα. Για να ελεγχθεί εάν αυτό συμβαίνει, μπορούν να μειωθούν τα σχόλια ή οι σειρές ή άλλες δομές δεδομένων στο sketch (χωρίς να αλλάξει ο κώδικας). Εάν λειτουργεί με επιτυχία στη συνέχεια, κατά πάσα πιθανότητα έχει εξαντληθεί η SRAM. Ένας τρόπος για να αντιμετωπιστεί αυτό το πρόβλημα είναι αν υπάρχουν πίνακες αναζήτησης ή άλλοι μεγάλοι πίνακες, τότε μπορεί να χρησιμοποιηθεί ο μικρότερος τύπος δεδομένων που είναι αναγκαίος για να αποθηκευτούν οι τιμές που χρειάζονται. 2.6 Τροφοδοσία Το Arduino Uno τροφοδοτείται είτε από εξωτερική τροφοδοσία που παρέχεται είτε μέσω μιας υποδοχής των 2.1mm (θετικός πόλος στο κέντρο) που βρίσκεται στην κάτω αριστερή γωνία του Arduino είτε απευθείας από την θύρα USB του υπολογιστή. H επιλογή της πηγής γίνεται αυτόματα από το αναπτυξιακό. Ως εξωτερική τροφοδοσία ορίζεται είτε μια μπαταρία, είτε μετασχηματιστής των 9Volt από 220V. Η μπαταρία μπορεί να συνδεθεί στις υποδοχές του Arduino Vin και GND όπου τοποθετούνται ο θετικός πόλος και ο αρνητικός αντίστοιχα. Από την άλλη αν τροφοδοτηθεί με μετασχηματιστή απλά πρέπει να τοποθετηθεί το βύσμα στην υποδοχή που υπάρχει θετικό πόλο στο κέντρο. Η πλακέτα μπορεί να λειτουργήσει με εξωτερική πηγή από 6 έως 20 Volts. Αν ωστόσο τροφοδοτηθεί με λιγότερα από 7 Volt τα pin εξόδου 5Volt δεν θα καταφέρουν να εξάγουν τάση 5 Volts. Αντίθετα, αν δώσουμε πάνω από 12 Volts θα υπερθερμανθεί ο σταθεροποιητής τάσης στην πλακέτα και ενδεχομένως να καταστραφεί. Συνεπώς, μια ιδανική τάση είναι τα 9 Volts. Οι ακροδέκτες τροφοδοσίας είναι οι εξής: VIN. Ακροδέκτης για μη σταθεροποιημένη τάση. Συνήθως εδώ συνδέεται μια εξωτερική πηγή τροφοδοσίας. 5V. Ακροδέκτης σταθεροποιημένης τάσης 5Volt. Η ρυθμιζόμενη παροχή ηλεκτρικού ρεύματος που χρησιμοποιείται για την τροφοδοσία του μικροελεγκτή ή άλλων ηλεκτρονικών στοιχείων της πλακέτας. Αυτό μπορεί να προέρχεται είτε από Vin με ενσωματωμένο ρυθμιστή, ή να παρέχεται από USB ή άλλη ρυθμιζόμενη παροχή 5V 3V3. Μέγιστη κατανάλωση ρεύματος είναι 50mA. GND. Γειωμένες ακίδες 7

13 Επικοινωνία Κεφάλαιο 2 : Arduino Uno Το Αrduino Uno έχει την δυνατότητα να επικοινωνεί με τον Ηλεκτρονικό Υπολογιστή, έναν άλλον Arduino ή άλλους μικροελεγκτές. Το ολοκληρωμένο ATMega382 παρέχει σειριακή επικοινωνία ΤΤL 5 Volt UART, η οποία είναι διαθέσιμη από τους ακροδέκτες (λήψη RX) 0 και (εκπομπή TX) 1 του ολοκληρωμένου. Επιπλέον, η αναπτυξιακή πλακέτα του Arduino παρέχει σειριακή επικοινωνία με τον Ηλεκτρονικό Υπολογιστή για προγραμματισμό με την βοήθεια ενός ειδικά προγραμματιζόμενου ενσωματωμένου ολοκληρωμένου ATmega382 αντί του chip FTDI. Ωστόσο, αυτό επιτρέπει την πιο γρήγορη ταχύτητα μεταφοράς και γρήγορης σειριακής επικοινωνίας. Με την σύνδεση του Arduino μέσω της θύρας USB αυτό εμφανίζεται ως εικονική σειριακή θύρα COM στο λογισμικό Εικόνα 2.2 Μικροελεγκτής ATmega328 του υπολογιστή. Το firmware ATmega382 χρησιμοποιεί τα προγράμματα οδήγησης USB COM και δεν χρειάζεται να υπάρχει εξωτερικός παράγοντας. Επομένως, στα Windows απαιτείται μόνο ένα αρχείο.inf. Ένα Arduino περιλαμβάνει ένα τμηματικό όργανο ελέγχου το οποίο επιτρέπει την απλή μορφή κειμένου δεδομένων που αποστέλλονται προς και από τη πλακέτα Arduino. Οι RX και TX λυχνίες LED στην πλακέτα θα αναβοσβήνουν όταν γίνεται μετάδοση δεδομένων μέσω του USB-to-chip σειριακή και USB σύνδεση με τον υπολογιστή (αλλά όχι για σειριακή επικοινωνία στις ακίδες 0 και 1). 2.8 Γλώσσα Προγραμματισμού Το Arduino Uno μπορεί να προγραμματιστεί με τη γλώσσα Wiring (ουσιαστικά πρόκειται για τη C++ με κάποιες μετατροπές). Έρχεται με ένα φορτωτή εκκίνησης που μας επιτρέπει να ανεβάζουμε νέο κώδικα χωρίς τη χρήση εξωτερικού υλικού προγραμματιστή. Επικοινωνεί χρησιμοποιώντας το αρχικό πρωτόκολλο αναπτυξιακής κάρτας STK500. Το περιβάλλον ανάπτυξης του λογισμικού βασίζεται στην γλώσσα προγραμματισμού Processing και την γλώσσα προγραμματισμού Wiring, οι οποίες είναι ανοιχτού κώδικα (οpen source). Το περιβάλλον ανάπτυξης μπορεί κάποιος να το "κατεβάσει δωρεάν". 2.9 Εγκατάσταση του προγράμματος Για να γίνει σωστή εγκατάσταση του προγράμματος, πρέπει να ακολουθηθεί μια σειρά από βήματα, ανάλογα με το λειτουργικό σύστημα που διαθέτει. Στην περίπτωση μας θα εγκατασταθεί σε λειτουργικό σύστημα των Windows XP. 8

14 14 Κεφάλαιο 2 : Arduino Uno 1. Πλακέτα Arduino και καλώδιο USB Στην παρούσα πτυχιακή εργασία επιλέχθηκε να χρησιμοποιηθεί η πλακέτα Arduino Uno. Θα χρειαστούμε ένα καλώδιο USB για να συνδεθούν πλακέτα και υπολογιστής. 2. Περιβάλλον Arduino Μεταφορτώνουμε δωρεάν την τελευταία έκδοση Arduino-1.0 από την ιστοσελίδα 3. Σύνδεση της πλακέτα στον υπολογιστή Συνδέουμε την πλακέτα Arduino Uno στον υπολογιστή χρησιμοποιώντας το καλώδιο USB. Παρατηρούμε ότι το LED της πλακέτας ανάβει. 4. Εγκατασταση του προγράμματος + Κάνουμε κλικ στο μενού Έναρξη, και ανοίγουμε τον Πίνακα Ελέγχου. + Από τον Πίνακα Ελέγχου, μεταβαίνουμε στο «Σύστημα» και ακολούθως «Υλικό» και ανοίγουμε τη διαχείριση συσκευών. 9

15 15 Κεφάλαιο 2 : Arduino Uno + Βλέπουμε στις συσκευές το όνομα Arduino Uno. Κάνουμε δεξί κλικ και επιλέγουμε το «Ενημέρωση προγράμματος οδήγησης». + Ξεκινάει εγκατάσταση λογισμικού για το Arduino. 10

16 16 Κεφάλαιο 2 : Arduino Uno + Κάνουμε εγκατάσταση τα drivers στον υπολογιστή μας. + Περιμένουμε μέχρι να τελειώσει η εγκατάσταση λογισμικού για το Arduino. + Τελειώνοντας παρατηρούμε ότι στις Θύρες (COM & LPT) εμφανίστηκε το Serial Port COM 15 για το Arduino που θα χρησιμοποιήσουμε. Οπότε το Arduino έχει προγραμματιστεί στη σειριακή θύρα

17 17 Κεφάλαιο 2 : Arduino Uno 5. Έναρξη της εφαρμογής Arduino Κάνουμε διπλό κλικ στην εφαρμογή Arduino.exe 6. Επιλογή Board και Σειριακής θύρας Από το περιβάλλον ανάπτυξης του, από το μενού Tools επιλέγουμε για Board το Arduino Uno και για Σειριακή θύρα το COM15. 12

18 18 Κεφάλαιο 2 : Arduino Uno 2.10 Ολοκληρωμένο Περιβάλλον Ανάπτυξης του Arduino Το περιβάλλον ανάπτυξης Arduino περιέχει μια περιοχή επεξεργασίας κειμένου για τη συγγραφή κώδικα, μια περιοχή μηνυμάτων, ένα μενού, μια γραμμή εργαλείων με κουμπιά για κοινές λειτουργίες, καθώς και μια σειρά από μενού. Συνδέεται με το υλικό Arduino για τη φόρτωση προγραμμάτων και για να επικοινωνούν μεταξύ τους. Ένα ολοκληρωμένο πρόγραμμα συνήθως ονομάζεται sketch. Αυτό το sketch είναι γραμμένο με το πρόγραμμα επεξεργασίας κειμένου. Έχει δυνατότητες για την αντιγραφή/επικόλληση και για την αναζήτηση/αντικατάσταση κειμένου. Η κονσόλα απεικονίζει την έξοδο του κειμένου από το περιβάλλον Arduino συμπεριλαμβάνοντας πλήρη μηνύματα λάθους και άλλες πληροφορίες. Τα κουμπιά της γραμμής εργαλείων επιτρέπουν τον έλεγχο και το ανέβασμα των προγραμμάτων, τη δημιουργία νέου sketch, το άνοιγμα και την αποθήκευση των sketch και άνοιγμα της σειριακής οθόνης. Μενού Εργαλειοθήκη Καρτέλες (Tabs) Επεξεργαστής κειμένου Κονσόλα μηνυμάτων Εικόνα 2.3 Ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) του Arduino 13

19 19 Κεφάλαιο 2 : Arduino Uno Τα κουμπιά της γραμμής εργαλείων: Verify/Compile (Έλεγχος/Μεταγλώττιση): Έλεγχος για λάθη στον κώδικα Upload: Ανέβασμα του κώδικα στον μικροελεγκτή New(Νέο): Δημιουργεί ένα νέο sketch Open(Άνοιγμα): Παρουσιάζει ένα μενού με όλα τα sketch, κάνοντας κλικ σε ένα από αυτά θα ανοίξει μέσα στο τρέχον παράθυρο Save(Αποθήκευση): Αποθηκεύει το sketch Serial Monitor(Σειριακή οθόνη): Ανοίγει την σειριακή οθόνη ώστε να μπορούμε να δώσουμε δεδομένα από το πληκτρολόγιο 2.11 Σειριακή οθόνη (Serial Monitor) Εμφανίζει τα σειριακά δεδομένα που αποστέλλονται από την πλακέτα Arduino. Πιο συγκεκριμένα, η αποστολή δεδομένων στην πλακέτα γίνεται, εισάγοντας κείμενο και πατώντας το κουμπί send ή πατώντας το Enter. Επίσης, στο κάτω μέρος της σειριακής οθόνης, μπορεί να γίνει η επιλογή της κατάλληλης ταχύτητας (baud) από την λίστα που εμφανίζεται ανάλογα με την τιμή που θα επιλεχθεί στο προγραμματισμό του Arduino με το Serial.begin(). Εικόνα 2.4 Serial Monitor Εικόνα 2.4: Serial Monitor 14

20 H Δομή το προγράμματος Κεφάλαιο 2 : Arduino Uno Ένα τυπικό πρόγραμμα Arduino έχει την παρακάτω δομή: //δήλωση μεταβλητών void setup () { //αρχικοποιήσεις void loop () { //Κώδικας Υπάρχουν δυο ειδικές συναρτήσεις που είναι μέρος του κάθε sketch του Arduino οι οποίες είναι η setup() και η loop(). Η setup() καλείται μια φορά, όταν το sketch ξεκινά ή όποτε κάνει επαναφορά (reset) η πλατφόρμα Arduino. Κυρίως, σε αυτήν γίνονται οι αρχικοποιήσεις των μεταβλητών, η ρύθμιση της κατάστασης των ακίδων (pins) και η προετοιμασία των βιβλιοθηκών. Αντιθέτως, η συνάρτηση loop() καλείται ξανά και ξανά επιτρέποντας έτσι στο πρόγραμμα να ανταποκριθεί σε εξωτερικά ερεθίσματα. Και οι δυο συναρτήσεις πρέπει να περιλαμβάνονται στο sketch, ακόμα και αν δεν περιέχουν κάτι και να είναι κενές Βασικές δομές και λειτουργίες προγραμματισμού Παρακάτω, ακολουθούν μερικές από τις πιο βασικές δομές και λειτουργίες που μπορεί να αξιοποιηθεί ως εργαλεία κατά την συγγραφή ενός προγράμματος Arduino : Δομές ελέγχου ροής if (δομή ελέγχου μίας συνθήκης) if... else (δομή ελέγχου πολλαπλών συνθηκών) for (δομή επαναληπτικού ελέγχου συνθήκης) while (δομή επαναληπτικού ελέγχου συνθήκης) do... while (δομή επαναληπτικού ελέγχου συνθήκης) switch... case (δομή ελέγχου περιπτώσεων) break (εντολή διακοπής μιας επαναληπτικής δομής) continue (εντολή παράλειψης της τρέχουσας επανάληψης) return (εντολή επιστροφής από μία συνάρτηση) goto (εντολή μετάβασης σε κάποιο σημείο του κώδικα) Αριθμητικοί τελεστές = (τελεστής εκχώρησης) + (τελεστής πρόσθεσης) - (τελεστής αφαίρεσης) * (τελεστής πολλαπλασιασμού) 15

21 21 Κεφάλαιο 2 : Arduino Uno / (τελεστής διαίρεσης) % (τελεστής υπόλοιπου ακεραίας διαίρεσης) Λογικοί τελεστές && (λογική σύζευξη) (λογική διάζευξη)! (λογική άρνηση) Δυαδικοί τελεστές & (δυαδική σύζευξη) (δυαδική διάζευξη) ^ (δυαδική αποκλειστική διάζευξη) ~ (δυαδική άρνηση) << (δυαδική αριστερή ολίσθηση) >> (δυαδική δεξιά ολίσθηση) Τελεστές αύξησης και μείωσης ++ (αύξηση κατά μία ακέραιη μονάδα) -- (μείωση κατά μία ακέραιη μονάδα) Σύνθετοι τελεστές +=, -=, *=, /=, %= (σύνθετοι αριθμητικοί τελεστές) &=, =, ^=, ~=, <<=, >>= (σύνθετοι δυαδικοί τελεστές) Τελεστές σύγκρισης == (ισότητα)!= (ανισότητα) < (μικρότερο) > (μεγαλύτερο) <= (μικρότερο ή ίσο) >= (μεγαλύτερο ή ίσο) Τελεστές δεικτών * (τελεστής απόκτησης περιεχομένου) & (τελεστής απόκτησης διεύθυνσης) Σταθερές HIGH (τιμή υψηλής στάθμης για μία επαφή εισόδου ή εξόδου) LOW (τιμή χαμηλής στάθμης για μία επαφή εισόδου ή εξόδου) false (λογικό επίπεδο ψεύδους σε μία συνθήκη) true (λογικό επίπεδο αλήθειας σε μία συνθήκη) INPUT (χρησιμοποιείται για τον ορισμό μίας επαφής ως είσοδο) OUTPUT (χρησιμοποιείται για τον ορισμό μίας επαφής ως έξοδο) A0,..., Α5 (συμβολοσταθερές για τις αναλογικές επαφές εισόδου) 16

22 22 Κεφάλαιο 2 : Arduino Uno Τύποι δεδομένων boolean (λογική δυαδική τιμή) char (προσημασμένος χαρακτήρας 8 ψηφίων) unsigned char (μη προσημασμένος χαρακτήρας 8 ψηφίων) byte (μη προσημασμένος χαρακτήρας 8 ψηφίων) int (προσημασμένος ακέραιος αριθμός 16 ψηφίων) unsigned int (μη προσημασμένος ακέραιος αριθμός 16 ψηφίων) word (μη προσημασμένος ακέραιος αριθμός 16 ψηφίων) long (προσημασμένος ακέραιος αριθμός 32 ψηφίων) unsigned long (μη προσημασμένος ακέραιος αριθμός 32 ψηφίων) float, double (αριθμός κινητής υποδιαστολής απλής ακρίβειας) String (αντικείμενο αλφαριθμητικού με χρήσιμες μεθόδους) Ως αλφαριθμητικό μπορεί να θεωρηθεί και ο πίνακας χαρακτήρων Συναρτήσεις μετατροπής τύπων char(), byte() int(), word(), long() float(), double() Συναρτήσεις εισόδου και εξόδου pinmode() (ορίζει μια επαφή ως είσοδο ή έξοδο) Συναρτήσεις ψηφιακής εισόδου και εξόδου digitalwrite() (γράφει σε μία ψηφιακή επαφή εξόδου) digitalread() (διαβάζει από μία ψηφιακή επαφή εισόδου) Συναρτήσεις αναλογικής εισόδου και εξόδου analogreference() (ορίζει την τάση αναλογικής αναφοράς) analogwrite() (γράφει PWM σήματα σε μία επαφή εξόδου) analogread() (διαβάζει από μία αναλογική επαφή εισόδου) Προηγμένες συναρτήσεις εισόδου και εξόδου tone() (παράγει ένα τετραγωνικό σήμα ορισμένης συχνότητας) notone() (διακόπτει την παραγωγή τετραγωνικών σημάτων) shiftout() (ολισθαίνει τα ψηφία μιας τιμής σε μία επαφή εξόδου) pulsein() (επιστρέφει την διάρκεια σε μs ενός παλμού HIGH ή LOW) Συναρτήσεις χρόνου millis() (διάρκεια εκτέλεσης του προγράμματος σε ms) micros() (διάρκεια εκτέλεσης του προγράμματος σε μs) delay() (παύση προγράμματος - η διάρκεια δίδεται σε ms) delaymicroseconds() (παύση προγράμματος - η διάρκεια δίδεται σε μs) Μαθηματικές και Τριγωνομετρικές συναρτήσεις max() (βρίσκει τον μεγαλύτερο ανάμεσα σε δύο αριθμούς) min() (βρίσκει τον μικρότερο ανάμεσα σε δύο αριθμούς) abs() (επιστρέφει την απόλυτη τιμή ενός αριθμού) constrain() (ελέγχει για υπερχείλιση ή υποχείλιση ορίων) map() (πραγματοποιεί γραμμικό μετασχηματισμό ορίων) pow() (επιστρέφει το αποτέλεσμα μίας δύναμης) 17

23 23 Κεφάλαιο 2 : Arduino Uno sqrt() (επιστρέφει την ρίζα ενός αριθμού) sin() (υπολογίζει το ημίτονο ενός αριθμού) cos() (υπολογίζει το συνημίτονο ενός αριθμού) tan() (υπολογίζει την εφαπτομένη ενός αριθμού) Συναρτήσεις γεννήτριας ψευδοτυχαίων αριθμών random() (δίδεται ένας νέος αριθμός από την γεννήτρια) randomseed() (θέτει τον σπόρο της γεννήτριας παραγωγής) Συναρτήσεις επεξεργασίας δυαδικών αριθμών lowbyte() (επιστρέφει το δεξιότερο byte μίας μεταβλητής) highbyte() (επιστρέφει το αριστερότερο byte μίας μεταβλητής) bitread() (διαβάζει ένα συγκεκριμένο ψηφίο μίας μεταβλητής) bitwrite() (γράφει σε ένα συγκεκριμένο ψηφίο μιας μεταβλητής) bitset() (γράφει την τιμή 1 σε κάποιο ψηφίο μίας μεταβλητής) bitclear() (γράφει την τιμή 0 σε κάποιο ψηφίο μιας μεταβλητής) bit() (υπολογίζει μία συγκεκριμένη δύναμη με βάση το 2) Συναρτήσεις χρήσης ρουτινών εξυπηρέτησης διακοπών attachinterrupt() (ενεργοποιεί μία ρουτίνα εξυπηρέτησης διακοπής) detachinterrupt() (απενεργοποιεί μία ρουτίνα εξυπηρέτησης διακοπής) Συναρτήσεις ενεργοποίησης και απενεργοποίησης διακοπών interrupts() (ενεργοποιεί τα σήματα διακοπής) nointerrupts() (απενεργοποιεί τα σήματα διακοπής) Υποστήριξη σειριακής επικοινωνίας Serial (αντικείμενο σειριακής επικοινωνίας με χρήσιμες μεθόδους) 2.14 Ψηφιακές ακίδες (Digital pins) Οι ακίδες αυτές στο Arduino μπορούν να ρυθμιστούν είτε ως είσοδοι είτε ως έξοδοι, όμως από προεπιλογή είναι ρυθμισμένες ως είσοδοι. Επίσης αξίζει να σημειωθεί, ότι η πλειοψηφία των αναλογικών ακίδων του Arduino (Atmega), μπορεί να ρυθμιστεί και να χρησιμοποιηθεί, με τον ίδιο ακριβώς τρόπο όπως οι ψηφιακές ακίδες. Οι συναρτήσεις ψηφιακής εισόδου και εξόδου είναι οι παρακάτω: pinmode(): Ρυθμίζει τη συγκεκριμένη ακίδα να συμπεριφέρεται ως είσοδος/ έξοδος. Σύνταξη: pinmode(pin, mode) Παράμετροι: pin: Ο αριθμός της ακίδας της οποίας η λειτουργία είναι επιθυμητό να αλλάξει. mode: INPUT/OUTPUT 18

24 24 Κεφάλαιο 2 : Arduino Uno digitalwrite(): Γράφει μια υψηλή (HIGH) ή μια χαμηλή (LOW) τιμή σε μια ψηφιακή ακίδα. Αν η ακίδα έχει ρυθμιστεί ως έξοδος με την συνάρτηση pinmode(), τότε η τάση της θα καθορίσει στην αντίστοιχη τιμή: 5V για HIGH και 0V για LOW. Αν η ακίδα έχει ρυθμιστεί ως είσοδος, γράφοντας HIGH στην συνάρτηση digitalwrite() θα ενεργοποιήσει μια εσωτερική pullup-αντίσταση των 20 Κ ενώ γράφοντας LOW θα την απενεργοποιήσει. Σύνταξη: digitalwrite(pin,value) Παράμετροι: pin: Ο αριθμός της ακίδας της οποίας η λειτουργία είναι επιθυμητό να αλλάξει. Value: INPUT/OUTPUT digitalread(): Διαβάζει την τιμή από μια συγκεκριμένη ψηφιακή ακίδα, που είναι είτε HIGH είτε LOW. Σύνταξη: digitalread(pin) Παράμετροι: pin: Ο αριθμός της ακίδας της οποίας η λειτουργία είναι επιθυμητό να αλλάξει. Επιστρέφει: HIGH/LOW 2.15 Αναλογικές ακίδες εισόδου (Analog input pins) Οι ελεγκτές Atmega που χρησιμοποιούνται για την πλατφόρμα Arduino περιέχουν έναν ενσωματωμένο αναλογικό-σε-ψηφιακό μετατροπέα 6 καναλιών. Ο μετατροπέας διαθέτει ανάλυση 10 bit, επιστρέφοντας ακέραιους από 0 έως Ενώ η κύρια λειτουργία της αναλογικής ακίδας για τους περισσότερους χρήστες Arduino είναι να διαβάζει αναλογικούς αισθητήρες, οι αναλογικές ακίδες έχουν επίσης όλες τις λειτουργίες των γενικών ακίδων εισόδου/εξόδου. Οι συναρτήσεις αναλογικής εισόδου και εξόδου είναι οι παρακάτω: analogwrite(): Γράφει μια αναλογική τιμή (PWM κύμα) σε μια ακίδα. Μπορεί να χρησιμοποιηθεί για παράδειγμα να ανάψει ένα LED σε διάφορες φωτεινότητες ή να οδηγήσει ένα κινητήρα σε διάφορες ταχύτητες. Μετά από μια κλήση της analogwrite(), η ακίδα θα δημιουργήσει ένα σταθερό τετραγωνικό κύμα του καθορισμένου κύκλου λειτουργίας μέχρι την επόμενη κλήση της analogwrite() (ή μια κλήση της digitalwrite() ή digitalread() για την ίδια ακίδα). Η συχνότητα του σήματος PWM είναι περίπου 490 Hz. Στις περισσότερες πλατφόρμες Arduino η συνάρτηση αυτή λειτουργεί στις ακίδες 3, 5, 6, 9, 10, 11. Σύνταξη: analogwrite(pin, value) Παράμετροι: pin: Ο αριθμός της ακίδας της οποίας θα γράψει επάνω value: ο κύκλος λειτουργίας μεταξύ 0 και

25 25 Κεφάλαιο 2 : Arduino Uno analogread(): Διαβάζει την τιμή από την καθορισμένη αναλογική ακίδα. Σύνταξη: analogread(pin) Παράμετροι: pin: Ο αριθμός της αναλογικής ακίδας εισόδου από όπου θα διαβάζει Επιστέφει: ακέραιο από 0 έως Υποστήριξη Βιβλιοθηκών (Libraries) Η χρήση βιβλιοθηκών προσφέρουν περισσότερο λειτουργικότητα σε συνεργασία με το υλικό και τον χειρισμό των δεδομένων. Για να χρησιμοποιηθεί μια βιβλιοθήκη σε ένα sketch, μπορεί να επιλεγεί από το μενού Sketch Import Library. Αυτό θα εισάγει μια ή περισσότερες βιβλιοθήκες #include δηλώσεις στην κορυφή του sketch. Επειδή οι βιβλιοθήκες φορτώνονται στην πλακέτα με το sketch, αυξάνουν το μέγεθος του χώρου που καταλαμβάνεται. Εάν ένα sketch δεν χρειάζεται πλέον μια βιβλιοθήκη, απλά μπορούμε να την διαγράψουμε από την κορυφή του κώδικα. Για την εγκατάσταση των βιβλιοθηκών που δεν υπάρχουν ήδη στο λογισμικό, μπορεί να δημιουργηθεί ένας κατάλογος με την ονομασία libraries (βιβλιοθήκες), μέσα στον κατάλογο του sketchbook. Στην συνέχεια αποσυμπιέζουμε τη βιβλιοθήκη εκεί. Παρακάτω ακολουθούν μερικές από τις βιβλιοθήκες που υποστηρίζονται από το Arduino. Επικοινωνίας (δικτύωση και πρωτόκολλα): Messenger - για την επεξεργασία κειμένου με βάση τα μηνύματα από τον υπολογιστή. NewSoftSerial - βελτιωμένη έκδοση της βιβλιοθήκης SoftwareSerial. OneWire - συσκευές ελέγχου (της Dallas Semiconductor) που χρησιμοποιούν το πρωτόκολλο one Wire. PS2Keyboard - διαβάζει χαρακτήρες από ένα πληκτρολόγιο PS2. Simple Message System - στέλνει μηνύματα μεταξύ Arduino και του υπολογιστή SSerial2Mobile - αποστολή μηνυμάτων κειμένου ή χρησιμοποιώντας ένα κινητό τηλέφωνο (μέσω εντολών AT μέσω σειράς λογισμικού) Webduino - επεκτάσιμη βιβλιοθήκη web server (για χρήση με το Arduino Ethernet Shield) X10 - Αποστολή σημάτων X10 μέσω γραμμών εναλλασσόμενου ρεύματος Xbee - για την επικοινωνία με XBees σε λειτουργία API SerialControl - Τηλεχειριστήριο άλλες Arduino πάνω από μια σειριακή σύνδεση Servo για τον έλεγχο κινητήρων τύπου Servo. Ανίχνευσης: Capacitive Sensing - δύο ή περισσότερες ακίδες σε αισθητήρες πυκνωτή Debounce - για την ανάγνωση θορυβώδη ψηφιακών εισόδων (π.χ. από τα κουμπιά). 20

26 26 Κεφάλαιο 2 : Arduino Uno Εμφάνιση και LED: Improved LCD library - διορθώνει σφάλματα αρχικοποίησης LCD στην επίσημη Arduino LCD βιβλιοθήκη. GLCD γραφικές ρουτίνες για LCD με βάση την KS0108 ή ισοδύναμο chipset. LedControl - για τον έλεγχο των LED ή επτά τμημάτων οθόνες με MAX7221 ή MAX7219. LedControl - μια εναλλακτική λύση στη βιβλιοθήκη Matrix για την οδήγηση με πολλαπλούς LED. LedDisplay - τον έλεγχο της HCMS-29xx οθόνη LED. Συχνότητα παραγωγής ήχου: Tone - αναπαράγει κύματα ήχου συχνότητας στο παρασκήνιο σε κάθε καρφίτσα του μικροελεγκτή. Κινητήρες και PWM: TLC κανάλι 12 bit PWM ελεγκτή. Χρονοδιάγραμμα: DateTime - μια βιβλιοθήκη για την παρακολούθηση της τρέχουσας ημερομηνίας και ώρας. MsTime2 - χρησιμοποιεί το χρονόμετρο διακοπής 2 για να ενεργοποιήσει μια δράση κάθε χιλιοστά του δευτερολέπτου Ν. Βοηθητικά προγράμματα: Streaming - μια μέθοδο για την απλοποίηση δηλώσεων εκτύπωσης. Για την συγγραφή των παραπάνω υποκεφαλαίων πολύ χρήσιμες ήταν οι ιστοσελίδες [1], [2], [3], [4] και [5]. 21

27 27 Κεφάλαιο 8: Processing ΚΕΦΑΛΑΙΟ 8 Processing Η Processing είναι μια ανοιχτού κώδικα γλώσσα προγραμματισμού και παρέχει περιβάλλον ανάπτυξης για άτομα που θέλουν να δημιουργήσουν εικόνες, κινούμενα σχέδια και διάφορες αλληλεπιδράσεις. Αρχικά, αναπτύχθηκε ως ένα σχεδιαστικό πρόγραμμα για να διδάξει βασικές αρχές προγραμματισμού μέσα σε ένα οπτικό πλαίσιο, όμως στη συνέχεια εξελίχθηκε σε ένα εργαλείο δημιουργίας ολοκληρωμένων επαγγελματικών εργασιών. Αυτή τη στιγμή υπάρχουν δεκάδες χιλιάδες σπουδαστές, καλλιτέχνες, σχεδιαστές, ερευνητές και χομπιστές που χρησιμοποιούν την Processing για διδασκαλία, προτυποποίηση και παραγωγή. 8.1 Χαρακτηριστικά της Processing Είναι ελεύθερο/ανοικτό λογισμικό με άδεια χρήσης GPL/LGPL. Είναι πολυπλατφορμική, μπορεί να τρέξει σε λειτουργικά συστήματα GNU/Linux, Mac OS X και Windows. Δημιουργεί διαδραστικά προγράμματα, χρησιμοποιώντας δισδιάστατα(2d) ή τρισδιάστατα (3D) γραφικά. Ενσωμάτωση της OpelGL για επιτάχυνση 3D. Δημιουργία stand-alone desktop εφαρμογών και Web-based εφαρμογών (applets). Υπάρχουν αρκετές βιβλιοθήκες επέκτασης της γλώσσας για εφαρμογές ήχου, βίντεο, τεχνητής όρασης, κ.α. Η Processing βασίστηκε στις δυνατότητες γραφικών της γλώσσας προγραμματισμού Java, απλοποιώντας τη χρήση και δημιουργώντας νέα χαρακτηριστικά. 8.2 Έργα βασισμένα στην Processing Η Processing είναι πηγή έμπνευσης για αρκετά έργα ανοιχτού κώδικα. Δύο από τα σημαντικότερα έργα που χρησιμοποιούν τη γλώσσα και το περιβάλλον της είναι η 100

28 28 Κεφάλαιο 8: Processing Wiring και το Arduino, οι οποίες στοχεύουν στον απλό και άμεσο προγραμματισμό hardware. Σε αντίθεση με τη Wiring, το Arduino δημιούργησε πλακέτες απλές, οικονομικές και ευκολότερες στη χρήση, ενώ κατ επέκταση χρησιμοποιεί μια παραλλαγή της γλώσσας Processing για τον προγραμματισμό μικροελεγκτών AVR της εταιρείας Atmel. Άλλα έργα που εμπνεύστηκαν από την Processing είναι τα: Design By Numbers, Fritzing, Mobile Processing, Processing.js, Spde, Processing in Clojure και Processing Monsters. 8.3 Η δομή του προγράμματος Ένα τυπικό πρόγραμμα Processing έχει την παρακάτω δομή: //δήλωση μεταβλητών void setup() { //αρχικοποιήσεις void draw() { //Κώδικας Μενού Εργαλειοθήκη Καρτέλες (Tabs) Επεξεργαστής κειμένου Μηνύματα κονσόλα Εικόνα 9.1: Ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) του Processing 101

29 29 Κεφάλαιο 8: Processing Όπως παρατηρούμε, υπάρχουν δύο βασικές συναρτήσεις σε ένα τυπικό πρόγραμμα της Processing. Η συνάρτηση setup() εκτελείται στην αρχή του προγράμματος και για μια φορά. Χρησιμοποιείται για τις αρχικοποιήσεις ιδιοτήτων και βιβλιοθηκών, για παράδειγμα το μέγεθος της οθόνης, το χρώμα του φόντου, το φόρτωμα εικόνων κ.α. Οι μεταβλητές που δηλώνονται στην setup() δεν είναι προσβάσιμες από άλλες συναρτήσεις, συμπεριλαμβανομένης και της draw() που θα αναλυθεί αμέσως μετά. Η συνάρτηση draw() εκτελείται μετά από την setup() και ο κώδικας που γράφεται μέσα στην συνάρτηση αυτή επαναλαμβάνεται συνεχώς έως ότου τερματιστεί η εφαρμογή ή μέχρι να κληθεί η συνάρτηση noloop(). 8.4 Βιβλιοθήκες και εργαλεία Η Processing συνοδεύεται από μια πληθώρα βιβλιοθηκών και εργαλείων ανοικτού κώδικα, που ως στόχο έχουν να επεκτείνουν τις δυνατότητες της γλώσσας. Υπάρχουν βιβλιοθήκες για κάθε σκοπό όπως για δημιουργία τρισδιάστατων γραφικών, δημιουργία κινουμένων σχεδίων, τεχνητή όραση, μαθηματικά, επεξεργασία ήχου, δημιουργία προσομοιώσεων κ.α. Μπορούμε να κατεβάσουμε αρκετές βιβλιοθήκες από την διεύθυνση Επίσης, υπάρχουν εργαλεία τα οποία μπορούμε να τα βρούμε στο μενού «Tools», τα οποία μας βοηθούν σε πολλές εργασίες. Πρέπει να φορτωθούν οι βιβλιοθήκες Arduinoscope από την ιστοσελίδα και ControlP5 από την ιστοσελίδα Αφού τα κατεβάσουμε πρέπει να κάνουμε αντίγραφο και των δυο βιβλιοθηκών και να επικολλήσουμε στον φάκελο processing-1.5\modes\java\libraries με ονόματα ControlP5 και arduinoscope αντίστοιχα (τα ονόματα έχουν μεγάλη σημασία). Για την συγγραφή αυτού του κεφαλαίου πολύ χρήσιμα ήταν οι ιστοσελίδες [22], [23]. 102

30 30 Κεφάλαιο 9: Βιβλιογραφία Πηγές πληροφοριών ΚΕΦΑΛΑΙΟ 9 Βιβλιογραφία Πηγές πληροφοριών Βιβλία και σημειώσεις που χρησιμοποιήθηκαν: [Α] Δρ. Βολογιαννίδης Σταύρος (2009). Ευφυής Έλεγχος, Θεωρία και Εφαρμογής. [Β] Banzi, M. (2009). Getting Started with Arduino. O'Reilly. Ιστοσελίδες που χρησιμοποιήθηκαν: Arduino [1] [2] [3] [4] [5] 110

31 31 Κεφάλαιο 9: Βιβλιογραφία Πηγές πληροφοριών Processing [22] [23] 111

32 32 ΚΕΦΑΛΑΙΟ 3 Πρακτικό μέρος o Επίσκεψη και περιήγηση στην Ιστοσελίδα o Κατέβασμα και εγκατάσταση εφαρμογής ARDUINO IDE o Επικοινωνία εφαρμογής ARDUINO IDE και της πλακέτας ARDUINO UNO 3.1 Απαραίτητα Υλικά Τα απαραίτητα υλικά που θα χρειαστούμε στη συχέχεια για την ολοκλήρωση του πρακτικού μέρους είναι τα παρακάτω: Arduino Uno BreadBroad Καλώδια USB καλώδια πλατφόρμων Arduino Διάφορα εξαρτήματα : Αντιστάσεις, LED, Ημιαγωγοί κλπ

33 Εφαρμογή 1 η Συνεχές αναβόσβημα ενός Led με περίοδο 1sec, με αλλαγή της στάθμης στην ψηφιακή θύρα Ι/Ο του μικροελεγκτή. (Οι γραμμές με πορτοκαλί είναι κώδικας-εντολές όλα τα άλλα είναι σχόλια) Το Arduino αποτελείται από δεκατρία ψηφιακά pin, τα οποία μπορούμε να τα χρησιμοποιήσουμε το κάθε ένα ξεχωριστά, είτε για είσοδο είτε για έξοδο. Μπορούμε να τα προγραμματίσουμε να συμπεριφέρονται όπως εμείς θέλουμε, αρκεί να κάνουμε τις σωστές δηλώσεις στο κώδικα που θα φορτώσουμε στη πλακέτα. Η έξοδος του κάθε pin μπορεί να προγραμματιστεί να δίνει τιμές HIGH ή LOW. Λέγοντας HIGH ενώνουμε το δυαδικό '1' και έχουμε τάση εξόδου 5V DC, ενώ το LOW είναι το δυαδικό '0' και έχει τάση εξόδου 0V DC (ground). Παρακάτω θα δούμε ένα παράδειγμα για να μπορέσουμε να κατανοήσουμε τον προγραμματισμό των ψηφιακών pin του Arduino. Θα ενώσουμε ένα led στη board και θα το προγραμματίσουμε να ανάβει και να σβήνει σε χρονικά διαστήματα ενός δευτερολέπτου Blink Αυτό το παράδειγμα παρουσιάζει το απλούστερο πράγμα που μπορείτε να κάνετε με ένα Arduino για να δείτε τη φυσική έξοδο: αναβοσβήνει ένα LED. Απαραίτητα Υλικά Arduino Board breadboard LED, αντίσταση 220Ω, Κύκλωμα Για να υλοποιήσετε το κύκλωμα, συνδέστε μια αντίσταση 220Ω με το pin 13. Κατόπιν συνδέστε τον μακρύτερο ακροδέκτη (άνοδο) με την αντίσταση. Συνδέστε το κοντό ακροδέκτη (κάθοδο) με τη γείωση. Κατόπιν συνδέστε το Arduino με τον υπολογιστή σας, ξεκινήστε το πρόγραμμα Arduino, και πληκτρολογείστε τον παρακάτω κώδικα. Τα περισσότερα Arduino ήδη έχουν ένα LED στο pin 13. Εάν τρέχετε αυτό το παράδειγμα χωρίς εξωτερικό LED και αντισταση, πρέπει να δείτε το ενσωματωμένο LED να αναβοσβήνει.

34 34 Για την δημιουργία της εικόνας χρησιμοποιήθηκε το προγραμμα Fritzing. Για περισσότερα παραδείγματα κυκλωμάτων, δείτε: Fritzing project page

35 35 Κώδικας // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα led και της δίνουμε την τιμή 13 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το led. // the setup routine runs once when you press reset: void setup() { // Η συνάρτηση αρχικών ρυθμίσεων του μικροελεγκτή // initialize the digital pin as an output. pinmode(led, OUTPUT); // Ορίζουμε χρησιμοποιώντας την μεταβλητή led, ότι το pin 13 θα λειτουργεί σαν ψηφιακή έξοδος 0-5V // the loop routine runs over and over again forever: void loop() { // Η κύρια ρουτίνα του προγράμματος που εκτελείται συνεχώς digitalwrite(led, HIGH); // turn the LED on (HIGH is the voltage level) // Βγάλε λογικό 1 (5V) στο pin 13, δηλαδή άναψε το led delay(1000); // wait for a second // Συνάρτηση καθυστέρησης χρόνου 1000ms digitalwrite(led, LOW); // turn the LED off by making the voltage LOW //Βγάλε λογικό 0 (0V) στο pin 13, δηλαδή σβήσε το led delay(1000); // wait for a second // Συνάρτηση καθυστέρησης χρόνου 1000ms // Επιστρέφει στην γραμμή digitalwrite(led, HIGH); [Get Code]

36 Εφαρμογή 2 η Άναμμα και σβήσιμο Led ελεγχόμενο από εξωτερικό button με την διαδικασία polling

37 37 // constants won't change. They're used here to // set pin numbers: const int buttonpin = 2; // the number of the pushbutton pin // Ορίζουμε μία σταθερά τύπου Integer (Ακεραίου) με όνομα buttonpin και της δίνουμε την τιμή 2 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το button. const int ledpin = 13; // the number of the LED pin // Ορίζουμε μία σταθερά τύπου Integer (Ακεραίου) με όνομα ledpin και της δίνουμε την τιμή 13 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το led. // variables will change: int buttonstate = 0; // variable for reading the pushbutton status // Ορίζουμε μία μεταβλητή τύπου? Integer (Ακεραίου) με όνομα buttonstate και της δίνουμε αρχικά την τιμή 0 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα για να αποθηκεύουμε την κατάσταση λειτουργίας του button (on-off) void setup() { // Η συνάρτηση αρχικών ρυθμίσεων του μικροελεγκτή // initialize the LED pin as an output: pinmode(ledpin, OUTPUT); // Ορίζουμε χρησιμοποιώντας την μεταβλητή ledpin, ότι το pin 13 θα λειτουργεί σαν ψηφιακή έξοδος 0-5V // initialize the pushbutton pin as an input: pinmode(buttonpin, INPUT); // Ορίζουμε χρησιμοποιώντας την μεταβλητή buttonpin, ότι το pin 2 θα λειτουργεί σαν ψηφιακή είσοδος 0-5V void loop(){ // Η κύρια ρουτίνα του προγράμματος που εκτελείται συνεχώς // read the state of the pushbutton value: buttonstate = digitalread(buttonpin); // Διαβάζουμε την ψηφιακή τιμή που έχει το Pin 2 (εκεί που συνδέεται το button) και την αποθηκεύουμε στην μεταβλητή buttonstate // check if the pushbutton is pressed. // if it is, the buttonstate is HIGH: if (buttonstate == HIGH) { //Ελέγχουμε αν το button είναι πατημένο, αν ναι τότε: // turn LED on: digitalwrite(ledpin, HIGH); // Βγάλε λογικό 1 (5V) στο pin 13, δηλαδή άναψε το led else { //αλλιώς: // turn LED off: digitalwrite(ledpin, LOW); //Βγάλε λογικό 0 (0V) στο pin 13, δηλαδή σβήσε το led

38 Εφαρμογή 3 η Άναμμα και σβήσιμο Led ελεγχόμενο από εξωτερικό button με την διαδικασία Interrupt (Η διαφορά με την προηγούμενη περίπτωση είναι ότι πρίν η ενεργοποίηση γίνεται μετά το loop ενώ τώρα άμεσα με την ενεργοποίηση της διακοπής) const byte LED = 13; // Ορίζουμε μία σταθερά τύπου Integer (Ακεραίου) με όνομα LED και της δίνουμε την τιμή 13 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το led. const byte BUTTON = 2; // Ορίζουμε μία σταθερά τύπου Integer (Ακεραίου) με όνομα BUTTON και της δίνουμε την τιμή 2 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το button. // Interrupt Service Routine (ISR) void pinchange () // Δημιουργία ρουτίνας εξυπηρέτησης διακοπής με όνομα pinchange (δηλώνεται μετά τις μεταβλητές και πριν την ρουτίνα αρχικών ρυθμίσεων του μικροελεγκτή { nointerrupts (); // Απενεργοποίηση των διακοπών με σκοπό να μην συμβεί κάποια άλλη διακοπή για όσο χρόνο εξυπηρετείται η παρούσα διακοπή if (digitalread (BUTTON) == HIGH) // Διαβάζουμε την ψηφιακή τιμή που έχει το Pin 2 (εκεί που συνδέεται το button) και ελέγχουμε αν το button είναι πατημένο, αν ναι τότε digitalwrite (LED, HIGH); // Βγάλε λογικό 1 (5V) στο pin 13, δηλαδή άναψε το led else //αλλιώς: digitalwrite (LED, LOW); //Βγάλε λογικό 0 (0V) στο pin 13, δηλαδή σβήσε το led interrupts (); //Ενεργοποίηση των διακοπών // end of pinchange void setup () // Η συνάρτηση αρχικών ρυθμίσεων του μικροελεγκτή { pinmode (LED, OUTPUT); // so we can update the LED // Ορίζουμε χρησιμοποιώντας την μεταβλητή LED, ότι το pin 13 θα λειτουργεί σαν ψηφιακή έξοδος 0-5V digitalwrite (BUTTON, HIGH); // internal pull-up resistor // Ορίζουμε χρησιμοποιώντας την μεταβλητή BUTTON, ότι το pin 2 θα λειτουργεί σαν ψηφιακή είσοδος 0-5V attachinterrupt (0, pinchange, CHANGE); // attach interrupt handler // Ενεργοποίηση της ρουτίνας που θα εξυπηρετεί την διακοπή. Η πρώτη παράμετρος με τιμή 0 μας ορίζει την πηγή της εξωτερικής διακοπής σύμφωνα με τον παρακάτω πίνακα. Η δεύτερη παράμετρος με τιμή pinchange μας ορίζει την ρουτίνα εξυπηρέτησης της διακοπής ISR που δημιουργήσαμε παραπάνω. Η τρίτη παράμετρος με τιμές LOW, RISING, FALLING, CHANGE μας ορίζει το είδος της αλλαγής λογικής στάθμης που ενεργοποιεί την διακοπή. // end of setup void loop () // Η κύρια ρουτίνα του προγράμματος που εκτελείται συνεχώς { // loop doing nothing // Δεν εκτελείται καμία εντολή αρά δεν γίνεται τίποτα και περιμένουμε να συμβεί μία διακοπή

39 39 Below is a list of interrupts, in priority order, for the Atmega328: 1 Reset 2 External Interrupt Request 0 (pin D2) (INT0_vect) 3 External Interrupt Request 1 (pin D3) (INT1_vect) 4 Pin Change Interrupt Request 0 (pins D8 to D13) (PCINT0_vect) 5 Pin Change Interrupt Request 1 (pins A0 to A5) (PCINT1_vect) 6 Pin Change Interrupt Request 2 (pins D0 to D7) (PCINT2_vect) 7 Watchdog Time-out Interrupt (WDT_vect) 8 Timer/Counter2 Compare Match A (TIMER2_COMPA_vect) 9 Timer/Counter2 Compare Match B (TIMER2_COMPB_vect) 10 Timer/Counter2 Overflow (TIMER2_OVF_vect) 11 Timer/Counter1 Capture Event (TIMER1_CAPT_vect) 12 Timer/Counter1 Compare Match A (TIMER1_COMPA_vect) 13 Timer/Counter1 Compare Match B (TIMER1_COMPB_vect) 14 Timer/Counter1 Overflow (TIMER1_OVF_vect) 15 Timer/Counter0 Compare Match A (TIMER0_COMPA_vect) 16 Timer/Counter0 Compare Match B (TIMER0_COMPB_vect) 17 Timer/Counter0 Overflow (TIMER0_OVF_vect) 18 SPI Serial Transfer Complete (SPI_STC_vect) 19 USART Rx Complete (USART_RX_vect) 20 USART, Data Register Empty (USART_UDRE_vect) 21 USART, Tx Complete (USART_TX_vect) 22 ADC Conversion Complete (ADC_vect) 23 EEPROM Ready (EE_READY_vect) 24 Analog Comparator (ANALOG_COMP_vect) 25 2-wire Serial Interface (I2C) (TWI_vect) 26 Store Program Memory Ready (SPM_READY_vect) Δεν έχουν όλοι οι Arduino διακοπές στα ίδια pins Most Arduino boards have two external interrupts: numbers 0 (on digital pin 2) and 1 (on digital pin 3). The table below shows the available interrupt pins on various boards. Board int.0 int.1 int.2 int.3 int.4 int.5 Uno, Ethernet 2 3 Mega Leonardo Due (see below) The Arduino Due board has powerful interrupt capabilities that allows you to attach an interrupt function on all available pins. You can directly specify the pin number in attachinterrupt().

40 3.5 Εφαρμογή 4 η Διάβασμα αναλογικής τάσης, αναβόσβημα Led1 ανάλογα με την στάθμη της τάσης και έλεγχος φωτεινότητας Led2 μέσω PWM ανάλογα με την στάθμη της τάσης.

41 41 Κώδικας: int sensorpin = A0; // select the input pin for the potentiometer // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα sensorpin και της δίνουμε την τιμή Α0 (το Α0 είναι μία ακέραια σταθερά και αντιστοιχεί σε έναν ακέραιο αριθμό που μας δείχνει το pin, του καναλιού 1 του ADC) με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το ποτενσιόμετρο αναλογική είσοδος. int ledpin1 = 13; // select the pin for the LED1 // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα ledpin1 και της δίνουμε την τιμή 13 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το led1. int sensorvalue = 0; // variable to store the value coming from the sensor // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα sensorvalue και της δίνουμε αρχικά την τιμή 0 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα για να αποθηκεύουμε τις τιμές που διαβάζει ο ADC int ledpin2 = 9; // LED2 connected to digital pin 9 // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα ledpin2 και της δίνουμε την τιμή 9 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το led2. PWM Output int outputvalue = 0; // value output to the PWM (analog out) // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα outputvalue και της δίνουμε αρχικά την τιμή 0 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα για να δίνουμε τις αναλογικές τιμές φωτεινότητας για το led2 void setup() { // Η συνάρτηση αρχικών ρυθμίσεων του μικροελεγκτή // declare the ledpin1 as an OUTPUT: pinmode(ledpin1, OUTPUT); // Ορίζουμε χρησιμοποιώντας την μεταβλητή ledpin1, ότι το pin 13 θα λειτουργεί σαν ψηφιακή έξοδος 0-5V pinmode(ledpin2, OUTPUT); // Ορίζουμε χρησιμοποιώντας την μεταβλητή ledpin2, ότι το pin 9 θα λειτουργεί σαν ψηφιακή έξοδος 0-5V void loop() { // Η κύρια ρουτίνα του προγράμματος που εκτελείτε συνεχώς // read the value from the sensor: sensorvalue = analogread(sensorpin); // Διάβασμα της αναλογικής τιμής της τάσης στο pin Α0 του ADC και απόδοση της τιμής στην μεταβλητή sensorvalue // turn the ledpin on digitalwrite(ledpin1, HIGH); // Βγάλε λογικό 1 (5V) στο pin 13, δηλαδή άναψε το led1 // stop the program for <sensorvalue> milliseconds: delay(sensorvalue); // Συνάρτηση καθυστέρησης χρόνου σε ms ανάλογου με την τιμή της αναλογικής τάσης από 0 έως 1023 ms // turn the ledpin off: digitalwrite(ledpin1, LOW); // Βγάλε λογικό 0 (0V) στο pin 13, δηλαδή σβείσε το led1 // stop the program for for <sensorvalue> milliseconds:

42 42 delay(sensorvalue); // Συνάρτηση καθυστέρησης χρόνου σε ms ανάλογου με την τιμή της αναλογικής τάσης από 0 έως 1023 ms //fade section // map it to the range of the analog out: outputvalue = map(sensorvalue, 0, 1023, 0, 255); // Συνάρτηση αντιστοίχησης μετατροπής των τιμών της αναλογικής τάσης από σε εύρος τιμών από και απόδοση των νέων τιμών στην μεταβλητή outputvalue // change the analog out value: analogwrite(ledpin2, outputvalue); // Δημιουργία παλμών PWM στο pin 9 (led2) ανάλογους με την τιμή του ADC με εύρος από 0 έως 255 // wait 2 milliseconds before the next loop // for the analog-to-digital converter to settle // after the last reading: delay(2); // // Συνάρτηση καθυστέρησης χρόνου 2ms με σκοπό την επανεκκίνηση του ADC Διαμόρφωση πλάτος παλμού Στο παρακάτω γράφημα, οι πράσινες γραμμές αντιπροσωπεύουν μια κανονική χρονική περίοδο. Μια κλήση της analogwrite() είναι σε μια κλίμακα από 0 έως 255, έτσι ώστε για παράδειγμα, η κλήση analogwrite(255) ζητά το 100% του κύκλου λειτουργίας, και η analogwrite(127) το 50% του κύκλου λειτουργίας (στο μισό χρόνο) [12]. Διαμόρφωση πλάτους παλμού(pwm)

43 Εφαρμογή 5 η Διάβασμα αναλογικής τάσης, άναμμα Led1 ή Led2 ανάλογα με την στάθμη της τάσης, και αποστολή δεδομένων σειριακά στον Η/Υ Κώδικας: int sensorpin = A0; // select the input pin for the potentiometer // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα sensorpin και της δίνουμε την τιμή Α0 (το Α0 είναι μία ακέραια σταθερά και αντιστοιχεί σε έναν ακέραιο αριθμό που μας δείχνει το pin, του καναλιού 1 του ADC) με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το ποτενσιόμετρο αναλογική είσοδος. int ledpin1 = 13; // select the pin for the LED1 // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα ledpin1 και της δίνουμε την τιμή 13 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το led1. int sensorvalue = 0; // variable to store the value coming from the sensor // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα sensorvalue και της δίνουμε αρχικά την τιμή 0 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα για να αποθηκεύουμε τις τιμές που διαβάζει ο ADC int ledpin2 = 9; // LED2 connected to digital pin 9 // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα ledpin2και της δίνουμε την τιμή 9 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το led2. int outputvalue = 0; // value output // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα outputvalue και της δίνουμε αρχικά την τιμή 0 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα void setup() { // Η συνάρτηση αρχικών ρυθμίσεων του μικροελεγκτή // declare the ledpin1 as an OUTPUT: pinmode(ledpin1, OUTPUT); // Ορίζουμε χρησιμοποιώντας την μεταβλητή ledpin1, ότι το pin 13 θα λειτουργεί σαν ψηφιακή έξοδος 0-5V

44 44 pinmode(ledpin2, OUTPUT); // Ορίζουμε χρησιμοποιώντας την μεταβλητή ledpin1, ότι το pin 9 θα λειτουργεί σαν ψηφιακή έξοδος 0-5V // initialize serial communications at 9600 bps: Serial.begin(9600); // Αρχικοποίηση της σειριακής επικοινωνίας με ρυθμό 9600 void loop() { // Η κύρια ρουτίνα του προγράμματος που εκτελείτε συνεχώς // read the value from the sensor: sensorvalue = analogread(sensorpin); // Διάβασμα της αναλογικής τιμής της τάσης στο pin Α0 του ADC και απόδοση της τιμής στην μεταβλητή sensorvalue // turn the ledpin on if (sensorvalue < 511 ) { // Εάν η τιμή του ADC είναι μικρότερη από 511 δηλαδή 2,5 volt τότε: digitalwrite (ledpin1, HIGH); // Βγάλε λογικό 1 (5V) στο pin 13, δηλαδή άναψε το led1 digitalwrite (ledpin2, LOW); // Βγάλε λογικό 0 (0V) στο pin 9, δηλαδή σβήσε το led2 else //αλλιώς: { digitalwrite (ledpin1, LOW); // Βγάλε λογικό 0 (0V) στο pin 13, δηλαδή σβήσε το led1 digitalwrite(ledpin2, HIGH); // Βγάλε λογικό 1 (5V) στο pin 9, δηλαδή άναψε το led2 //serial section // print the results to the serial monitor: // Τμήμα σειριακής επικοινωνίας Serial.print("\t sensor = " ); Serial.println(sensorValue); // wait 2 milliseconds before the next loop // for the analog-to-digital converter to settle // after the last reading: delay(2);

45 Εφαρμογή 6 η Διάβασμα αναλογικής τάσης, μόνιμη αποθήκευση τιμών στην EEPROM, και αποστολή δεδομένων σειριακά στον Η/Υ διαβάζοντας την EEPROM Κώδικας: #include <EEPROM.h> //Φόρτωση της βιβλιοθήκης με τις σχετικές συναρτήσεις για επικοινωνία με την EEPROM // the current address in the EEPROM (i.e. which byte // we're going to write to next) int addr = 0; // Ορίζουμε μία μεταβλητή τύπου ακεραίου με όνομα addr και αρχική τιμή 0 με σκοπό να την χρησιμοποιήσουμε για να καθορίζουμε την διεύθυνση εγγραφής στην μνήμη // start reading from the first byte (address 0) of the EEPROM int address = 0; // Ορίζουμε μία μεταβλητή τύπου ακεραίου με όνομα address και αρχική τιμή 0 με σκοπό να την χρησιμοποιήσουμε για να καθορίζουμε την διεύθυνση ανάγνωσης από την μνήμη byte value; // Ορίζουμε μία μεταβλητή τύπου byte με όνομα value για να αποθηκεύουμε τα δεδομένα της μνήμης int sensorpin = A0; // select the input pin for the potentiometer // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα sensorpin και της δίνουμε την τιμή Α0 (το Α0 είναι μία ακέραια σταθερά και αντιστοιχεί σε έναν ακέραιο αριθμό που μας δείχνει το pin, του καναλιού 1 του ADC) με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το ποτενσιόμετρο αναλογική είσοδος. int sensorvalue = 0; // variable to store the value coming from the sensor // Ορίζουμε μία μεταβλητή τύπου Integer (Ακεραίου) με όνομα sensorvalue και της δίνουμε αρχικά την τιμή 0 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα για να αποθηκεύουμε τις τιμές που διαβάζει ο ADC void setup() { // Η συνάρτηση αρχικών ρυθμίσεων του μικροελεγκτή Serial.begin(9600); // Αρχικοποίηση της σειριακής επικοινωνίας με ρυθμό 9600 void loop() { // Η κύρια ρουτίνα του προγράμματος που εκτελείτε συνεχώς // read the value from the sensor: sensorvalue = analogread(sensorpin); ); // Διάβασμα της αναλογικής τιμής της τάσης στο pin Α0 του ADC και απόδοση της τιμής στην μεταβλητή sensorvalue

46 46 // need to divide by 4 because analog inputs range from // 0 to 1023 and each byte of the EEPROM can only hold a // value from 0 to 255. int val = analogread(sensorpin) / 4; //Ορισμός μίας τοπικής μεταβλητής τύπου ακέραιου με όνομα val και απόδοση της αναλογικής τιμής της τάσης από το pin Α0 του ADC αφού διαιρεθεί με 4 αφού η μνήμη είναι 8 bit // write the value to the appropriate byte of the EEPROM. // these values will remain there when the board is // turned off. EEPROM.write(addr, val); // Εγγραφή της μνήμης στην διεύθυνση που μας δείχνει η τιμή της μεταβλητής addr, την τιμή της μεταβλητής val // advance to the next address. there are 512 bytes in // the EEPROM, so go back to 0 when we hit 512. addr = addr + 1; // Αύξηση της διεύθυνσης κατά ένα (επόμενη διεύθυνση) if (addr == 512) // Εάν η διεύθυνση είναι η τελευταία αφού η EEPROM έχει χωρητικότητα 512 byte, τότε: addr = 0; // Πήγαινε στην αρχική διεύθυνση delay(100); // Καθυστέρηση 100ms value = EEPROM.read(address); // Ανάγνωση της μνήμης στην διεύθυνση που μας δείχνει η τιμή της μεταβλητής address, και απόδοση της τιμής στην μεταβλητή value Serial.print(address); // Αποστολή σειριακά της τιμής της διεύθυνσης της μνήμης Serial.print("\t"); Serial.print(value, DEC); // Αποστολή σειριακά της τιμής του περιέχομένου της διεύθυνσης της μνήμης Serial.println(); // advance to the next address of the EEPROM address = address + 1; // Αύξηση της διεύθυνσης κατά ένα (επόμενη διεύθυνση) // there are only 512 bytes of EEPROM, from 0 to 511, so if we're // on address 512, wrap around to address 0 if (address == 512) // Εάν η διεύθυνση είναι η τελευταία αφού η EEPROM έχει χωρητικότητα 512 byte, τότε: address = 0; // Πήγαινε στην αρχική διεύθυνση delay(500); // Καθυστέρηση 500ms

47 Εφαρμογή 7 η Δημιουργία μουσικών τόνων «Twinkle Twinkle Little Star» Κώδικας: int speakerpin = 9; // Ορισμός μεταβλητής τύπου ακεραίου με όνομα speakerpin και απόδοση τιμής 9 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε που θα συνδέσουμε το buzzer int length = 15; // the number of notes // Ορισμός μεταβλητής τύπου ακεραίου με όνομα length και απόδοση τιμής 15 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε τον αριθμό από νότες που θα έχει το μουσικό κομμάτι char notes[] = "ccggaagffeeddc "; // a space represents a rest // Ορισμός πίνακα με τιμές τύπου χαρακτήρα (char) και απόδοση τιμών ccggaagffeeddc τις νότες που θα έχει το μουσικό κομμάτι int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 ; // Ορισμός πίνακα με τιμές τύπου ακεραίου και απόδοση τιμών 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 για τις φορές που παίζετε η κάθε νότα που θα έχει το μουσικό κομμάτι int tempo = 300; // Ορισμός μεταβλητής τύπου ακεραίου με όνομα tempo και απόδοση τιμής 300 με σκοπό να την χρησιμοποιήσουμε παρακάτω στον κώδικα και να δηλώσουμε τον ρυθμό (ταχύτητα) παιξίματος που θα έχει το μουσικό κομμάτι void playtone(int tone, int duration) { // Ορισμός συνάρτησης με όνομα playtone και ακέραιες παραμέτρους tone (khz) και duration με λειτουργία την δημιουργία του τόνου μιας νότας for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalwrite(speakerpin, HIGH); delaymicroseconds(tone); digitalwrite(speakerpin, LOW);

48 48 delaymicroseconds(tone); void playnote(char note, int duration) {// Ορισμός συνάρτησης με όνομα playnote και παραμέτρους note και duration με λειτουργία τo παίξιμο του τόνου μιας νότας char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' ; // Οι νότες int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 ; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) { if (names[i] == note) { playtone(tones[i], duration); // Χρησιμοποιεί την προηγούμενη συνάρτηση playtone void setup() { pinmode(speakerpin, OUTPUT); void loop() { for (int i = 0; i < length; i++) { if (notes[i] == ' ') { delay(beats[i] * tempo); // rest else { playnote(notes[i], beats[i] * tempo); // pause between notes delay(tempo / 2);

49 Εφαρμογή 8 η Απεικόνιση χαρακτήρων σε Display LCD

50 50 Κώδικας: /* LiquidCrystal Library - Hello World Demonstrates the use a 16x2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface. This sketch prints "Hello World!" to the LCD and shows the time. The circuit: * LCD RS pin to digital pin 7 * LCD Enable pin to digital pin 6 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3) Library originally added 18 Apr 2008 by David A. Mellis library modified 5 Jul 2009 by Limor Fried (http://www.ladyada.net) example added 9 Jul 2009 by Tom Igoe modified 22 Nov 2010 by Tom Igoe This example code is in the public domain. */ // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins

51 51 LiquidCrystal lcd(7, 6, 5, 4, 3, 2); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setcursor(0, 1); // print the number of seconds since reset: lcd.print(millis() / 1000); Εφαρμογών συνέχεια... Ελεύθερη δημιουργία εφαρμογής από τους εκπαιδευόμενους. Επίδειξη σύνθετων εφαρμογών Τέλος Σεμιναρίου

52 52 Εικόνες - Σχέδια

53 53 Εμπρόσθια όψη πλακέτας arduino Πίσω όψη πλακέτας arduino

54 54 ATmega328

55 55 Hitachi HD44780 driver

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΔΡΑΣΤΗΡΙΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO- 01a ΔΡΑΣΤΗΡΙΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO- 01a Βασικό κύκλωμα προγραμματισμός μικροελεγκτή Πλακέτα Arduino, 1 Να δημιουργήσετε και να προγραμματίσετε ένα πολύ απλό σύστημα που να αναβοσβήνει ένα λαμπάκι (έξοδος)

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

Lab 1: Experimenting on Arduino & AI Sense

Lab 1: Experimenting on Arduino & AI Sense Lab 1: Experimenting on Arduino & AI Sense 1. Εισαγωγή A. Arduino Robokit Το Robokit, όπως και όλες οι πλακέτες τύπου Arduino, λειτουργεί χάρη σε έναν μικροελεγκτή. Ως μικροελεγκτή μπορούμε να φανταστούμε

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

Α.Ε.Ι. ΠΕΙΡΑΙΑ Τ.Τ Φεβρουάριος 2017

Α.Ε.Ι. ΠΕΙΡΑΙΑ Τ.Τ Φεβρουάριος 2017 Α.Ε.Ι. ΠΕΙΡΑΙΑ Τ.Τ Φεβρουάριος 2017 Τεχνολογικό Εκπαιδευτικό Εκπαιδευτικό Ίδρυμα Ίδρυμα Πειραιά Πειραιά Τμήμα Ηλεκτολογίας Τμήμα Ηλεκτρολογίας Υλοποίηση Υλοποίηση ενός σύστημα Ενός Συναγερμού Αυτοκίνητου

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

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

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

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

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

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

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

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

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

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

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

FOSSCOMM 2013 6ο Συνέδριο Κοινοτήτων Ανοιχτού Λογισμικού Σάββατο 20 Απριλίου 2013. Ομάδα Σχολής Ικάρων Εργαστήριο Arduino FOSSCOMM 2013 6ο Συνέδριο Κοινοτήτων Ανοιχτού Λογισμικού Σάββατο 20 Απριλίου 2013 Ομάδα Σχολής Ικάρων Εργαστήριο Arduino Arduino Workshop LAB 1 : Παιχνίδι με έναν αισθητήρα φωτός Τι θα χρειαστούμε: 1 LED

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

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

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

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

12. Διακοπές Interrupts (IRQ)

12. Διακοπές Interrupts (IRQ) 2. Διακοπές Interrupts (IRQ) Πίνακας Ι. Χειρισμός διακοπών στον ATmega6. A/A Program address Source Vector Interrupt definition External Pin, Power-on Reset, Brown-outReset, Watchdog Reset, and JTAG AVR

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 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

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

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

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 1. Προγραμματισμός Φυσικών Συστημάτων. Νέα Ψηφιακά Αντικείμενα Σκοπός Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 1 ΜΕΤΡΩΝΤΑΣ ΑΠΟΣΤΑΣΗ ΜΕ ΤΟΝ ΑΙΣΘΗΤΗΡΑ ΥΠΕΡΗΧΩΝ (SR04). Ψηφιακά Αντικείμενα Μικροελεγκτής Προγραμματισμός Φυσικών Συστημάτων Νέα Ψηφιακά Αντικείμενα Αισθητήρες

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

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

Κωνσταντίνος Γκαλονάκης. Arduino: Προγραμματισμός στην πράξη Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξη 1 Σύνδεση του Arduino με τον Η/Υ και προγραμματισμός αυτού. 1. Εγκατάσταση περιβάλλοντος Arduino IDE Για να προγραμματίσετε τη μονάδα σας θα

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστηριακές σημειώσεις για το μάθημα: «Εισαγωγή στην Μηχατρονική»

Εργαστηριακές σημειώσεις για το μάθημα: «Εισαγωγή στην Μηχατρονική» Εργαστηριακές σημειώσεις για το μάθημα: «Εισαγωγή στην Μηχατρονική» Τμήμα Μηχανολογίας Δρ. Φασουλάς Γιάννης, jfasoulas@staff.teicrete.gr Τ.Ε.Ι. Κρήτη, Σχολή Τεχνολογικών Εφαρμογών, Ηράκλειο Κρήτης, (2013)

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

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

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

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

Τεχνολογικό+Eκπαιδευτικό+Ίδρυμα+Kρήτης+ TMHMA+MHXANOΛOΓIAΣ+ (

Τεχνολογικό+Eκπαιδευτικό+Ίδρυμα+Kρήτης+ TMHMA+MHXANOΛOΓIAΣ+ ( Τεχνολογικό+Eκπαιδευτικό+Ίδρυμα+Kρήτης+ TMHMA+MHXANOΛOΓIAΣ+ ( + + Εισαγωγή+στην+Μηχατρονική++ + Εισαγωγή+στους+μικροελεγκτές++ και+στη+υπολογιστική+πλατφόρμα+arduino+ + + + + Δρ.+Φασουλάς+Γιάννης+ jfasoulas@staff.teicrete.gr(

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

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

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

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

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

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

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

«ΥΛΟΠΟΙΗΣΗ ΑΣΥΡΜΑΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΩΝ» ΒΥΣΑΝΣΙΩΤΗΣ ΣΤΑΥΡΟΣ Α.Μ ΚΑΡΒΟΥΝΙΔΟΥ ΑΓΓΕΛΙΚΗ Α.Μ

«ΥΛΟΠΟΙΗΣΗ ΑΣΥΡΜΑΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΩΝ» ΒΥΣΑΝΣΙΩΤΗΣ ΣΤΑΥΡΟΣ Α.Μ ΚΑΡΒΟΥΝΙΔΟΥ ΑΓΓΕΛΙΚΗ Α.Μ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΥΛΟΠΟΙΗΣΗ ΑΣΥΡΜΑΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΩΝ» ΒΥΣΑΝΣΙΩΤΗΣ ΣΤΑΥΡΟΣ Α.Μ. 10139 ΚΑΡΒΟΥΝΙΔΟΥ ΑΓΓΕΛΙΚΗ Α.Μ. 10057 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ ΤΑΤΣΗΣ ΓΕΩΡΓΙΟΣ ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ Κατάλογος

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

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται Τομέας: Ηλεκτρονικός Εκπαιδευτικός: Μπουλταδάκης Στέλιος Μάθημα: Συλλογή και μεταφορά δεδομένων μέσω Η/Υ, Αισθητήρες-Ενεργοποιητές Αντικείμενο: α) Μέτρηση θερμοκρασίας με το αισθητήριο LM335 και μεταφορά

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

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

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

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

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

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL Δυνατότητα ανάπτυξης, μεταγλώττισης και εκτέλεσης προγραμμάτων στη PASCAL. Κατανόηση της σύνταξης των προτάσεων της PASCAL. Κατανόηση της εντολής εξόδου για

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

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

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

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

WDT και Power Up timer

WDT και Power Up timer Ο ΜΙΚΡΟΕΛΕΓΚΤΗΣ PIC O μικροελεγκτής PIC κατασκευάζεται από την εταιρεία Microchip. Περιλαμβάνει τις τρεις βασικές κατηγορίες ως προς το εύρος του δίαυλου δεδομένων (Data Bus): 8 bit (σειρές PIC10, PIC12,

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

2. Δήλωση μεταβλητών. #include #include unsigned char i=0xa0; register unsigned char i asm("r3");

2. Δήλωση μεταβλητών. #include <avr/io.h> #include <util/delay.h> unsigned char i=0xa0; register unsigned char i asm(r3); 2. Δήλωση μεταβλητών Οι μεταβλητές είναι τα βασικά στοιχεία που διαπραγματεύεται ένα πρόγραμμα. Περιέχουν τιμές ή δεδομένα και μπορεί να έχουν μια σταθερή τιμή ή το περιεχόμενό τους να εξαρτάται από τις

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

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ασύγχρονη σειριακή

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

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

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

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

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

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

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

Δομή (Structure) Προγραμματισμός Arduino. Η λειτουργία setup()

Δομή (Structure) Προγραμματισμός Arduino. Η λειτουργία setup() Προγραμματισμός Arduino Δομή (Structure) Ο κώδικας που φορτώνεται στη μνήμη του Arduino μετά την μετάφρασή του στον υπολογιστή μας, εκτελείται σε δύο φάσεις. Πρώτα εκτελείται η λειτουργία setup() για μία

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

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

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

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

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

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

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

10. Πληκτρολόγιο matrix 4x4

10. Πληκτρολόγιο matrix 4x4 10. Πληκτρολόγιο matrix 4x4 Το πληκτρολόγιο matrix 4x4 αποτελείται από 16 πλήκτρα διακόπτες τα οποία είναι συνδεδεμένα μεταξύ τους ανά 4 σε τέτοια διάταξη ώστε, με το ένα άκρο τους να σχηματίζουν 4 σειρές

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

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

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

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

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

Παιδιά κάτω των 13 ετών δε θα πρέπει να χρησιμοποιούν το κιτ χωρίς επίβλεψη. Μη συνδέετε την κύρια πλακέτα σε εξωτερική τροφοδοσία μεγάλης ισχύος. 2 ΠΕΡΙΕΧΟΜΕΝΑ 01. Robotale (Arduino-Compatible) 02. Ράστερ 830 οπών 03. Κουτί αποθήκευσης 04. Κόκκινα leds (τεμ. 5) 05. Κίτρινα leds (τεμ. 5) 06. Πράσινα leds (τεμ. 5) 07. Αντιστάτες 220 Ohm (τεμ. 8) 08.

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

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

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

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

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

ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ

ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΗΜΙΑΓΩΓΙΚΩΝ ΜΝΗΜΩΝ. ΒΑΣΙΚΗ ΛΕΙΤΟΥΡΓΙΑ RAM CMOS. ΤΥΠΟΙ ΚΥΤΤΑΡΩΝ ΑΡΧΕΣ

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

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

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

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

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

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2. Προγραμματισμός Φυσικών Συστημάτων. Συστήματα Πραγματικών Εφαρμογών. Νέα Ψηφιακά Αντικείμενα Σκοπός Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2 ΤΟ ΣΥΣΤΗΜΑ ΣΑΡΩΣΗΣ ΤΟΥ ΟΠΤΙΚΟΥ ΠΕΔΙΟΥ. Ψηφιακά Αντικείμενα Μικροελεγκτής Προγραμματισμός Φυσικών Συστημάτων Συστήματα Πραγματικών Εφαρμογών Νέα Ψηφιακά

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

Βιβλιοθήκη για οθόνη LCD

Βιβλιοθήκη για οθόνη LCD Βιβλιοθήκη για οθόνη LCD Η βιβλιοθήκη LCD βρίσκεται προεγκατεστημένη στο περιβάλλον προγραμματισμού του Arduino (IDE) και για την ορθή της λειτουργία ακολουθούμε την παρακάτω διαδικασία: Ø Δηλώνουμε τη

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

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 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 ΕΡΓΑΣΤΗΡΙΑΚΗ

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

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

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

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

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

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

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

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

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

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

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

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

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

Παραδείγµατα χρήσης του µικροελεγκτή Arduino Εφαρµογές για το εργαστήριο Μέρος 2 ο :Οδήγηση Κινητήρων DC(PM)

Παραδείγµατα χρήσης του µικροελεγκτή Arduino Εφαρµογές για το εργαστήριο Μέρος 2 ο :Οδήγηση Κινητήρων DC(PM) Μηχατρονικά Συστήματα Ι Τμήμα Μηχανολόγων Μηχανικών Τ.Ε. Τ.Ε.Ι. Κρήτης Παραδείγµατα χρήσης του µικροελεγκτή Arduino Εφαρµογές για το εργαστήριο Μέρος 2 ο :Οδήγηση Κινητήρων DC(PM) Δρ. Φασουλάς Γιάννης,

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

Το υλικό του υπολογιστή

Το υλικό του υπολογιστή Το υλικό του υπολογιστή Ερωτήσεις 1. Τι αντιλαμβάνεστε με τον όρο υλικό; Το υλικό(hardware) αποτελείται από το σύνολο των ηλεκτρονικών τμημάτων που συνθέτουν το υπολογιστικό σύστημα, δηλαδή από τα ηλεκτρονικά

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

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

Εργαστηριακές ασκήσεις λογικών κυκλωμάτων 11 A/D-D/A 11.1 Θεωρητικό μέρος 11 A/D-D/A 11.1.1 Μετατροπέας αναλογικού σε ψηφιακό σήμα (A/D converter) με δυαδικό μετρητή Σχ.1 Μετατροπέας A/D με δυαδικό μετρητή Στο σχήμα 1 απεικονίζεται σε block diagram ένας

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 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 στην

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

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

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17 ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ Μνήμες (Memory) - Είναι ημιαγώγιμα κυκλώματα που μπορούν να αποθηκεύσουν ένα σύνολο από δυαδικά ψηφία (bit). - Μια μνήμη αποθηκεύει λέξεις (σειρές από bit). - Σε κάθε

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

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ Οι λογικές πράξεις που υποστηρίζει η Assembly του 8088 είναι : Πράξη AND Πράξη OR Πράξη NOT Πράξη XOR Με τις λογικές πράξεις μπορούμε

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

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή 8.1 Τακτική σάρωση (Polling) Ας υποθέσουμε ότι έχουμε ένα πληκτρολόγιο συνδεδεμένο σε ένα υπολογιστικό σύστημα. Το πληκτρολόγιο είναι μια μονάδα εισόδου.

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

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

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

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

Εισαγωγή στο Εργαστήριο Υλικού

Εισαγωγή στο Εργαστήριο Υλικού ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Εισαγωγή στο Εργαστήριο Υλικού Διδάσκoντες: Δρ. Γιώργος Ζάγγουλος και Δρ. Παναγιώτα Μ. Δημοσθένους Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΛΕΓΚΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΛΕΓΚΤΩΝ ATMEL AVR8 ΠΟΡΛΙΔΑΣ ΔΗΜΗΤΡΙΟΣ ATMEL AVR Atmega16 Χαρακτηριστικά Μικροελεγκτής 8-bit υψηλής απόδοσης και χαμηλής κατανάλωσης Προοδευμένη αρχιτεκτονική RISC (Reduced instruction

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

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

Εμμανουήλ Πουλάκης. Προγραμματίζοντας με τον μικροελεγκτή Arduino Εμμανουήλ Πουλάκης Προγραμματίζοντας με τον μικροελεγκτή Arduino Ηράκλειο Ιανουάριος 2015 Έκδοση 1η Ηράκλειο, Ιανουάριος 2015 ISBN 978-960-93-6760-8 Αυτό το υλικό διατίθεται με άδεια Creative Commons

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής) ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α Γενικού Λυκείου (Μάθημα Επιλογής) Σύγχρονα Υπολογιστικά Συστήματα τους υπερυπολογιστές (supercomputers) που χρησιμοποιούν ερευνητικά εργαστήρια τα μεγάλα συστήματα (mainframes)

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

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

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

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται

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

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

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

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

Προγραμματισμός Ρομπότ

Προγραμματισμός Ρομπότ Προγραμματισμός Ρομπότ Arduino & προγραμματισμός INPUT vs. OUTPUT Για το μικροελεγκτή (microcontroller ). Inputs είναι ένα σήμα ή πληροφορία που φτάνει στον ελεγκτή. Output είναι κάθε σήμα που βγαίνει

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

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

ΕΡΩΤΗΣΕΙΣ ΣΥΝΤΗΡΗΣΗ Η/Υ

ΕΡΩΤΗΣΕΙΣ ΣΥΝΤΗΡΗΣΗ Η/Υ ΕΡΩΤΗΣΕΙΣ ΣΥΝΤΗΡΗΣΗ Η/Υ 1) Τι είναι μητρική πλακέτα; Είναι η βασική ηλεκτρονική πλακέτα ενός Η/Υ πάνω στην οποία συνδέονται όλα τα εξαρτήματα ενός Η/Υ όπως ο επεξεργαστής, η μνήμη, οι κάρτες επέκτασης,

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

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

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

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

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

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

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

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

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου ΚΕΦΑΛΑΙΟ 1 Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου Υπολογιστικά συστήματα σχεδιάστηκαν για να καλύψουν συγκεκριμένες ανάγκες σε συγκεκριμένη χρονική στιγμή και βοηθούν στη συνολική πρόοδο της τεχνολογίας Φουκαράκη

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