"ΑΥΤΟΚΙΝΟΥΜΕΝΟ ΟΧΗΜΑ ΕΥΡΕΣΗΣ ΒΕΛΤΙΣΤΗΣ ΔΙΑΔΡΟΜΗΣ ΛΑΒΥΡΙΝΘΟΥ"

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

Download ""ΑΥΤΟΚΙΝΟΥΜΕΝΟ ΟΧΗΜΑ ΕΥΡΕΣΗΣ ΒΕΛΤΙΣΤΗΣ ΔΙΑΔΡΟΜΗΣ ΛΑΒΥΡΙΝΘΟΥ""

Transcript

1 ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ ΣΧΟΛΗ ΜΗΧΑΝΙΚΩΝ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΣΧΕΔΙΑΣΗΣ ΚΑΙ ΠΑΡΑΓΩΓΗΣ "ΑΥΤΟΚΙΝΟΥΜΕΝΟ ΟΧΗΜΑ ΕΥΡΕΣΗΣ ΒΕΛΤΙΣΤΗΣ ΔΙΑΔΡΟΜΗΣ ΛΑΒΥΡΙΝΘΟΥ" ΟΝΟΜΑΤΑ ΦΟΙΤΗΤΩΝ: ΕΥΔΑΙΜΩΝ ΝΙΚΟΛΑΟΣ ΝΙΚΟΛΟΥΔΑΚΟΣ ΒΑΣΙΛΕΙΟΣ ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΜΙΧΑΗΛ ΠΑΠΟΥΤΣΙΔΑΚΗΣ ΑΙΓΑΛΕΩ, ΑΠΡΙΛΙΟΣ 2019

2 ΔΗΛΩΣΗ ΣΥΓΓΡΑΦΕΑ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ Οι κάτωθι υπογεγραμμένοι Ευδαίμων Νικόλαος του Γεωργίου και Νικολουδάκος Βασίλειος του Δημητρίου, φοιτητές του Τμήματος Μηχανικών Βιομηχανικής Σχεδίασης και Παραγωγής του Πανεπιστημίου Δυτικής Αττικής, πριν αναλάβουν την εκπόνηση της Πτυχιακής Εργασίας μου, δηλώνω ότι ενημερώθηκαν για τα παρακάτω: «Η Πτυχιακή Εργασία (Π.Ε) αποτελεί προϊόν πνευματικής ιδιοκτησίας τόσο του συγγραφέα, όσο και του Ιδρύματος και θα πρέπει να έχει μοναδικό χαρακτήρα και πρωτότυπο περιεχόμενο. Απαγορεύεται αυστηρά οποιοδήποτε κομμάτι κειμένου της να εμφανίζεται αυτούσιο ή μεταφρασμένο από κάποια άλλη δημοσιευμένη πηγή. Κάθε τέτοια πράξη αποτελεί προϊόν λογοκλοπής και εγείρει θέμα Ηθικής Τάξης για τα πνευματικά δικαιώματα του άλλου συγγραφέα. Αποκλειστικός υπεύθυνος είναι ο συγγραφέας της Π.Ε, ο οποίος φέρει και την ευθύνη των συνεπειών, ποινικών και άλλων, αυτής της πράξης. Πέραν των όποιων ποινικών ευθυνών του συγγραφέα, σε περίπτωση που το Ίδρυμα του έχει απονείμει Πτυχίο, αυτό ανακαλείται με απόφαση της Συνέλευσης του Τμήματος. Η Συνέλευση του Τμήματος με νέα απόφασή της, μετά από αίτηση του ενδιαφερόμενου, του αναθέτει εκ νέου την εκπόνηση Π.Ε με άλλο θέμα και διαφορετικό επιβλέποντα καθηγητή. Η εκπόνηση της εν λόγω Π.Ε πρέπει να ολοκληρωθεί εντός τουλάχιστον ενός ημερολογιακού 6μήνου από την ημερομηνία ανάθεσής της. Ο Δηλών Ο Δηλών Ημερομηνία ii

3 Θα θέλαμε να ευχαριστήσουμε ιδιαίτερα τους καθηγητές μας. κύριο Παπουτσιδάκη Μιχάλη και κύριο Χατζόπουλο Μάκη για την πολύτιμη και πραγματικά ανεκτίμητη βοήθεια που μας προσέφεραν κατά την διάρκεια της εργασίας μας. Επίσης, θα θέλαμε να ευχαριστήσουμε τη Σοφία Λαλέα που μας βοήθησε, ως φιλόλογος, μετά τη συγγραφή της πτυχιακής μας, διορθώνοντάς μας εκφραστικά, ορθογραφικά και συντακτικά λάθη. Τέλος θα θέλαμε να ευχαριστήσουμε θερμά την Αναστασία Ευδαίμων που μας βοήθησε πάρα πολυ, χάρη στο ταλέντο της στη ζωγραφική και στο σχεδιασμό, με τα μηχανολογικά σχέδια του ρομποτικού αμαξιού μας (εικόνες 5 και 6). iii

4 ΠΕΡΙΛΗΨΗ Το θέμα της παρούσης πτυχιακής εργασίας είναι η εύρεση και επίλυση της βέλτιστης διαδρομής ενός λαβυρίνθου, χρησιμοποιώντας ένα ρομποτικό αμαξάκι το οποίο είναι προγραμματισμένο με βάση το μικροελεγκτή Arduino. Σαν εργασία, η επίλυση ενός λαβυρίνθου μπορεί να έχει μεγάλη χρησιμότητα σε πολλές εφαργογές. Παράδειγμα εφαρμογής θα μπορούσε να είναι η πλοήγηση: ας πούμε ότι έχει πιάσει κάπου φωτιά και πρέπει ιπτάμενα μη επανδρωμένα αεροσκάφη (drones) να πάνε από την πιο γρήγορη διαδρομή για να τη σβήσουν. Άλλο παράδειγμα εφαρμογής θα μπορούσε να είναι η εξερεύνηση και πλοήγηση ταυτοχρόνως: ενδεχομένως σε αρχαιολογικές ανασκαφές σε σπήλαια. Θα μπορούσε να χρησιμοποιηθεί και απο το στρατό ή την πυροσβεστική για αποστολές εντοπισμού και διάσωσης. Όσον αφορά τη δική μας εργασία τώρα, ο λαβύρινθος δεν έχει κάποια έξοδο. στην ουσία ορίζεται μέσω του κώδικα μας με συντεταγμένες ένα αρχικό σημείο εκκίνησης, το οποίο είναι το ίδιο για κάθε περίπτωση, καθώς και ένα τελικό σημείο (όποιο θέλουμε εμείς) μέσα στο λαβύρινθο, στο οποίο το αμαξάκι θα πρέπει να καταλήξει και μάλιστα επιλέγοντας την ταχύτερη διαδρομή. Η μέθοδος που εφαρμόστηκε για να λειτουργήσει σωστά ο κώδικας μας είναι η συνεργασία δύο αλγορίθμων, του Flood Fill [1] και του αλγόριθμου εύρεσης επόμενης κίνησης. Το Flood Fill ορίζει σε όλες τις θέσεις του λαβυρίνθου έναν αριθμό, που δείχνει την απόσταση του από τον τελικό του προορισμό (ο οποίος μετά από κάθε κίνηση του αυτοκινήτου αλλάζει κατάλληλα για το επόμενο βήμα), οπότε το όχημα γνωρίζει προς τα πού πρέπει να κατευθυνθεί και με τον αλγόριθμο εύρεσης επόμενης κίνησης εκτελεί τις κατάλληλες κινήσεις. Όμως για να λειτουργήσει σωστά αυτός ο αλγόριθμος πρέπει να γνωρίζουμε τον χάρτη του λαβυρίνθου, κάτι που στην αρχή της διαδικασίας δεν ισχύει. Άρα, αφού καταφέρει και χαρτογραφήσει όλους τους τοίχους που υπάρχουν στον λαβύρινθο, γυρίζει στην αρχική του θέση για να υπολογίσει, αλλά και να εκτελέσει την βέλτιστη διαδρομή από τα δύο σημεία. ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ Ρομπότ, μικροελεγκτής Arduino, Εκπαιδευτική πλατφόρμα, Επίλυση λαβυρίνθου iv

5 ABSTRACT The theme of our dissertation is to solve a labyrinth with the optimal (faster) route using a robotic car that is programmed based on the Arduino microcontroller. In particular, the labyrinth does not have an exit, in fact we define through our code coordinates with an initial starting point which is the same for each instance and then choose an endpoint (whichever we want) within the labyrinth in which the robotic car should end up and even choose the fastest route. The method we applied for our code to function properly is the collaboration of two algorithms, the flood fill and the next move finder algorithm. The flood fill defines, in all the positions of the maze, a number indicating its distance from its final destination (which after each movement of the car changes appropriately for the next step), so the vehicle knows where to go and the next move finder algorithm performs these appropriate moves. However, for this algorithm to work properly, we need to know the labyrinth map, which is not the case at the beginning of the process. So after the robotic car maps all the walls within the maze, it returns to its original position to calculate and execute the optimal path of the two points. ΚΕΥWORDS Robot, Arduino, Educational platform, Maze Solving v

6 ΠΕΡΙΕΧΟΜΕΝΑ ΔΗΛΩΣΗ ΣΥΓΓΡΑΦΕΑ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ... ii ΠΕΡΙΛΗΨΗ... iv ΛΕΞΕΙΣ ΚΛΕΙΔΙΑ... iv ABSTRACT... v ΚΕΥWORDS... v ΠΕΡΙΕΧΟΜΕΝΑ... vi ΚΑΤΑΛΟΓΟΣ ΠΙΝΑΚΩΝ... vii ΚΑΤΑΛΟΓΟΣ ΔΙΑΓΡΑΜΜΑΤΩΝ... viii ΕΙΣΑΓΩΓΗ... 1 ΘΕΩΡΗΤΙΚΟ ΥΠΟΒΑΘΡΟ... 2 ΜΕΘΟΔΟΛΟΓΙΑ... 4 ΣΧΕΔΙΑΣΗ ΚΑΙ ΚΑΤΑΣΚΕΥΗ ΥΛΙΚΟΥ ΜΕΡΟΥΣ (HARDWARE) Λειτουργικά Μέρη Κατασκευής Μηχανολογικό σχέδιο Ηλεκτρονικό κύκλωμα Λίστα υλικών Μικροελεγκτής Arduino Mega 2560 (1) DC Motors FM90 (2) Αισθητήρες Υπερήχων (HC-SR04) (3) Breadboard Motor Driver L293D 1A (1) ΑΝΑΛΥΣΗ ΚΑΙ ΣΥΓΓΡΑΦΗ ΛΟΓΙΣΜΙΚΟΥ (SOFTWARE) Διάγραμμα Ροής (Flow Chart) Κώδικας Προγράμματος ΑΠΟΤΕΛΕΣΜΑΤΑ ΣΥΜΠΕΡΑΣΜΑΤΑ ΒΙΒΛΙΟΓΡΑΦΙΑ vi

7 ΚΑΤΑΛΟΓΟΣ ΠΙΝΑΚΩΝ Πίνακας 1-1ο Παράδειγμα Flood Fill αριθμός Πίνακας 2-1ο Παράδειγμα Flood Fill αριθμός Πίνακας 3-1ο Παράδειγμα Flood Fill αριθμός Πίνακας 4-1ο Παράδειγμα Flood Fill αριθμός Πίνακας 5-1ο Παράδειγμα Flood Fill αριθμός Πίνακας 6-2ο παράδειγμα Flood Fill αριθμός Πίνακας 7-2ο παράδειγμα Flood Fill αριθμός Πίνακας 8-2ο παράδειγμα Flood Fill αριθμός Πίνακας 9-2ο παράδειγμα Flood Fill αριθμός Πίνακας 10-2ο παράδειγμα Flood Fill αριθμός Πίνακας 11-2ο παράδειγμα Flood Fill αριθμός Πίνακας 12 - Παράδειγμα Εύρεσης Επόμενης Κίνησης αρχική θέση... 7 Πίνακας 13 - Παράδειγμα Εύρεσης Επόμενης Κίνησης 1η κίνηση... 7 Πίνακας 14 - Παράδειγμα Εύρεσης Επόμενης Κίνησης 2η κίνηση... 7 Πίνακας 15 - Παράδειγμα Εύρεσης Επόμενης Κίνησης τελική θέση... 8 Πίνακας 16 - Κύρια δαδικασία αρχική θέση... 9 Πίνακας 17 - Κύρια διαδικασία 1η σάρωση Πίνακας 18 - Κύρια διαδικασία 1ο FloodFill Πίνακας 19 - Κύρια διαδικασία 1η κίνηση Πίνακας 20 - Κύρια διαδικασία 3ο FloodFill Πίνακας 21 - Κύρια διαδικασία θέση (1,1) Πίνακας 22 - Κύρια διαδικασία θέση (1,1) FloodFill Πίνακας 23 - Κύρια διαδικασία τέλος 1ου σταδίου Πίνακας 24 - Κύρια διαδικασία FloodFill για επιστροφή στην αρχική θέση Πίνακας 25 - Κύρια διαδικασία τελικό στάδιο vii

8 ΚΑΤΑΛΟΓΟΣ ΔΙΑΓΡΑΜΜΑΤΩΝ Εικόνα 1 - Λαβύρινθος... 9 Εικόνα 2 - Σχέδιο Λαβυρίνθου Εικόνα 3 - Διαγώνια όψη λαβυρίνθου Εικόνα 4 - Εμπρόσθια όψη λαβυρίνθου Εικόνα 5 - Κάτοψη μηχανολογικού σχέδιο οχήματος Εικόνα 6 - Αριστερή όψη μηχανολογικού σχεδίου οχήματος Εικόνα 7 - Ηλεκτρονικό κύκλωμα [9] Εικόνα 8 - Σχέδιο συνδεσμολογίας [9] Εικόνα 9 - Arduino Mega 2560 [4] Εικόνα 10 - DC κινητήρας σε θήκη Servo [5] Εικόνα 11 - Αισθητήριο HC-SR04 [6] Εικόνα 12 Breadboard [7] Εικόνα 13 - L2935 1A [8] Εικόνα 14 - Διάγραμμα Ροής βασικής λειτουργίας του οχήματος Εικόνα 15 - Διάγραμμα ροής Scan Εικόνα 16 - Διάγραμμα ροής Flood Fill Εικόνα 17 - Διάγραμμα ροής Εύρεσης Επόμενης Κίνησης viii

9 ΕΙΣΑΓΩΓΗ Η πτυχιακή μας εργασία, όπως φαίνεται και απο τον τίτλο, είναι η επίλυση ενός λαβυρίνθου από ένα ρομποτικό αμαξάκι με την καλύτερη και πιο γρήγορη διαδρομή. Σαν εργασία είναι κατά βάση εκπαιδευτική, γιατί ερχόμαστε σε επαφή με διάφορα είδη μικροελεγκτών και μαθαίνουμε τον τρόπο με τον οποίο δουλεύον αλλά και πώς προγραμματίζονται για να δουλεύουν όπως θέλουμε εμείς: π.χ. η γλώσσα προγραμματισμού που χρησιμοποιείται καθώς και οι εντολές και οι βιβλιοθήκες που εφαρμόζονται στην εκάστοτε γλώσσα. Στην προκειμένη εργασία, όπως προαναφέραμε και στην περίληψη, χρησιμοποιούμε τον μικροελεγκτή Arduino που προγραμματίζεται σε γλώσσα C/C++. Επίσης μαθαίνουμε να φτιάχνουμε ηλεκτρονικά κυκλώματα, μαθαίνουμε τη λειτουργεία του κάθε εξαρτήματος (π.χ ένα ολοκληρωμένο τι είναι; ή τι είναι ένας αισθητήρας υπερύθρων; ) και πειραματιζόμαστε με αυτα. Ασχολούμαστε επίσης και με ένα μηχανολογικό κομμάτι της όλης κατασκευής, τους κινητήρες, που πρέπει να γνωρίζουμε πώς λειτουργούν και ποιο είδος πρέπει να χρησιμοποιήσουμε κάθε φορά, αναλόγως το τι θέλουμε να φτιάξουμε. Στην προκειμένη πτυχιακή λοιπόν, η επίλυση του λαβυρίνθου έγινε με τη χρήση και τη συνεργασία δύο αλγορίθμων. Τον αλγόριθμο Flood Fill που τον χρησιμοποιήσαμε για την εύρεση της βέλτιστης θέσης, αλλά και σαν βοήθημα γενικά για τις κινήσεις που θα κάνει το ρομποτικό μας αμαξάκι, και τον αλγόριθμο εύρεσης επόμενης κίνησης, που τον χρησιμοποιόυμε μέτα απο το Flood Fill, εφόσον δουλεύει με τα στοιχεία που θα παίρνει απο το Flood Fill, για να βρει τη βέλτιστη διαδρομή. 1

10 ΘΕΩΡΗΤΙΚΟ ΥΠΟΒΑΘΡΟ Ένα ρομποτικό αμαξάκι που επιλύει ένα λαβύρινθο σαν εργασία, για να δουλέψει σωστά, απαιτεί κατά βάση πολύ καλές γνώσεις προγραμματισμού. Πρέπει κάποιος να είναι πολύ καλά εξοικειωμένος με τις υπάρχουσες εκπαιδευτικές πλατφόρμες-μικροελεγκτές. Για παράδειγμα, στη συγκεκριμένη εργασία χρησιμοποιούμε Arduino. Ανάλογα με το μικροελεγκτή που χρησιμοποιούμε, κατ επέκταση προγραμματίζουμε κατάλληλα. ( π.χ. το Arduino προγραμματίζεται σε γλώσσα C/C++, άρα χρειάζεται καλή γνώση της C/C++, ενώ αν χρησιμοποιούσαμε μικροελεγκτή Raspberry θα το προγραμματίζαμε σε γλώσσα μηχανής Python). Σε αυτό το κομμάτι επίσης, πρέπει να προσέξουμε τις διάφορες εκδόσεις γλωσσών προγραμματισμού και τις αναβαθμίσεις τους ή αναβαθμίσεις σε ήδη υπάρχουσες εκδόσεις που κυκλοφορούν. Αυτό συμβαίνει διότι, εντολές που μπορεί να χρησιμοποιούμε ή διάφορες βιβλιοθήκες που χρησιμοποιούμε, μπορεί να μην δουλεύουν πλέον σωστά ή να μην λειτουργούν στην εκδοση που χρησιμοποιούμε εμείς ή να ορίζονται με διαφορετικό τρόπο. Στον προγραμματισμό, στο μεγαλύτερο βαθμό των γλωσσών που υπάρχουν (αν όχι όλων), ο ορισμός διαφόρων εντολών και η σύνταξή τους παίζει πολύ μεγάλο ρόλο. Επίσης είναι πολύ χρήσιμο να χρησιμοποιούμε πάντα τις τελευταίες εκδόσεις βιβλιοθηκών και εντολών, γιατί είναι σχεδόν πάντα πιο εύκολες στη χρήση και μας διευκολύνουν περισσότερο γιατί είναι πιο λειτουργικές. Επιπρόσθετα, είναι απαραίτητες βασικές γνώσεις ηλεκτρολογικών και ηλεκτρονικών, αφού θα χρειαστεί να συνδέσουμε σωστά τα διάφορα εξαρτήματα που χρησιμοποιούμε. Ακόμα, είναι πολύ βασικό να γνωρίζουμε πώς να φτιάχνουμε ηλεκτρονικά κυκλώματα, διότι έτσι αποφεύγονται πολλά συνδεσμολογικά λάθη και είναι πολύ πιο εφικτό, αν έχουμε κάνει κάποιο λάθος, να το εντοπίσουμε πιο εύκολα και γρήγορα. Επίσης, γνωρίζοντας καλά ηλεκτρονικά, μπορούμε να καταλάβουμε καλύτερα κάθε εξάρτημα τι κάνει, ακόμη και αν δεν το έχουμε ξαναχρησιμοποιήσει ποτέ. Επιπλέον, μπορούμε να κατανοήσουμε κάθε εξάρτημα τι απαιτήσεις έχει: π.χ. πόσο ρεύμα και τάση καταναλώνει και πόσο από τα δύο χρειάζεται αντιστοίχως για να λειτουργήσει, χωρίς να το «κάψουμε». Η γνώση βασικών εννοιών και ενδείξεων ηλεκτρολογικών, (π.χ. A=ampere, V=Volt που είναι συμβολισμοί ρεύματος και τάσης), θα μας βοηθήσει να καταλάβουμε ποια θα πρέπει να είναι η συνδεσμολογία μας. Ως αποτέλεσμα, γνωρίζοντας τα παραπάνω, θα πρέπει να είμαστε σε θέση να ξέρουμε να διαβάζουμε το εγχειρίδιο απο κάθε εξάρτημα, για να γνωρίζουμε τις απαιτήσεις του αλλά και τον τρόπο με τον οποίο δουλεύει. Ακόμα, θα χρειαστεί να κατέχουμε και κάποιες βασικές μηχανολογικές γνώσεις, κυρίως όσον αφορά το κομμάτι των κινητήρων. Είναι πολύ σημαντικό να γνωρίζουμε τα είδη των κιντήρων που θα χρησιμοποιήσουμε, αλλα και τον τρόπο με τον οποίο δουλεύουν. Στην προκειμένη περίπτωση, χρησιμοποιούμε DC κινητήρες σε συσκευασία σερβομηχανισμού, γιατί είναι πολύ πιο ακριβείς σε σύγκριση με τους απλούς DC κινητήρες, δουλεύουν καλύτερα και χωρίς καθυστερήσεις, καθώς είναι συνεχείς, συγκριτικά με τους απλούς Servo κινητήρες 2

11 που δουλεύουν με παλμό, (όπου μπορεί να έχουμε απώλεια σημάτων) και μπορούμε επίσης να ελέγξουμε πιο εύκολα την ταχύτητα τους με τη χρήση PWM. Τέλος, απαραίτητη είναι και η γνώση υπολογιστικής νοημοσύνης, τόσο για την σύνταξη των αλγορίθμων που χρησιμοποιούνται από το όχημα, όσο και για την κατανόηση των κινήσεων που εκτελούνται κατά τη διάρκεια της διαδικασίας. Στην προκειμένη εργασία, χρησιμοποιήσαμε δύο αλγορίθμους σε συνδυασμό: τον αλγόριθμο Flood Fill και τον αλγόριθμο εύρεσης επόμενης κίνησης. Γενικά, κάποιοι άλλοι τρόποι επίλυσης είναι: ο ακολουθητής τοίχου ή αλλιώς κανόνας αριστερού ή δεξιού χεριού (Wall Follower [2]). Η λογική αυτού το αλγόριθμου στηρίζεται στο εξής: οι τοίχοι του λαβύρινθου πρέπει να είναι συνδεδεμένοι μεταξύ τους από την είσοδο μέχρι την έξοδο, έτσι ώστε να τους ακολουθεί το αμαξάκι και να είναι τοποθετημένοι με συγκεκριμένο τρόπο, είτε αριστερά είτε δεξιά, έτσι ώστε το αμαξάκι, αφού επιλέξει να στρίβει μόνο δεξιά ή αριστερά,(αναλόγως πώς έχει οριστεί απο τον κώδικά του), ακολουθώντας τους τοίχους, θα βρεί κάποια στιγμή την έξοδο. Στην δική μας περίπτωση, δεν ήταν εφικτή αυτή η μέθοδος, διότι οι τοίχοι μας δεν είναι συνδεδεμένοι μεταξύ τους (οπότε το αμαξάκι θα παγιδευόταν μέσα στο λαβύρινθο σε ατελείωτους κύκλους εξαιτίας τών κενών μεταξύ των τοίχων). Άλλωστε, θέλαμε την επίλυση του λαβυρίνθου με τη βέλτιστη διαδρομή. Άλλη μια μέθοδος είναι οι «τυχαίες κινήσεις» (Random Mouse / Robot algorithm [3]). Πρόκειται για έναν πολύ απλό αλγόριθμο, γιατί το αμαξάκι ακολουθεί συνεχώς τυχαίες διαδρομές, χωρίς να κρατάει μνήμη των διαδρομών που έχει ακολουθήσει, και επιλέγει πάντα τυχαίες κατευθύνσεις σε διασταυρώσεις που μπορεί να συναντήσει. Παρόλο που θα βρεί την έξοδο εν τέλει μετά από πολλά περάσματα, είναι πολύ χρονοβόρα διαδικασία και στην δική μας περίπτωση θέλαμε τη βέλτιστη και ταχύτερη διαδρομή. 3

12 ΜΕΘΟΔΟΛΟΓΙΑ Όπως προαναφέραμε και στην περίληψη της πτυχιακής, οι δύο μέθοδοι που εφαρμόσαμε για την αντιμετώπιση του πρόβληματος, δηλαδή την επίλυση του λαβυρίνθου, είναι ο αλγόριθμος Flood Fill και ο αλγόριθμος εύρεσης επόμενης κίνησης. Αυτοί οι δύο αλγόριθμοι συνεργάζονται για να μπορεί κάθε φορά το όχημα να εκτελεί την σωστή κίνηση. Πριν προχωρήσουμε όμως, ας δούμε πρώτα πώς λειτουργεί ο κάθε αλγόριθμος ξεχωριστά. Η βασική λειτουργία του Flood Fill είναι να γεμίσει έναν πίνακα με τιμές, που αντιστοιχούν στην απόσταση του κάθε τετραγώνου του πίνακα από ένα τετράγωνο που του ορίζουμε εμείς (το ονομάζουμε θέση ενδιαφέροντος). Να αναφέρουμε πως κάθε τετράγωνο του πίνακα αντιστοιχεί σε ένα κελί του πραγματικού λαβυρίνθου. Παρακάτω ακολουθεί ένα απλό παράδειγμα (χωρίς εμπόδια) με έναν πίνακα 4x4. Διαλέγουμε σαν θέση ενδιαφέροντος το (3,3) και ο αλγόριθμος τοποθετεί σε αυτή την θέση την τιμή 0. 0 Πίνακας 1-1ο Παράδειγμα Flood Fill αριθμός 0 Επόμενο βήμα είναι να τοποθετηθούν οι αμέσως μεγαλύτερες τιμές από το 0 στα γειτονικά τετράγωνα. Οπότε θα έχουμε Πίνακας 2-1ο Παράδειγμα Flood Fill αριθμός 1 Και συνεχίζουμε με παρόμοιο τρόπο έως ότου γεμίσει πλήρως ο πίνακας με τιμές Πίνακας 3-1ο Παράδειγμα Flood Fill αριθμός 2 4

13 Πίνακας 4-1ο Παράδειγμα Flood Fill αριθμός 3 Καταλήγοντας στο Πίνακας 5-1ο Παράδειγμα Flood Fill αριθμός 4 Οπότε πλέον γνωρίζουμε την απόσταση όλων των τετραγώνων από την θέση ενδιαφέροντος (3,3). Όμως, σε ένα πρακτικό πρόβλημα θα υπάρχουν και εμπόδια ανάμεσα στα τετράγωνα (τοίχοι), οι οποίοι αλλάζουν την πολυπλοκότητα του αλγορίθμου. Ακολουθεί και ένα παράδειγμα με τοίχους, πάλι όμως σε πίνακα 4x4 με θέση ενδιαφέροντος το σημείο (3,3). (Με έντονη μαύρη γραμμή έχουμε τοίχο, ενώ με διακεκομμένη γραμμή ελεύθερο πέρασμα). 0 Πίνακας 6-2ο παράδειγμα Flood Fill αριθμός 0 Αυτή την φορά ο αλγόριθμος βλέπει τους τοίχους και τοποθετεί ανάλογα τους αριθμούς Πίνακας 7-2ο παράδειγμα Flood Fill αριθμός 1 Παρατηρούμε πως αυτή την φορά δεν προστέθηκε τιμή στο τετράγωνο δεξιά εξαιτίας του τοίχου που υπάρχει ανάμεσα. Και ο αλγόριθμος συνεχίζει να προσθέτει τιμές. 1 5

14 Πίνακας 8-2ο παράδειγμα Flood Fill αριθμός Πίνακας 9-2ο παράδειγμα Flood Fill αριθμός Πίνακας 10-2ο παράδειγμα Flood Fill αριθμός 4 Και καταλήγουμε στο Πίνακας 11-2ο παράδειγμα Flood Fill αριθμός 5 Οπότε βλέπουμε ότι η ύπαρξη τοίχων μεγαλώνει τις αποστάσεις των τετραγώνων και κάνει πιο πολύπλοκο τον λαβύρινθο. Να σημειωθεί πως, σαν μοναδική συνθήκη στην δημιουργία του λαβυρίνθου, είχαμε πει ότι θα έπρεπε και τα 49 τετράγωνα να είναι προσβάσιμα τουλάχιστον από μία πλευρά. Τώρα που είδαμε τον αλγόριθμο Flood Fill, ας προχωρήσουμε και στον επόμενο, που είναι ο αλγόριθμος εύρεσης επόμενης κίνησης. Για να λειτουργήσει σωστά, χρειάζεται τα στοιχεία από τον Flood Fill, οπότε θα χρησιμοποιήσουμε τον τελικό πίνακα από το προηγούμενο παράδειγμα. Σε αυτό το σενάριο έχουμε το όχημα μας στην θέση (4,1) και θέλουμε να βρούμε την αλληλουχία κινήσεων για να φτάσουμε στο (3,3). (Με βελάκι συμβολίζεται η θέση και κατεύθυνση του οχήματος) 6

15 Πίνακας 12 - Παράδειγμα Εύρεσης Επόμενης Κίνησης αρχική θέση Το όχημα διαβάζει τις τιμές των τεσσάρων γειτονικών τετραγώνων. Σε περίπτωση που υπάρχει τοίχος σε κάποια πλευρά, τότε δίνει σαν τιμή τετραγώνου έναν μεγάλο αριθμό για να μην επηρρεάσει τις υπόλοιπες τιμές και διαλέγει το τετράγωνο με την μικρότερη τιμή σαν επόμενη θέση του. Οπότε στην περίπτωση μας έχει να διαλέξει μεταξύ του πάνω τετραγώνου (με τιμή 4) και του δεξιά (με τιμή 2). Διαλέγει το τετράγωνο δεξιά, γιατί έχει την μικρότερη τιμή, αλλά πριν καταφέρει να μεταφερθεί σωστά, πρέπει να λάβει υπόψιν και την τρέχουσα κατεύθυνση του. Στο παράδειγμα το όχημα κοιτάει βόρεια, άρα θα πρέπει πρώτα να στρίψει δεξιά και μετά να πραγματοποιήσει ευθεία κίνηση. Σε άλλη περίπτωση θα μπορούσε να ήταν στραμμένο ανατολικά, οπότε να ήταν άσκοπη η δεξιά στροφή και να χρειαζόταν μόνο η ευθεία κίνηση. Γενικά, το όχημα πραγματοποιεί τις εξής κινήσεις: Ευθεία κίνηση 30 εκατοστά, δεξιά στροφή 90 ο, αριστερή στροφή 90 ο και αναστροφή 180 ο. Οπότε αφού εκτελέσει τις δύο κινήσεις θα βρεθεί στην παρακάτω θέση Πίνακας 13 - Παράδειγμα Εύρεσης Επόμενης Κίνησης 1η κίνηση Με παρόμοιο τρόπο θα ψάξει να βρει την επόμενη κίνησή του. Αυτή την φορά έχει να επιλέξει μεταξύ του αριστερού τετραγώνου, από όπου ήρθε (με τιμή 3) και του δεξιού (με τιμή 1). Αφού επιλέξει το δεξί και δει και την κατεύθυνση του, θα αποφασίσει απλά να κάνει ευθεία κίνηση μιας και η επόμενη θέση είναι στην πορεία της κατεύθυνσής του. Έτσι βρισκόμαστε σε αυτή την θέση Πίνακας 14 - Παράδειγμα Εύρεσης Επόμενης Κίνησης 2η κίνηση 7

16 Πλέον έχει φτάσει ένα τετράγωνο μακριά από την τελική θέση, την οποία και επιλέγει σαν επόμενη κίνηση. Βάσει της θέσης του, θα πρέπει να εκτελέσει πρώτα αριστερή στροφή και μετά ευθεία κίνηση καταλήγοντας στην τελική θέση Πίνακας 15 - Παράδειγμα Εύρεσης Επόμενης Κίνησης τελική θέση Τα συγκεκριμένα παραδείγματα είναι απλά, αλλά αντικατοπτρίζουν πλήρως την λογική που χρησιμοποιείται στην κύρια διαδικασία μας. Παρακάτω ακολουθεί παράδειγμα με την χρήση της μεθόδου στον πραγματικό λαβύρινθο. Στην αρχή της διαδικασίας, το όχημα έχει στην μνήμη του σημειωμένους μόνο τους εξωτερικούς τοίχους του λαβυρίνθου, με τις εσωτερικές θέσεις να είναι κενές. Αυτές θα γεμίζουν κατά την διάρκεια της χαρτογράφησης με δεδομένα από τα αισθητήρια του οχήματος. Τα αισθητήρια διαβάζονται κάθε φορά πριν εκτελεστεί μία κίνηση από το όχημα. Επίσης, το όχημα είναι προγραμματισμένο να περάσει τουλάχιστον μία φορά από το κάθε τετράγωνο του λαβυρίνθου, αρχίζοντας να μετράει από την πάνω αριστερή γωνία (1,1) και καταλλήγοντας στην κάτω δεξιά (7,7) σημειώνοντας παράλληλα και στην μνήμη του από ποιές θέσεις έχει ήδη περάσει για να αποφύγει περιττές κινήσεις. Όταν πέρασει και από τις 49 θέσεις και έχει χαρτογραφήσει πλήρως τον λαβύρινθο, τελειώνει το πρώτο και μεγαλύτερο στάδιο της διαδικασίας. Στο δεύτερο στάδιο θα πρέπει να επιστρέψει από την τρέχουσα θέση του στην αρχική. Αυτό επιτυγχάνεται με την χρήση του Flood Fill μία φορά, έχοντας σαν θέση ενδιαφέροντος το (7,1) που είναι η αρχική θέση, καθώς και με την εκτέλεση του αλγορίθμου εύρεσης επόμενης κίνησης, τόσες φορές όση είναι και η απόσταση του οχήματος από την θέση ενδιαφέροντος. Όταν καταφέρει και επιστρέψει, τελειώνει και το δεύτερο στάδιο και μπαίνουμε πλέον στο τελευταίο και σημαντικότερο που είναι η εκτέλεση της βέλτιστης διαδρομής από το σημείο (7,1) μέχρι την τελική θέση. Πάλι το όχημα θα χρησιμοποιήσει τον Flood Fill για να βρει την διαδρομή και θα εκτελέσει τις κινήσεις με την βοήθεια της εύρεσης επόμενης κίνησης. Παρακάτω ακολουθούν αναλυτικότερα τα βασικά βήματα της επίλυσης της διαδικασίας. Αρχικά δίνεται η απεικόνιση/κάτοψη του λαβυρίνθου μας. 8

17 Εικόνα 1 - Λαβύρινθος Μετά, προκειμένου να επιλυθεί, μετασχηματίζεται σε έναν πίνακα 7x7, όπου κάθε κελί αντιστοιχεί σε ένα τετράγωνο του λαβυρίνθου. Και έτσι έχουμε τον παρακάτω πίνακα (όπου έχουμε είναι η θέση του οχήματος). Πίνακας 16 - Κύρια δαδικασία αρχική θέση Παρατηρούμε πως στον χάρτη μας δεν έχουμε στοιχεία, γιατί ακόμα δεν έχει γίνει χαρτογράφηση. Πρώτη δουλειά που κάνει το όχημα, είναι να σαρώσει με τα τρία αισθητήρια που διαθέτει το περιβάλλον του, για την ύπαρξη τοίχων γύρω από το τετράγωνο που βρίσκεται. Οπότε θα έχουμε αυτό: 9

18 Πίνακας 17 - Κύρια διαδικασία 1η σάρωση Μετά την σάρωση, ακολουθεί η εκτέλεση κάποιας κίνησης. Αυτή ορίζεται από δύο εμφωλευμένες for loop που έχουμε στον κώδικα. Συγκεκριμένα πρέπει να ξεκινήσει να διαβάζει από την θέση (1,1) και να καταλήξει στην (7,7), αγνοώντας όμως όποιες θέσεις έχει ήδη περάσει από το αντίστοιχο τετράγωνο σε κάποια προηγούμενη διαδρομή. Άρα αυτή την στιγμή πρέπει να πάει το όχημα στην θέση (1,1), οπότε εκτελώντας τον Flood Fill με θέση ενδιαφέροντος το (1,1) έχουμε τον ακόλουθο πίνακα Πίνακας 18 - Κύρια διαδικασία 1ο FloodFill Βάσει του αλγορίθμου εύρεσης επόμενης κίνησης, το όχημα θα κινηθεί προς τα πάνω και θα εκτελέσει την επόμενη σάρωση. 10

19 Πίνακας 19 - Κύρια διαδικασία 1η κίνηση Αφού δεν αλλάζουν τα δεδομένα του χάρτη, το όχημα θα συνεχίσει τις κινήσεις του σαρώνοντας παράλληλα σε κάθε νέα θέση που βρίσκεται Πίνακας 20 - Κύρια διαδικασία 3ο FloodFill Προσπερνώντας κάποια βήματα βρισκόμαστε πλέον στην θέση (1,1) 11

20 Πίνακας 21 - Κύρια διαδικασία θέση (1,1) Βλέπουμε πως ο λαβύρινθος έχει αρχίσει να σχηματίζεται και στον χάρτη μας. Επόμενο βήμα είναι να πάει το όχημα στην θέση (1,2), αλλά έχει ήδη περάσει από την συγκεκριμένη θέση, οπότε την αγνοεί, όπως και τις (1,3) και (1,4). Με στόχο πλέον την (1,5) εκτελεί Flood Fill με θέση ενδιαφέροντος την (1,5) Πίνακας 22 - Κύρια διαδικασία θέση (1,1) FloodFill Το όχημα υπολογίζει την ταχύτερη διαδρομή και την εκτελεί μέχρι το (1,5). 12

21 Στο τέλος θα πρέπει η εικόνα του χάρτη μας να είναι ίδια με τον πραγματικό λαβύρινθο Πίνακας 23 - Κύρια διαδικασία τέλος 1ου σταδίου Εδώ τελειώνει το πρώτο στάδιο και το όχημα περνάει στο δεύτερο: πρέπει δηλαδή να επιστρέψει στην αρχική θέση, οπότε εκτελεί Flood Fill με θέση ενδιαφέροντος το (7,1) με το παρακάτω αποτέλεσμα Πίνακας 24 - Κύρια διαδικασία FloodFill για επιστροφή στην αρχική θέση Άρα το όχημα έχει βρει την διαδρομή που πρέπει να εκτελέσει και την ακολουθεί για να τελειώσει και το δεύτερο στάδιο. 13

22 Στο τελικό στάδιο, θα πρέπει να μετακινηθεί από την αρχική του θέση (7,1) στην τελική (5,6). Οπότε εκτελεί για μια τελευταία φορά τον Flood Fill με θέση ενδιαφέροντος το (5,6) Πίνακας 25 - Κύρια διαδικασία τελικό στάδιο Πλέον είναι εύκολο να υπολογίσει και να εκτελέσει την βέλτιστη διαδρομή, κάτι που θα φέρει την διαδικασία μας εις πέρας. 14

23 ΣΧΕΔΙΑΣΗ ΚΑΙ ΚΑΤΑΣΚΕΥΗ ΥΛΙΚΟΥ ΜΕΡΟΥΣ (HARDWARE) Λειτουργικά Μέρη Κατασκευής Ο λαβύρινθος αποτελείται από τέσσερα μεγάλα ξύλα σε σχήμα τετραγώνου, τύπου νοβοπάν και με διαστάσεις 110x110 εκατοστά το καθένα, τα οποία αποτελούν τη βάση του λαβυρίνθου μας (σύνολο 220x220 εκατοστά). Στα εσωτερικά μήκη κάθε ξύλου που συνυπάρχουν μεταξύ τους, για να δημιουργήσουν ένα μεγάλο ενιαίο τετραγάγωνο (βάση), έχουμε ανοίξει τρύπες με τρυπάνι, αντιστοιχώντας τη μία με την άλλη, (συνολο:16) και έχουμε τοποθετήσει δύο μικρά και μακρόστενα ξυλάκια που ονομάζονται καβίλιες σε κάθε τετράδα τρυπών που ανοίξαμε (σύνολο 8). Επίσης χρησιμοποιήσαμε 25 μικρά ξύλα, τύπου κόντρα πλακέ θαλάσσης, με διαστάσεις 20x30 εκατοστά, που αναπαριστούν τους τοίχους του λαβύρινθου μας και τοποθετήθηκαν με βάση μια τετράδα καρφιών ανα ξύλο. Εικόνα 2 - Σχέδιο Λαβυρίνθου 15

24 Εικόνα 3 - Διαγώνια όψη λαβυρίνθου Εικόνα 4 - Εμπρόσθια όψη λαβυρίνθου 16

25 Το ρομποτικό αυτοκίνητο το συναρμολογήσαμε έχοντας αγοράσει τα υλικά του μέρη και τοποθετώντας πάνω του τον μικροελεγκτή μας (Arduino) και ενα breadboard. Επίσης, τοποθετήσαμε πάνω στο αμαξάκι μας δύο DC κινητήρες σε συσκευασία σερβομηχανισμού και στα άκρα τους δύο ρόδες. Ακόμα χρησιμοποιήσαμε και τρία υπέρηχα αισθητήρια περιμετρικά, (μπροστά, δεξιά και αριστερά) για να μετράμε αποστάσεις του αμαξιού απο τους τοίχους που το περιβάλλουν, για αποφυγή συγκρούσεων αλλά και αναγνώριση του λαβυρίνθου. Επιπρόσθετα, πάνω στο breadboard εχουμε τοποθετήσει ενα ολοκληρωμένο που ονομάζεται L293D 1A και το χρησιμοποιούμε για να ελέγξουμε τους δύο κινητήρες. Όλα αυτά συνδέονται μέσω ειδικών καλωδίων ( jumpers) στο breadboard και το breadboard συνδέεται μέσω του ίδιου τύπου καλωδίων με το Arduino από όπου τροφοδοτείται και κατ επέκταση τροφοδοτεί και όλα τα υπόλοιπα υλικά που προαναφέραμε. Μηχανολογικό σχέδιο Η μηχανολογική κατασκευή του ρομποτικού μας αμαξιού αποτελείται από μία πλατφόρμα αλουμινίου (ως κύριο σώμα) χρώματος κόκκινου που φέρει: - δύο ανεξάρτητες υποδοχές για τροχούς, έτσι ώστε να είναι πιο εύκολη η τοποθέτηση τους πάνω στο όχημα. Αυτοί οι τροχοί είναι DC κινητήρες σε συσκευασία σερβομηχανισμού, έτσι ώστε το όχημα να πραγματοποιεί διαφορική κίνηση με ακρίβεια (βλέπε Εικόνα 6) - Μια μεταλλική στρογγυλή μπίλια στο μπροστινό μέρος του αμαξιού, όπου χρησιμοποιείται μόνο για υποβοήθεια και την στήριξη (βλέπε Εικόνα 6) του οχήματος. - Μια πλακέτα γενικής χρήσης breadboard, όπου πραγματοποιήσαμε τις συνδεσμολογίες μας (βλέπε Εικόνα 5 και 6) - Ένα ολοκληρωμένο οδηγό L293D που χρησιμοποιήθηκε για την ρύθμιση και τον έλεγχο των ταχυτήτων των κινητήρων μας. - Τον μικροελεγκτή Arduino Mega 2560 όπου στην ουσία είναι ο εγκέφαλος του ρομποτικού μας αμαξιού, όπου βρίσκεται αποθηκευμένος ο κώδικας μας, και γενικά ελέγχουμε ολόκληρο το ρομποτικό αμαξάκι ( βλέπε Εικόνα 5 και 6 ) - Τρία υπέρηχα αισθητήρια, όπου μας βοηθάνε στην χαρτογράφηση του λαβυρίνθου κυρίως και φυσικά για την αποφυγή συγκρούσεων του αμαξιού με τους γύρω τοίχους που το περιβάλλουν (βλέπε Εικόνα 5 και 6). 17

26 Εικόνα 5 - Κάτοψη μηχανολογικού σχέδιο οχήματος Εικόνα 6 - Αριστερή όψη μηχανολογικού σχεδίου οχήματος 18

27 Ηλεκτρονικό κύκλωμα Ο έλεγχος του ρομποτικού μας αμαξιού υλοποιείται από το παρακάτω ηλεκτρονικό κύκλωμα ελέγχου. Κύριο βασικό εξάρτημα του είναι ο μικροελεγκτής Arduino Mega (βλέπε Εικόνα 9). Ο μικροελεγκτής είναι υπεύθυνος για την συλλογή δεδομένων, δηλαδή τις μετρήσεις των αισθητηρίων από το περιβάλλον και την οδήγηση των ενεργοποιητών (κινητήρων) του ρομποτικού μας αμαξιού μέσω του ολοκληρωμένου L293D. Η τροφοδοσία όλων των εξαρτημάτων γίνεται από την θύρα των 5V του Arduino. Οι ψηφιακές θύρες του Arduino στέλνουν τα σήματα για τον έλεγχο των κινητήρω στον οδηγό, και από εκεί συνδέονται με τους κινητήρες για την ενεργοποίηση τους. Τέλος για την επικοινωνία με τους αισθητήρες χρησιμοποιούνται οι αναλογικές είσοδοι για το Echo και οι ψηφιακές έξοδοι για το Trigger. 19

28 Στην παρακάτω εικόνα φαίνεται αναλυτικά το ηλεκτρονικό κύκλωμα του οχήματος Εικόνα 7 - Ηλεκτρονικό κύκλωμα [9] 20

29 Και εδώ φαίνεται η συνδεσμολογία με τα πραγματικά εξαρτήματα για την καλύτερη κατανόηση του κυκλώματος. Εικόνα 8 - Σχέδιο συνδεσμολογίας [9] Λίστα υλικών Τα υλικά που χρησιμοποιήσαμε για την πτυχιακή μας εργασία είναι τα εξής: *Στις παρενθέσεις αναγράφεται η ποσότητα των συγκεκριμένων υλικών που χρησιμοποιήσαμε για την κατασκευή μας. 21

30 Μικροελεγκτής Arduino Mega 2560 (1) Ηλεκτρικά χαρακτηριστικά [10]: Εικόνα 9 - Arduino Mega 2560 [4] Τάση λειτουργίας: 5 VDC Τάση εισόδου 7-12 V προτεινόμενη Τάση εισόδου 6-20 V (min-max ορίου) Ψηφιακές είσοδοι/έξοδοι 54 PWM Ψηφιακές είσοδοι/έξοδοι 16 Αναλογικές είσοδοι 16 Ρεύμα ανα είσοδο/έξοδο 20mA Ρεύμα ανα είσοδο/έξοδο 3.3V 50mA Μνήμη Flash 256 KB, από τα οποία 8 KB χρησιμοποιούνται για το σύστημα Μνήμη SRAM 8 KB Μνήμη EEPROM 4 KB Ταχύτητα 16 MHz 22

31 DC Motors FM90 (2) Ηλεκτρικά χαρακτηριστικά [11]: Εικόνα 10 - DC κινητήρας σε θήκη Servo [5] Τάση τροφοδοσίας 4-6 V Ταχύτητα χωρίς φορτίο 110RPM (4.8v) 130RPM (6v) Διερχόμενο ρεύμα (χωρίς φορτίο): 100mA (4.8v) 120mA (6v) Μέγιστη ροπή (4.8v): 1.3 kg.cm / oz.in Μέγιστη ροπή (6v): 1.5 kg.cm / oz.in Στατικό ρεύμα : 550mA (4.8v) 650mA (6v) 23

32 Αισθητήρες Υπερήχων (HC-SR04) (3) Ηλεκτρικά χαρακτηριστικά [12]: Τάση λειτουργίας 5V Ρεύμα λειτουργίας 15mA Διασύνδεση Ψηφιακή o Trigger pin: παλμός εισόδου o Echo pin: παλμός εξόδου Χωρίς πρωτόκολλο επικοινωνίας Breadboard Εικόνα 11 - Αισθητήριο HC-SR04 [6] Ηλεκτρικά χαρακτηριστικά [13]: Αριθμός pin: 630 Μέγιστη Τάση: 300V Μέγιστη Ένταση: 3-5A Εικόνα 12 Breadboard [7] 24

33 Motor Driver L293D 1A (1) Εικόνα 13 - L2935 1A [8] Ηλεκτρικά χαρακτηριστικά [14]: Εύρος τάσης : 4.5 V to 36 V Ξεχωριστές είσοδοι για τροφοδοσία λογικών καναλιών Εσωτερική ESD προστασία Προστασία από υπερβολική θερμότητα Ρεύμα εξόδου 1 A για κάθε κανάλι (600 ma for L293D) Μέγιστο ρεύμα εξόδου 2 A για κάθε κανάλι (1.2 A for L293D) Εξωτερικές θύρες διόδου για επαγωγιμότητα 25

34 ΑΝΑΛΥΣΗ ΚΑΙ ΣΥΓΓΡΑΦΗ ΛΟΓΙΣΜΙΚΟΥ (SOFTWARE) Τόσο η κίνηση του ρομπότ όσο και η συνολική «ευφυΐα» που είναι απαραίτητη για την επίλυση του λαβύρινθου υλοποιείται στο λογισμικό που έχουμε συγγράψει για το μικροελεγκτή Arduino. Στο παρακάτω σχήμα παρουσιάζεται το διάγραμμα ροής του βασικού κώδικα Διάγραμμα Ροής (Flow Chart) Εικόνα 14 - Διάγραμμα Ροής βασικής λειτουργίας του οχήματος Και παρακάτω ακολουθούν τα διαγράμματα ροής των βοηθητικών λειτουργιών του κώδικα. 26

35 Εικόνα 15 - Διάγραμμα ροής Scan 27

36 Εικόνα 16 - Διάγραμμα ροής Flood Fill 28

37 Εικόνα 17 - Διάγραμμα ροής Εύρεσης Επόμενης Κίνησης 29

38 Στην λειτουργία Scan, το όχημα απλά διαβάζει τις τιμές των τριών αισθητηρίων για να προσθέσει στον χάρτη του λαβυρίνθου τις τοποθεσίες των τοίχων. Στο Flood Fill αρχικά δίνεται στο τετράγωνο που αντιστοιχεί στην τελική θέση η τιμή ένα (1). Από εκεί και πέρα μέσω δύο εμφωλευμένων for προστίθενται και μεγαλύτερες τιμές (2, 3, κλπ.) στα γειτονικά τετράγωνα, έως ότου να γεμίσει όλος ο πίνακας με τιμές. Αυτή η διαδικασία τελειώνει όταν μία μεταβλητή που υπάρχει για μετρητής (a) φτάσει στην τιμή 49, δηλαδή όσα είναι και τα τετράγωνα του λαβυρίνθου. Ο έλεγχος επιτυγχάνεται με άλλες δύο εμφωλεύμενες for, όπου δίνουν +1 στο a όταν βρίσκουν κάποια τιμή εντός του κάθε τετραγώνου του χάρτη. Στον αλγόριθμο εύρεσης επόμενης κίνησης, το όχημα, με βάση την τωρινή θέση του, διαβάζει τις τέσσερις γειτονικές τιμές, που έχουν προέλθει από το Flood Fill, και βρίσκει την μικρότερη. Οπότε πλέον ξέρει προς ποιό τετράγωνο πρέπει να κινηθεί. Επόμενο βήμα είναι να κάνει μία απλή πράξη, μεταξύ της τωρινής κατεύθυνσης του και της επόμενης, και να βρει τις κατάλληλες κινήσεις για την σωστή μετακίνηση του, τις οποίες και εκτελεί. 30

39 Κώδικας Προγράμματος Το όχημα ξεκινάει από την κάτω αριστερή γωνία του λαβυρίνθου (7,1). Από εκεί και πέρα εκτελεί κινήσεις μέχρι να περάσει από όλες θέσεις με σκοπό την χαρτογράφηση. Αυτό επιτυγχάνεται με χρήση δύο εμφωλευμένων for και ενός βοηθητικού χάρτη που σημειώνει από ποιές θέσεις έχει περάσει το όχημα. Όταν καταφέρει να περάσει και από τις 49 θέσεις, τότε τελείωνει το πρώτο και μεγαλύτερο κομμάτι της διαδικασίας, οπότε περνάει στο δεύτερο, που είναι η επιστροφή του στην αρχική θέση. Τις κινήσεις τις υπολογίζει με την χρήση του Flood Fill, όπου παίρνει σαν θέση ενδιαφέροντος την αρχική θέση του λαβυρίνθου (7,1) σε σχέση με την τωρινή του θέση. Αφού υπολογίσει και εκτελέσει τις κινήσεις (με την βοήθεια του αλγορίθμου εύρεσης επόμενης κίνησης) και πλέον είναι στην αρχική θέση (7,1) μπαίνει σε λειτουργία το τρίτο στάδιο και βασικός σκοπός της εργασίας, που είναι ο υπολογισμός και εκτέλεση της βέλτιστης διαδρομής. Στο συγκεκριμένο παράδειγμα έχουμε ως αρική θέση το (7,1) και ως τελική το (5,6), οπότε υπολογίζει τις κινήσεις με τον ίδιο τρόπο που έκανε και στο δεύτερο βήμα της διαδικασίας (Flood Fill και εύρεση επόμενης κίνησης). Βοηθητικές συναρτήσεις στον κώδικα είναι: η μέτρηση απόστασης από τα τρία υπέρηχα αισθητήρια, η εκτέλεση κινήσεων (ευθεία, αριστερή και δεξιά στροφή, αναστροφή, στόπ) με την χρήση των δύο κινητήρων που έχουμε, καθώς και οι δύο αλγόριθμοι (Flood Fill και Εύρεση Επόμενης Κίνησης) που τους αναλύσαμε στο κομμάτι με τα διαγράμματα ροής. /********** Αυτοκινούμενο όχημα εύρεσης βέλτιστης διαδρομής λαβυρίνθου * Σκοπός * Ένα όχημα βρίσκει και εκτελεί την ταχύτερη διαδρομή μεταξύ 2 σημείων * του λαβυρίνθου, αφού πρώτα κάνει την πλήρη χαρτογράφηση του * Hardware * Στο arduino είναι συνδεδεμένα 3 υπέρηχα αισθητήρια HC-SR04, καθώς * και 2 DC κινητήρες σε θήκη servo μέσω ενός οδηγού L293 * Software * Γίνεται χρήση 2 αλγορίθμων: Flood Fill και εύρεση επόμενης κίνησης, * καθώς και απλών συναρτήσεων για την εκτέλεση των μηχανικών * κινήσεων και την λήψη τιμών των αισθητηρίων. * Reference * final version Νικόλαος Ευδαίμων - Βασίλειος Νικολουδάκος, Απρίλιος **********/ 31

40 //Motors int in1 = 22; int in2 = 24; int in3 = 44; int in4 = 46; //Ορισμός κινητήρων //Ultrasound Sensors int TriggerPin1 = 32; int EchoPin1 = A8; int TriggerPin2 = 34; int EchoPin2 = A9; int TriggerPin3 = 36; int EchoPin3 = A10; //Αριστερό Αισθητήριο //Μπροστινό Αισθητήριο //Δεξιό Αισθητήριο //Misc int VehicleRotation = 0; //Μεταβλητή Κατεύθυνσης(Αρχική Θέση: Βόρεια(0), Υπόλοιπες θέσεις:δυτικά(1), Νότια(2), Ανατολικά(3)) int Xartis[15][15] = {{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, {-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, {-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, {-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, {-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, {-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, {-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, {-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, {-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, {-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, {-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, {-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, {-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, {-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1; //Χάρτης από αναγνώριση αυτοκινήτου, με -1 σημειώνονται τοίχοι και απροσπέλαστα σημεία, //ενώ με 0 ανοικτοί δρόμοι καθώς και άγνωστα σημεία int PositionCheckMap[7][7] = {{0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0; 32

41 //Χρησιμοποιείται για να ξέρει το όχημα από ποιές θέσεις έχει περάσει int PositionSum=0; int StartingPositionX=13; //Αρχική Θέση οχήματος int StartingPositionY=1; int GoalPositionX=9; //Τελική θέση οχήματος int GoalPositionY=11; int CurrentPositionX; //Τρέχουσα θέση οχήματος int CurrentPositionY; int NextPositionX; //Επόμενη θέση οχήματος(μετά από εκτέλεση αλγορίθμου εύρεσης επόμενης κίνησης) int NextPositionY; int FM0,FM1,FM2,FM3; //Τιμές γειτονικών τετραγώνων int DifferenceX; int DifferenceY; int NextRotation; int DifferenceRotation; int pinakas[15][15]; //Βοηθητικός πίνακας int LeftSensor,FrontSensor,RightSensor; //Τιμές από υπέρηχα αισθητήρια void setup() { Serial.begin(9600); //Motors pinmode(in1, OUTPUT); pinmode(in2, OUTPUT); pinmode(in3, OUTPUT); pinmode(in4, OUTPUT); //Ultrasound Sensors pinmode(triggerpin1,output); pinmode(triggerpin2,output); pinmode(triggerpin3,output); pinmode(echopin1,input); pinmode(echopin2,input); pinmode(echopin3,input); void loop() { 33

42 ορίσει) //MAIN CODE CurrentPositionX=StartingPositionX; CurrentPositionY=StartingPositionY; Scanning(); PositionCheck(); //Πρώτο Μέρος (Αναγνώριση λαβυρίνθου και χαρτογράφηση του) //Eκτέλεση κινήσεων μέχρι να περάσει το όχημα από όλες τις θέσεις while(positionsum<49){ for(int x=1;x<14;x+=2){ for(int y=1;y<14;y+=2){ if(positioncheckmap[(x-1)/2][(y-1)/2]==0){ Scanning(); FloodFill(Xartis,x,y); PositionCheck(); while((currentpositionx!=x) (CurrentPositionY!=y)){ PositionCheck(); FindMove(pinakas); Scanning(); PositionCheck(); FloodFill(Xartis,x,y); //Δεύτερο Μέρος (Επιστροφή στην αρχική θέση) ReturnToStart(); //Τρίτο Μέρος (Βέλτιστη διαδρομή προς την τελική θέση που του έχουμε FloodFill(Xartis,GoalPositionX,GoalPositionY); while((currentpositionx!=goalpositionx) (CurrentPositionY!=GoalPositionY)){ FindMove(pinakas); //FUNCTIONS 34

43 //Position Checks void PositionCheck(){ //Συνάρτηση ελέγχου για αναγνώριση λαβυρίνθου PositionSum=0; if(positioncheckmap[(currentpositionx-1)/2][(currentpositiony- 1)/2]==0){ PositionCheckMap[(CurrentPositionX-1)/2][(CurrentPositionY-1)/2]=1; for(int d=0;d<7;d++){ for(int e=0;e<7;e++){ if(positioncheckmap[d][e]==1){ PositionSum++; //Return to Start void ReturnToStart(){ //Συνάρτηση επιστροφής στην αρχική θέση FloodFill(Xartis,13,1); //Εκτέλεση κινήσεων μέχρι να φτάσει το όχημα στην αρχική θέση του while((currentpositionx!=13) (CurrentPositionY!=1)){ FindMove(pinakas); ReverseTurn(); //Ultrasound Distance long ultrasound_distance(long trigpin,long echopin){//συνάρτηση για μέτρηση απόστασης long duration, distance; digitalwrite(trigpin, LOW); delaymicroseconds(.3); digitalwrite(trigpin, HIGH); delaymicroseconds(1); digitalwrite(trigpin, LOW); duration = pulsein(echopin, HIGH); distance = (duration/2) / 29.1; delay(60); return distance; 35

44 //Movements void Forward(){ digitalwrite(in1, LOW); digitalwrite(in2, HIGH); digitalwrite(in3, LOW); digitalwrite(in4, HIGH); delay(1300); Stop(); switch (VehicleRotation){ case 0 : CurrentPositionX=CurrentPositionX-2; break; case 1 : CurrentPositionY=CurrentPositionY+2; break; case 2 : CurrentPositionX=CurrentPositionX+2; break; case 3 : CurrentPositionY=CurrentPositionY-2; break; delay(2000); void RightTurn(){ digitalwrite(in1, LOW); digitalwrite(in2, HIGH); digitalwrite(in3, HIGH); digitalwrite(in4, LOW); delay(450); Stop(); VehicleRotation=VehicleRotation+1; if(vehiclerotation>3){//έλεγχος για να μην φύγει εκτός "κύκλου κατευθύνσεων" VehicleRotation-=4; //( ) 36

45 delay(2000); void LeftTurn(){ digitalwrite(in1, HIGH); digitalwrite(in2, LOW); digitalwrite(in3, LOW); digitalwrite(in4, HIGH); delay(450); Stop(); VehicleRotation=VehicleRotation-1; if(vehiclerotation<0){//έλεγχος για να μην φύγει εκτός "κύκλου κατευθύνσεων" VehicleRotation+=4; //( ) delay(2000); void ReverseTurn(){ digitalwrite(in1, LOW); digitalwrite(in2, HIGH); digitalwrite(in3, HIGH); digitalwrite(in4, LOW); delay(900); Stop(); VehicleRotation=VehicleRotation+2; if(vehiclerotation>3){//έλεγχος για να μην φύγει εκτός "κύκλου κατευθύνσεων" VehicleRotation-=4; //( ) delay(2000); void Stop(){ digitalwrite(in1, LOW); digitalwrite(in2, LOW); digitalwrite(in3, LOW); 37

46 digitalwrite(in4, LOW); //WALL SCANNING void Scanning(){ //Διάβασμα των τριών αισθητηρίων για την εύρεση τοίχων περιμετρικά του //οχήματος και εγγραφή των στοιχείων στον χάρτη LeftSensor=ultrasound_distance(TriggerPin1,EchoPin1); FrontSensor=ultrasound_distance(TriggerPin2,EchoPin2); RightSensor=ultrasound_distance(TriggerPin3,EchoPin3); if (LeftSensor<20){//Αριστερό Αισθητήριο switch (VehicleRotation){ case 0 : if(xartis[currentpositionx][currentpositiony-1]==0){ Xartis[CurrentPositionX][CurrentPositionY-1]=-1; break; case 1 : if(xartis[currentpositionx-1][currentpositiony]==0){ Xartis[CurrentPositionX-1][CurrentPositionY]=-1; break; case 2 : if(xartis[currentpositionx][currentpositiony+1]==0){ Xartis[CurrentPositionX][CurrentPositionY+1]=-1; break; case 3 : if(xartis[currentpositionx+1][currentpositiony]==0){ Xartis[CurrentPositionX+1][CurrentPositionY]=-1; break; if (FrontSensor<20){//Μπροστινό Αισθητήριο switch (VehicleRotation){ case 0 : if(xartis[currentpositionx-1][currentpositiony]==0){ 38

47 Xartis[CurrentPositionX-1][CurrentPositionY]=-1; break; case 1 : if(xartis[currentpositionx][currentpositiony+1]==0){ Xartis[CurrentPositionX][CurrentPositionY+1]=-1; break; case 2 : if(xartis[currentpositionx+1][currentpositiony]==0){ Xartis[CurrentPositionX+1][CurrentPositionY]=-1; break; case 3 : if(xartis[currentpositionx][currentpositiony-1]==0){ Xartis[CurrentPositionX][CurrentPositionY-1]=-1; break; if (RightSensor<20){//Δεξιό Αισθητήριο switch (VehicleRotation){ case 0 : if(xartis[currentpositionx][currentpositiony+1]==0){ Xartis[CurrentPositionX][CurrentPositionY+1]=-1; break; case 1 : if(xartis[currentpositionx+1][currentpositiony]==0){ Xartis[CurrentPositionX+1][CurrentPositionY]=-1; break; case 2 : if(xartis[currentpositionx][currentpositiony-1]==0){ Xartis[CurrentPositionX][CurrentPositionY-1]=-1; break; case 3 : if(xartis[currentpositionx-1][currentpositiony]==0){ Xartis[CurrentPositionX-1][CurrentPositionY]=-1; 39

48 break; για θα 1)){ 1)){ 1)){ //FLOODFILL ALGORITHM void FloodFill(int FFmatrix[15][15],int GoalX,int GoalY){ for(int copy1=0;copy1<15;copy1++){ for(int copy2=0;copy2<15;copy2++){ pinakas[copy1][copy2]=ffmatrix[copy1][copy2]; //Αντιγραφή πίνακα //αποφυγή αλλοίωσης βασικού χάρτη int a=0; //Μεταβλητή για την εκτέλεση του αλγορίθμου. Όταν φτάσει 49 int CurrentValue=1; //έχουν μπει τιμές σε όλες τις θέσεις pinakas[goalx][goaly]=currentvalue; //Τελική θέση FloodFill //Πρέπει να ισχύουν τρεις συνθήκες //1η:Αν είναι μέσα στα όρια του πίνακα //2η:Αν είναι η τιμή της 0 (δεν είναι μέρος συντομότερης διαδρομής) //3η:Αν δεν υπάρχει τοίχος ανάμεσα (-1 δείχνει τοίχο) while(a<49){ for(int ffx=1;ffx<14;ffx+=2){ for(int ffy=1;ffy<14;ffy+=2){ if(pinakas[ffx][ffy]==currentvalue){ if((ffx-2>=0)&&(pinakas[ffx-2][ffy]==0)&&(xartis[ffx-1][ffy]!=pinakas[ffx-2][ffy]=currentvalue+1; if((ffy-2>=0)&&(pinakas[ffx][ffy-2]==0)&&(xartis[ffx][ffy-1]!=pinakas[ffx][ffy-2]=currentvalue+1; if((ffx+2<15)&&(pinakas[ffx+2][ffy]==0)&&(xartis[ffx+1][ffy]!=pinakas[ffx+2][ffy]=currentvalue+1; 40

49 //FIND NEXT MOVE ALGORITHM void FindMove(int FMmatrix[15][15]){//Του δίνουμε πίνακα μετά από Flood Fill για να βρει την μικρότερη τιμή των τεσσάρων γειτονικών τετραγώνων από την τρέχουσα θέση //Εύρεση τιμών των τεσσάρων γειτονικών τετραγώνων if((ffy+2<15)&&(pinakas[ffx][ffy+2]==0)&&(xartis[ffx][ffy+1]!=- 1)){ pinakas[ffx][ffy+2]=currentvalue+1; CurrentValue=CurrentValue+1; a=0; for(int xa=1;xa<14;xa=xa+2){ //Όποια θέση έχει τιμή τότε προστίθεται for(int ya=1;ya<14;ya=ya+2){ //στην μεταβλητή a μέχρι να φτάσει το 49 if(pinakas[xa][ya]!=0){ //(7x7=49) a++; if((currentpositionx-2>0)&&(xartis[currentpositionx- 1][CurrentPositionY]==0)&&(FMmatrix[CurrentPositionX-2][CurrentPositionY]!=0)){ //Έλεγχος πάνω τετραγώνου FM0=FMmatrix[CurrentPositionX-2][CurrentPositionY]; //Τιμή πάνω τετραγώνου else{ FM0=100; //Το 100 είναι μια τυχαία "μεγάλη" τιμή, μακριά από τις δικές μας (1->15) if((currentpositiony+2<14)&&(xartis[currentpositionx][currentpositiony+1]==0)&&( FMmatrix[CurrentPositionX][CurrentPositionY+2]!=0)){ //Έλεγχος δεξιά τετραγώνου FM1=FMmatrix[CurrentPositionX][CurrentPositionY+2]; //Τιμή δεξιού τετραγώνου 41

50 else{ FM1=100; if((currentpositionx+2<14)&&(xartis[currentpositionx+1][currentpositiony]==0)&&( FMmatrix[CurrentPositionX+2][CurrentPositionY]!=0)){ //Έλεγχος κάτω τετραγώνου FM2=FMmatrix[CurrentPositionX+2][CurrentPositionY]; //Τιμή κάτω τετραγώνου else{ FM2=100; if((currentpositiony-2>0)&&(xartis[currentpositionx][currentpositiony- 1]==0)&&(FMmatrix[CurrentPositionX][CurrentPositionY-2]!=0)){ //Έλεγχος αριστερά τετραγώνου FM3=FMmatrix[CurrentPositionX][CurrentPositionY-2]; //Τιμή αριστερού τετραγώνου τότε τότε τότε τότε else{ FM3=100; //Σύγκριση των τιμών για την εύρεση της επόμενης θέσης if((fm0<=fm1)&&(fm0<=fm2)&&(fm0<=fm3)){ //Αν η FM0 είναι η μικρότερη τιμή NextPositionX=CurrentPositionX-2; NextPositionY=CurrentPositionY; //το όχημα θα πρέπει να πάει πάνω if((fm1<fm0)&&(fm1<=fm2)&&(fm1<=fm3)){ //Αν η FM1 είναι η μικρότερη τιμή NextPositionX=CurrentPositionX; NextPositionY=CurrentPositionY+2; if((fm2<fm0)&&(fm2<fm1)&&(fm2<=fm3)){ NextPositionX=CurrentPositionX+2; NextPositionY=CurrentPositionY; if((fm3<fm0)&&(fm3<fm1)&&(fm3<fm2)){ NextPositionX=CurrentPositionX; NextPositionY=CurrentPositionY-2; //το όχημα πρέπει να πάει δεξιά //Αν η FM2 είναι η μικρότερη τιμή //το όχημα πρέπει να πάει κάτω //Αν η FM3 είναι η μικρότερη τιμή //το όχημα πρέπει να πάει αριστερά //Υπολογισμός των κατάλληλων κινήσεων για την μετάβαση στην επόμενη θέση DifferenceX=NextPositionX-CurrentPositionX; 42

51 DifferenceY=NextPositionY-CurrentPositionY; if(differencex<0){ NextRotation=0; if(differencey>0){ NextRotation=1; if(differencex>0){ NextRotation=2; if(differencey<0){ NextRotation=3; DifferenceRotation=NextRotation-VehicleRotation; if(differencerotation<0){ DifferenceRotation+=4; //Εκτέλεση κινήσεων if(differencerotation==0){ //Δεν υπάρχει αλλαγή στην κατεύθυνση, άρα προχωράει ευθεία το όχημα Forward(); if((differencerotation==1) (DifferenceRotation==-3)){ //Το όχημα πρέπει να κάνει δεξιά στροφή RightTurn(); Forward(); if((differencerotation==2) (DifferenceRotation==-2)){ //Το όχημα πρέπει να κάνει αναστροφή ReverseTurn(); Forward(); if((differencerotation==3) (DifferenceRotation==-1)){ //Το όχημα πρέπει να κάνει αριστερή στροφή LeftTurn(); Forward(); 43

52 ΑΠΟΤΕΛΕΣΜΑΤΑ Μετά το πέρας της εργασίας, διαπιστώσαμε ότι το όχημα εκπλήρωσε σωστά τον βασικό μας στόχο, που ήταν ο υπολογισμός και η εκτέλεση της βέλτιστης διαδρομής μεταξύ των δύο σημείων που είχαμε θέσει, αλλά αφού πρώτα είχε αναγνωρίσει και χαρτογραφήσει πλήρως τον λαβύρινθο. Άλλωστε, χωρίς αυτή την διαδικασία, ο βασικός στόχος δεν θα μπορούσε να επιτευχθεί με ακρίβεια. Επίσης, επαληθεύτηκαν και τα αποτελέσματα από τις προσομοιώσεις που είχαμε κάνει στην αρχή της εργασίας με τη χρήση της σειριακής επικοινωνίας του Arduino. ΣΥΜΠΕΡΑΣΜΑΤΑ Καταλήξαμε στα εξής συμπεράσματα: 1) Ο αλγόριθμος Flood Fill είναι κατάλληλος για επίλυση λαβυρίνθου, όταν αυτός έχει συγκεκριμένα χαρακτηριστικά. Στην περίπτωσή μας είχαμε τετράγωνο λαβύρινθο χωρισμένο σε ίσα τετράγωνα σημεία, κάτι που κάνει εύκολη την χαρτογράφηση του. Σε περίπτωση που ο λαβύρινθος ήταν κυκλικός ή τυχαίου σχήματος δεν θα είχαμε τόσο μεγάλη επιτυχία στην επίλυση του. Για αυτές τις περιπτώσεις υπάρχουν άλλες τεχνικές επίλυσης. 2) Μελλοντικές βελτιώσεις που θα μπορούσαν να γίνουν στην εργασία είναι κυρίως στο υλικό κομμάτι, δηλαδή στο όχημα. Μερικές προσθήκες είναι η χρήση encoders στους τροχούς για την ακριβή μέτρηση των κινήσεων, η τοποθέτηση γυροσκοπίου και επιταχυνσιόμετρου για την εξακρίβωση της θέσης του οχήματος στους τρείς άξονες (X,Y,Z),καθώς και η χρήση υπέρυθρων ακολουθητών γραμμής και η αντίστοιχη μαύρη ταινία στο έδαφος για σταθεροποίηση των κινήσεων. 44

53 ΒΙΒΛΙΟΓΡΑΦΙΑ [1] Elshmarka Ibrahim and A. B. S. Saman, "Design and Implementation of a Robot for Maze-Solving using Flood Fill Algorithm," International Journal of Computer Applications ( ), vol. 56, no. 5, pp. 8-13, [2] J. R. B. D. Rosario, J. G. Sanidad, A. M. Lim, P. S. L. Uy, A. J. C. Bacar, M. A. D. Cai and A. Z. A. Dubouzet, "Modelling and Characterization of a Maze-Solving Mobile Robot Using Wall Follower Algorithm," Applied Mechanics and Materials Vols, pp , [3] Random Mouse Algorithm, [Online] Available: [4] Arduino Mega 2560, Grobotronics.com, [Online]. Available: [5] DC Motors FM90, Grobotronics.com, [Online]. Available: [6] Αισθητήρες Υπερήχων (HC-SR04), Grobotronics.com, [Online]. Available: [7] Breadboard, Grobotronics.com, [Online]. Available: 45

54 [8] Motor Driver L293D 1A, Grobotronics.com, [Online]. Available: [9] Ηλεκτρονικό κύκλωμα και σχέδιο μηχανολογίας, Available : [10] Ηλεκτρικά χαρακτηριστικά, Grobotronics.com, [Online]. Available: [11] Ηλεκτρικά χαρακτηριστικά, Grobotronics.com, [Online]. Available: [12] Ηλεκτρικά χαρακτηριστικά, Grobotronics.com, [Online]. Available: [13] Ηλεκτρικά χαρακτηριστικά, Grobotronics.com, [Online]. Available: [14] Ηλεκτρικά χαρακτηριστικά, Grobotronics.com, [Online]. Available: 46

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

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

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

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

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

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

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

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα για εφαρμογές πραγματικού χρόνου Εφαρμογές με τον Arduino Ιωάννης Καλόμοιρος Αναπληρωτής Καθηγητής Τμήμα Μηχανικών Πληροφορικής Μάθημα 10 1 Συναρτήσεις αναλογικής εξόδου: PWM Το

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

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

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

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

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

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

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

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

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

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

Σχεδιαστικές προδιαγραφές

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

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

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

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

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

ΑΙΣΘΗΤΗΡΕΣ ΚΑΙ ΜΟΤΟΡΕΣ ΠΡΑΚΤΙΚΑ ΘΕΜΑΤΑ ΧΡΗΣΗΣ. Υποψήφιος Διδάκτωρ

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

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

ΡΟΜΠΟΤΙΚΗ ΚΑΙ ΑΥΤΟΜΑΤΙΣΜΟΣ

ΡΟΜΠΟΤΙΚΗ ΚΑΙ ΑΥΤΟΜΑΤΙΣΜΟΣ ΡΟΜΠΟΤΙΚΗ ΚΑΙ ΑΥΤΟΜΑΤΙΣΜΟΣ ΡΟΜΠΟΤΙΚΗ Η Ρομποτική είναι ο κλάδος της επιστήμης που κατασκευάζει και μελετά μηχανές που μπορούν να αντικαταστήσουν τον άνθρωπο στην εκτέλεση μιας εργασίας. Tι είναι το ΡΟΜΠΟΤ

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

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

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

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

Φύλλο εργασίας 6. Αποφυγή εμποδίων. Χωριστείτε σε ομάδες 2-3 ατόμων και απαντήστε στις ερωτήσεις του φύλλου εργασίας.

Φύλλο εργασίας 6. Αποφυγή εμποδίων. Χωριστείτε σε ομάδες 2-3 ατόμων και απαντήστε στις ερωτήσεις του φύλλου εργασίας. Φύλλο εργασίας 6 Αποφυγή εμποδίων Ο στόχος του φύλλου εργασίας είναι η κατασκευή και ο προγραμματισμός ρομπότ το οποίο θα διασχίζει ένα διάδρομο με πολλά εμπόδια, θα τα αποφεύγει και θα τερματίζει με ασφάλεια

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

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab ΠΑΡΑΡΤΗΜΑ IV Παρακάτω παραθέτουμε μία σειρά ασκήσεων για το Robolab ομαδοποιημένων σε κατηγορίες : Επιμέλεια : Κυριακού Γεώργιος 1 Φύλλο Ασκήσεων (πρόκληση με κινητήρες) ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ

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

ΑΥΤΟΜΑΤΟ ΣΥΣΤΗΜΑ ΕΝΑΛΛΑΓΗΣ ΤΑΧΥΤΗΤΩΝ ΣΕ ΠΟΔΗΛΑΤΟ

ΑΥΤΟΜΑΤΟ ΣΥΣΤΗΜΑ ΕΝΑΛΛΑΓΗΣ ΤΑΧΥΤΗΤΩΝ ΣΕ ΠΟΔΗΛΑΤΟ Τ.Ε.Ι. ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ ΑΥΤΟΜΑΤΟ ΣΥΣΤΗΜΑ ΕΝΑΛΛΑΓΗΣ ΤΑΧΥΤΗΤΩΝ ΣΕ ΠΟΔΗΛΑΤΟ ΟΝΟΜΑΤΑ ΦΟΙΤΗΤΩΝ: ΒΟΥΡΔΕΡΗΣ ΑΝΤΩΝΙΟΣ Α.Μ: 30086 ΙΩΑΝΝΟΥ ΙΩΑΝΝΗΣ Α.Μ: 33359 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΝΙΚΟΛΑΟΥ ΓΡΗΓΟΡΗΣ Ιστορική

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

Οδηγίες έναρξης-κατάθεσης πτυχιακής εργασίας

Οδηγίες έναρξης-κατάθεσης πτυχιακής εργασίας Α.Ε.Ι. ΠΕΙΡΑΙΑ Τ.Τ. ΤΜΗΜΑ ΚΛΩΣΤΟΫΦΑΝΤΟΥΡΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. Οδηγίες έναρξης-κατάθεσης πτυχιακής εργασίας Εσωτερικός Κανονισμός Α.Ε.Ι. Πειραιά Τ.Τ. (Φ.Ε.Κ. 3257/20.12.2013) Οδηγίες έναρξης - κατάθεσης πτυχιακής

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

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

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

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

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

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

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

ΣΧΕΔΙΑΣΜΟΣ ΕΠΙΓΕΙΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΛΥΣΟΚΙΝΗΣΗΣ ΓΙΑ ΜΕΤΑΦΟΡΑ ΤΡΟΛΕΪ

ΣΧΕΔΙΑΣΜΟΣ ΕΠΙΓΕΙΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΛΥΣΟΚΙΝΗΣΗΣ ΓΙΑ ΜΕΤΑΦΟΡΑ ΤΡΟΛΕΪ ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΣΧΕΔΙΑΣΜΟΣ ΕΠΙΓΕΙΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΛΥΣΟΚΙΝΗΣΗΣ ΓΙΑ ΜΕΤΑΦΟΡΑ ΤΡΟΛΕΪ Μάριος Σταυρίδης Λεμεσός, Ιούνιος 2017 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

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

Πτυχιακή Εργασία Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Η Ασύρματη Επικοινωνία, χρησιμοποιώντας

Πτυχιακή Εργασία Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Η Ασύρματη Επικοινωνία, χρησιμοποιώντας Βασικές Έννοιες Πτυχιακή Εργασία 2015 Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping). Η Ασύρματη Επικοινωνία, χρησιμοποιώντας το πρωτόκολλο WiFi.

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

7. Επαναλήψεις (Loops) Προγραμματισμός EV3 Ακαδημία Ρομποτικής 58

7. Επαναλήψεις (Loops) Προγραμματισμός EV3 Ακαδημία Ρομποτικής 58 7. Επαναλήψεις (Loops) Προγραμματισμός EV3 Ακαδημία Ρομποτικής 58 Στόχοι Μαθήματος 1. Πώς να επαναλάβετε μια δράση 2. Μάθετε πώς να χρησιμοποιείτε το Loop Blocks Προγραμματισμός EV3 Ακαδημία Ρομποτικής

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

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

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

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

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

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

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

Ασύρματος αυτοματισμός σε συρόμενη καγκελόπορτα που ελέγχεται από PLC. Ασύρματος αυτοματισμός σε συρόμενη καγκελόπορτα που ελέγχεται από PLC. Ονόματα μαθητών Γεωργίου Χρίστος Η1β, Γεωργίου Αντώνης Η1β Ονόματα καθηγητών: Αγγελίδης Λουκής, Πετρίδης Πέτρος Περίληψη Σκοπός της

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

RobotArmy Περίληψη έργου

RobotArmy Περίληψη έργου RobotArmy Περίληψη έργου Στην σημερινή εποχή η ανάγκη για αυτοματοποίηση πολλών διαδικασιών γίνεται όλο και πιο έντονη. Συνέχεια ακούγονται λέξεις όπως : βελτιστοποίηση ποιότητας ζωής, αυτοματοποίηση στον

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

ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ

ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ Ευθύγραμμη Ομαλή Κίνηση Επιμέλεια: ΑΓΚΑΝΑΚΗΣ.ΠΑΝΑΓΙΩΤΗΣ, Φυσικός https://physicscorses.wordpress.com/ Βασικές Έννοιες Ένα σώμα καθώς κινείται περνάει από διάφορα σημεία.

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

Τίτλος : Μικρός ταινιόδρομος

Τίτλος : Μικρός ταινιόδρομος Τίτλος : Μικρός ταινιόδρομος Περιγραφή Να σχεδιαστεί πρόγραμμα σε Logo, το οποίο θα ελέγχει τη λειτουργία ενός μικρού ταινιόδρομου. Το πρόγραμμα θα πρέπει να εκτελεί τις ακόλουθες λειτουργίες: 1) Start/Stop

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

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010 Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010 Δημιουργία ενός απλού παιχνιδιού με το Gamemaker (μετάφραση από το http://www.stuffucanuse.com/downloads/gamemaker-introductionlessons/free_game_downloads_gamemaker.htm)

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

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

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

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

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

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

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

ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT. ΚΕΦΑΛΑΙΟ 7ο. Δραστηριότητες για το ΝΧΤ-G και το Robolab

ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT. ΚΕΦΑΛΑΙΟ 7ο. Δραστηριότητες για το ΝΧΤ-G και το Robolab ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT ΚΕΦΑΛΑΙΟ 7ο Δραστηριότητες για το ΝΧΤ-G και το Robolab Α. Αποφυγή εμποδίων Θα επιδιώξουμε να προγραμματίσουμε το όχημα-ρομπότ μας ώστε να είναι σε θέση

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3 Μάθημα 11ο: Μεταβλητές, Αριθμητικές - Λογικές πράξεις Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου ΑΝΤΙΚΕΙΜΕΝΑ ΜΑΘΗΣΗΣ 1. Τι είναι μία μεταβλητή 2.

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

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

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

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

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

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

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

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

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

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

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

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

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

Ρύθμιση ενός Αισθητήρα

Ρύθμιση ενός Αισθητήρα Ρύθμιση ενός Αισθητήρα (τι είναι συνδεδεμένο στο NXT και που;) Υπέθεσε See ότι how έχεις far συνδέσει away something στο NXT έναν is. αισθητήρα φωτός στην θύρα 3. Πως το λες αυτό στο Enchanting; 1. Κάνε

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

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

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο

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

Εισαγωγή στη Ρομποτική (για αρχάριους) Δημήτρης Πιπερίδης Διαδραστική Έκθεση Επιστήμης & Τεχνολογίας Ίδρυμα Ευγενίδου

Εισαγωγή στη Ρομποτική (για αρχάριους) Δημήτρης Πιπερίδης Διαδραστική Έκθεση Επιστήμης & Τεχνολογίας Ίδρυμα Ευγενίδου Εισαγωγή στη Ρομποτική (για αρχάριους) Δημήτρης Πιπερίδης Διαδραστική Έκθεση Επιστήμης & Τεχνολογίας Ίδρυμα Ευγενίδου Τι είναι ένα ρομπότ; Δεν υπάρχει σαφής ορισμός. Ορισμός: Μια μηχανική κατασκευή που

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

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

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

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

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

EASYDRIVE. Σύντομος οδηγός. για να ξεκινήσετε την πλοήγηση αμέσως. Με χρήσιμα παραδείγματα & πρακτικές συμβουλές EASYDRIVE Σύντομος οδηγός για να ξεκινήσετε την πλοήγηση αμέσως Με χρήσιμα παραδείγματα & πρακτικές συμβουλές Περιλαμβάνει: την Οθόνη Πλοήγησης, την Οθόνη Επεξεργασίας Χάρτη, και την λειτουργικότητα Hardware

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

Β1.1 Δημιουργία Εφαρμογής στο Περιβάλλον Προγραμματισμού EdScratch του Edison ρομπότ

Β1.1 Δημιουργία Εφαρμογής στο Περιβάλλον Προγραμματισμού EdScratch του Edison ρομπότ Β1.1 Δημιουργία Εφαρμογής στο Περιβάλλον Προγραμματισμού EdScratch του Edison ρομπότ Τι θα μάθουμε σήμερα: Να γνωρίσουμε την Ρομποτική Να προετοιμάσουμε και να γνωρίσουμε το Edison ρομπότ Να μεταφερόμαστε

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

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

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

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

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

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

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

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

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

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

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

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

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

1. ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΑΝΑΛΥΣΗ ΦΥΛΛΩΝ ΕΡΓΑΣΙΑΣ (Ή ΚΑΙ ΑΛΛΟΥ ΔΙΔΑΚΤΙΚΟΥ ΥΛΙΚΟΥ) ΑΞΙΟΛΟΓΗΣΗ ΤΩΝ ΜΑΘΗΤΩΝ

1. ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΑΝΑΛΥΣΗ ΦΥΛΛΩΝ ΕΡΓΑΣΙΑΣ (Ή ΚΑΙ ΑΛΛΟΥ ΔΙΔΑΚΤΙΚΟΥ ΥΛΙΚΟΥ) ΑΞΙΟΛΟΓΗΣΗ ΤΩΝ ΜΑΘΗΤΩΝ 1. ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΑΝΑΛΥΣΗ ΦΥΛΛΩΝ ΕΡΓΑΣΙΑΣ (Ή ΚΑΙ ΑΛΛΟΥ ΔΙΔΑΚΤΙΚΟΥ ΥΛΙΚΟΥ) ΑΞΙΟΛΟΓΗΣΗ ΤΩΝ ΜΑΘΗΤΩΝ ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 1 «Μαθαίνω στη γάτα να σχεδιάζει» Δραστηριότητα 1 Παρατηρήστε τις εντολές στους παρακάτω πίνακες,

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

Ταυτότητα εκπαιδευτικού σεναρίου. Γνώσεις και πρότερες ιδέες των μαθητών. Σκοπός και στόχοι

Ταυτότητα εκπαιδευτικού σεναρίου. Γνώσεις και πρότερες ιδέες των μαθητών. Σκοπός και στόχοι Τίτλος: Υποδοχή εξωγήινων Ταυτότητα εκπαιδευτικού σεναρίου Σύντομη περιγραφή: Οι μαθητές και οι μαθήτριες καλούνται να κάνουν μια απλή κατασκευή με την χρήση του εκπαιδευτικού πακέτου Lego NXT Mindstorms.

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

. Πρόκειται για ένα σημαντικό βήμα, καθώς η παράμετρος χρόνος υποχρεωτικά μεταβάλλεται σε κάθε είδους κίνηση. Η επιλογή της χρονικής στιγμής t o

. Πρόκειται για ένα σημαντικό βήμα, καθώς η παράμετρος χρόνος υποχρεωτικά μεταβάλλεται σε κάθε είδους κίνηση. Η επιλογή της χρονικής στιγμής t o Στις ασκήσεις Κινητικής υπάρχουν αρκετοί τρόποι για να δουλέψουμε. Ένας από αυτούς είναι με τη σωστή χρήση των εξισώσεων θέσης (κίνησης) και ταχύτητας των σωμάτων που περιγράφονται. Τα βήματα που ακολουθούμε

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

Arduino Teachers Workshop

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

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

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης Φύλλα εργασίας MicroWorlds Pro Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο Β. Χ. Χρυσοχοΐδης Πρόεδρος Συλλόγου Εκπαιδευτικών Πληροφορικής Φλώρινας 2 «Σχεδίαση και ανάπτυξη δραστηριοτήτων

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3 Μάθημα 3 ο : ΣΤΡΟΦΕΣ Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου ΑΝΤΙΚΕΙΜΕΝΑ ΜΑΘΗΣΗΣ 1. Πώς να στρίβετε το robot ένα προκαθορισμένο αριθμό μοιρών 2.

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

Κατασκευή Ρομπότ. Από τη θεωρία στην πράξη. Μάκης Χατζόπουλος

Κατασκευή Ρομπότ. Από τη θεωρία στην πράξη. Μάκης Χατζόπουλος Κατασκευή Ρομπότ Από τη θεωρία στην πράξη Μάκης Χατζόπουλος Λέκτορας Εφαρμογών Τμήμα Μηχανικών Βιομηχανικής Σχεδίασης και Παραγωγής Σχολή Μηχανικών - Πανεπιστήμιο Δυτικής Αττικής Τι κοινό έχουν αυτές οι

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

Φύλλο εργασίας 4. Η γάτα και τα ποντίκια

Φύλλο εργασίας 4. Η γάτα και τα ποντίκια Φύλλο εργασίας 4 Η γάτα και τα ποντίκια Οι επόμενες δραστηριότητες αφορούν την κατασκευή ρομποτικής κατασκευής που θα προσομοιώνει μια γάτα που προσπαθεί να πιάσει ποντίκια. Για την υλοποίηση του φύλλου

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

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT Φύλλο Εργασιών 4 ο Πρόκληση με αισθητήρες αφής Σημειώσεις Καθηγητή Έξοδος από σπηλιά Φύλλο Εργασιών 4 : Πρόκληση με αισθητήρες

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT Φύλλο Εργασιών 2 ο Κινητήρες και Δομή Επανάληψης Σημειώσεις Καθηγητή Τώρα θα δούμε πως μπορούν να τροποποιηθούν τα προγράμματα

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

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

Εισαγωγή στο EV3 Μέρος 2

Εισαγωγή στο EV3 Μέρος 2 Εισαγωγή στο EV3 Μέρος 2 Δρ. Γιώργος Α. Δημητρίου Εργαστήριο και Αυτομάτων Συστημάτων & Ακαδημία Τμήμα Πληροφορικής και Μηχανικών Υπολογιστών Σχολή Μηχανικής και Εφαρμοσμένων Επιστημών Πανεπιστήμιο Frederick

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

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

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

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

Εκπαιδευτική Ρομποτική με ARDUINO. για εκπαιδευτικούς και μαθητές. 1o Μέρος: Απλά Κυκλώματα ... 1o Μέρος: Απλά Κυκλώματα Εισαγωγή - Αναγνώριση του κυκλώματος Μελετήστε τα κυκλώματα που ακολουθούν και συζητήστε με την ομάδα σας ποιες από τις παρακάτω προτάσεις είναι σωστές και ποιες λάθος. Α Β

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

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

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

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

Περιγραφή Προβλημάτων

Περιγραφή Προβλημάτων Τεχνητή Νοημοσύνη 02 Περιγραφή Προβλημάτων Φώτης Κόκκορας Τμ.Τεχν/γίας Πληροφορικής & Τηλ/νιών - ΤΕΙ Λάρισας Παραδείγματα Προβλημάτων κύβοι (blocks) Τρεις κύβοι βρίσκονται σε τυχαία διάταξη πάνω στο τραπέζι

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

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

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

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

Σχεδιασμός και Υλοποίηση οχήματος ελεγχόμενου μέσω Bluetooth

Σχεδιασμός και Υλοποίηση οχήματος ελεγχόμενου μέσω Bluetooth ΕΚΘΕΣΗ ΑΝΑΦΟΡΑΣ ΕΡΓΑΣΙΑΣ ΕΞΑΜΗΝΟΥ ΜΕ ΘΕΜΑ: Σχεδιασμός και Υλοποίηση οχήματος ελεγχόμενου μέσω Bluetooth Design and Implementation of a remote control vehicle using Bluetooth ΑΝΑΣΤΑΣΙΟΥ ΚΩΝΣΤΑΝΤΙΝΟΣ Επιβλέπων:

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

Φύλλο εργασίας 1 Εισαγωγή στη Ρομποτική

Φύλλο εργασίας 1 Εισαγωγή στη Ρομποτική Φύλλο εργασίας 1 Εισαγωγή στη Ρομποτική Χωριστείτε σε ομάδες 2-3 ατόμων και απαντήστε στις ερωτήσεις του φύλλου εργασίας. Δραστηριότητα 1 Συζητήστε με τα μέλη της ομάδας σας και γράψτε μια λίστα με ρομποτικές

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

Πολυτεχνείο Κρήτης Τμήμα ΗΜΜΥ Χειμερινό Εξάμηνο Intelligence Lab. Αυτόνομοι Πράκτορες. Κουσανάκης Βασίλης

Πολυτεχνείο Κρήτης Τμήμα ΗΜΜΥ Χειμερινό Εξάμηνο Intelligence Lab. Αυτόνομοι Πράκτορες. Κουσανάκης Βασίλης Πολυτεχνείο Κρήτης Τμήμα ΗΜΜΥ Χειμερινό Εξάμηνο 2012-2013 Intelligence Lab Αυτόνομοι Πράκτορες Κουσανάκης Βασίλης 2006030096 Αναφορά εργασίας εξαμήνου Mobile robots Rat s life Mapping Localization Είναι

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

Συστήματα Αυτομάτου Ελέγχου ΙΙ Γιώργος Σούλτης 167

Συστήματα Αυτομάτου Ελέγχου ΙΙ Γιώργος Σούλτης 167 Προσομοίωση πραγματικών συστημάτων στο MATLAB Είδαμε μέχρι τώρα πως μπορούμε να υπολογίσουμε την συνάρτηση μεταφοράς σε πραγματικά συστήματα. Ο υπολογισμός της συνάρτησης μεταφοράς στη ουσία είναι η «γραμμικοποίηση»

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3 Μάθημα 7ο: Επαναλαμβανόμενες ενέργειες (Loops) Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου ΑΝΤΙΚΕΙΜΕΝΑ ΜΑΘΗΣΗΣ 1. Τι σημαίνει η επανάληψη 2. Πώς χρησιμοποιείται

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

Σχεδίαση του αλγορίθμου για το παιχνίδι Rat s Life

Σχεδίαση του αλγορίθμου για το παιχνίδι Rat s Life H παρουσίαση περιλαμβάνει: Λίγα λόγια για την Τεχνητή Νοημοσύνη Λίγα λόγια για το πρόγραμμα Webots Τεχνικά χαρακτηριστικά του αυτόνομου E-puckmobile-robot Σχεδίαση του αλγορίθμου για το παιχνίδι Rat s

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

ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ

ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ ΑΝΩΤΑΤΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΤ. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. ΤΟΜΕΑΣ ΚΑΤΑΣΚΕΥΑΣΤΙΚΟΣ ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ ΑΝΑΠΤΥΞΗ XLS ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΩΝ ΣΥΝΤΕΤΑΓΜΕΝΩΝ ΤΩΝ

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2011 ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2011 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΠΡΑΚΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Αυτοματισμοί και

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

ΒΑΣΙΚΑ ΜΑΘΗΜΑΤΑ ΝΤΟΥΛΑΚΗΣ - ΜΕΝΙΟΥΔΑΚΗΣ ΕΠΑ.Λ ΕΛ. ΒΕΝΙΖΕΛΟΥ

ΒΑΣΙΚΑ ΜΑΘΗΜΑΤΑ ΝΤΟΥΛΑΚΗΣ - ΜΕΝΙΟΥΔΑΚΗΣ ΕΠΑ.Λ ΕΛ. ΒΕΝΙΖΕΛΟΥ ΒΑΣΙΚΑ ΜΑΘΗΜΑΤΑ ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ... 2 ΠΡΟΛΟΓΟΣ... 3 ΕΙΣΑΓΩΓΗ... 4 Η ΑΝΑΠΤΥΞΗ ΤΗΣ ΟΘΟΝΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ... 4 Ο ΕΚΠΑΙΔΕΥΤΗΣ ΡΟΜΠΟΤ... 5 ΤΟ ΠΑΡΑΘΥΡΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ... 5 ΤΑ ΚΟΥΜΠΙΑ ΚΑΙ ΤΑ ΜΠΛΟΚ...

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

Εισαγωγή στη Ρομποτική και τον Προγραμματισμό με τη χρήση του ρομπότ Thymio & του λογισμικού Aseba

Εισαγωγή στη Ρομποτική και τον Προγραμματισμό με τη χρήση του ρομπότ Thymio & του λογισμικού Aseba 5 ο Πανελλήνιο Επιστημονικό Συνέδριο Ένταξη και Χρήση των ΤΠΕ στην Εκπαιδευτική Διαδικασία Εισαγωγή στη Ρομποτική και τον Προγραμματισμό με τη χρήση του ρομπότ Thymio & του λογισμικού Aseba Κόμης Βασίλης

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

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE. ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»...

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE. ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»... Περιεχόμενα ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»....2 Πλοήγηση στο χάρτη... 3 Σχεδίαση στο χάρτη... 4 Εκτύπωση του χάρτη... 6 Μετρήσεις επάνω στο χάρτη... 9 Εμφάνιση

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

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

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

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

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

Έλεγχος κινητήρα συνεχούς ρεύματος με τρανζίστορ και Arduino Έλεγχος κινητήρα συνεχούς ρεύματος με τρανζίστορ και Arduino Στην κατασκευή αυτή ο σκοπός ήταν να ελέγξουμε την ταχύτητα ενός κινητήρα συνεχούς ρεύματος με τη χρήση ενός τρανζίστορ που θα χρησιμοποιηθεί

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

ΕΝΟΤΗΤΑ ΤΡΙΤΗ. Κατασκευή 3 ου Μέρους: Συναρμολόγηση Τηλεχειριστηρίου

ΕΝΟΤΗΤΑ ΤΡΙΤΗ. Κατασκευή 3 ου Μέρους: Συναρμολόγηση Τηλεχειριστηρίου ΕΝΟΤΗΤΑ ΤΡΙΤΗ Κατασκευή 3 ου Μέρους: Συναρμολόγηση Τηλεχειριστηρίου Για την ενότητα αυτή απαιτούνται: Εργαλεία - Κολλητήρι - Τρυπάνι - Αρίδα 0,25 - Κόφτης - Σταυροκατσάβιδο Υλικά - Κουτί ελέγχου - 2 κόκκινοι

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

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

ΚΑΤΑΣΚΕΥΗ ΠΑΡΑΛΛΗΛΟΓΡΑΜΜΩΝ ΜΕ ΧΡΗΣΗ LOGO 1 ΚΑΤΑΣΚΕΥΗ ΠΑΡΑΛΛΗΛΟΓΡΑΜΜΩΝ ΜΕ ΧΡΗΣΗ LOGO ΦΥΛΛΑ ΕΡΓΑΣΙΑΣ ΜΑΘΗΤΗ ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 1 1. Τοποθέτησε μια χελώνα στην επιφάνεια εργασίας. 2. Με ποια εντολή γράφει η χελώνα μας;.. 3. Γράψε την εντολή για να πάει

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

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

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

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

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

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

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

Λύσεις για τις ασκήσεις του lab5

Λύσεις για τις ασκήσεις του lab5 Εισαγωγή Λύσεις για τις ασκήσεις του lab5 Επειδή φάνηκε να υπάρχουν αρκετά προβλήματα σχετικά με τον τρόπο σκέψης για την επίλυση των προβλημάτων του lab5, θα συνοδεύσουμε τις λύσεις με αρκετές επεξηγήσεις,

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3 Μάθημα 1 ο : Περιγραφή του EV3 και του περιβάλλοντος προγραμματισμού του Σύλλογος Εκπαιδευτικών Πληροφορικής Χίου 2 3 4 ΑΝΙΚΕΙΜΕΝΑ ΜΑΘΗΣΗΣ 1. Πώς

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή Διατριβή ΑΥΤΟΝΟΜΟ ΣΥΣΤΗΜΑ ΑΥΤΟΜΑΤΗΣ ΠΡΟΕΙΔΟΠΟΙΗΣΗΣ ΣΕ ΣΤΑΥΡΟΔΡΟΜΙ Αλαμπρίτης Μηνάς Χριστοφή Δημήτρης Λεμεσός 2016 1 ΤΕΧΝΟΛΟΓΙΚΟ

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

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

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανοδική Κατασκευή Συντακτικού Δέντρου κατασκευή δέντρου

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

- Σχεδιασμός αυτοματισμού με τη χρήση ηλεκτροπνευματικών βαλβίδων

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

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

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Εργαστήριο 6 Εντολές Επανάληψης Η δομή Επιλογής στη PASCAL H δομή Επανάληψης στη PASCAL. Ρεύμα Εισόδου / Εξόδου.. Ρεύμα Εισόδου / Εξόδου. To πρόγραμμα γραφικών gnuplot. Γραφικά στη PASCAL. Σκοπός 6.1 ΕΠΙΔΙΩΞΗ

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

Μέρος Α Γνωριμία με το περιβάλλον προγραμματισμού του ρομπότ OTTO

Μέρος Α Γνωριμία με το περιβάλλον προγραμματισμού του ρομπότ OTTO OTTO ROBOT Εκπαιδευτικές Δραστηριότητες Μέρος Α Γνωριμία με το περιβάλλον προγραμματισμού του ρομπότ OTTO Δραστηριότητα 1 - Γνωριμία, περιγραφή Otto Τι είναι το ρομπότ Otto; Είναι ένα αλληλεπιδραστικό

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

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

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

Μεθοδολογικός σχεδιασμός πνευματικού αυτοματισμού με έμβολα

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

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

ΠΑΝΑΓΙΩΤΗΣ ΚΟΥΤΣΙΩΡΑΣ Α.Μ.: ΨΗΦΙΑΚΗ ΣΧΕΔΙΑΣΗ. Αναφορά Πρακτικής Εργασίας: Μετατροπέας Κώδικα BCD Σε Κώδικα GRAY

ΠΑΝΑΓΙΩΤΗΣ ΚΟΥΤΣΙΩΡΑΣ Α.Μ.: ΨΗΦΙΑΚΗ ΣΧΕΔΙΑΣΗ. Αναφορά Πρακτικής Εργασίας: Μετατροπέας Κώδικα BCD Σε Κώδικα GRAY ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΨΗΦΙΑΚΗ ΣΧΕΔΙΑΣΗ Αναφορά Πρακτικής Εργασίας: Μετατροπέας Κώδικα BCD Σε Κώδικα GRAY ΠΑΝΑΓΙΩΤΗΣ ΚΟΥΤΣΙΩΡΑΣ Α.Μ.: 2025201100037 Χειμερινό

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

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

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

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

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

ΚΑΝΟΝΙΣΜΟΙ «MAZE SOLVING»

ΚΑΝΟΝΙΣΜΟΙ «MAZE SOLVING» ΚΑΝΟΝΙΣΜΟΙ «MAZE SOLVING» Συγγραφέας: Οργανωτική Επιτροπή CYPRUS ROBOTEX CHALLENGE Πρωτότυπο στα Αγγλικά: raimond.paaru@robotex.ee www.robotex.ee Σελίδα: 1 Πίνακας Περιεχομένων 1 Εισαγωγή... 3 2 Στόχος...

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

Φυσικά μεγέθη. Φυσική α λυκείου ΕΙΣΑΓΩΓΗ. Όλα τα φυσικά μεγέθη τα χωρίζουμε σε δύο κατηγορίες : Α. τα μονόμετρα. Β.

Φυσικά μεγέθη. Φυσική α λυκείου ΕΙΣΑΓΩΓΗ. Όλα τα φυσικά μεγέθη τα χωρίζουμε σε δύο κατηγορίες : Α. τα μονόμετρα. Β. ΕΙΣΑΓΩΓΗ Φυσικά μεγέθη Όλα τα φυσικά μεγέθη τα χωρίζουμε σε δύο κατηγορίες : Α. τα μονόμετρα Β. τα διανυσματικά Μονόμετρα ονομάζουμε τα μεγέθη εκείνα τα οποία για να τα γνωρίζουμε χρειάζεται να ξέρουμε

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

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

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

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