Ομάδα 8ου Γυμνασίου Περιστερίου – Robuino
Τα μέλη της ομάδας αποτελούν οι μαθητές της Γ’ τάξης
Αλέξανδρος Κεφαλάς – Γιάννης Μανουσάκης – Δημήτρης Μίγκος
Διδάσκοντες / Σύμβουλοι Εκπαιδευτικοί:
Καλοδίκης Ανδρέας (ΠΕ86-Πληροφορικής) & Μουρελάτου Ζαχαρούλα (ΠΕ82-Μηχανολόγος)
Το Προτεινόμενο έργο μας για το 1ο Πανελλήνιο Διαγωνισμό Εκπαιδευτικής Ρομποτικής & Physical Computing Ανοιχτών Τεχνολογιών – Το παιχνίδι ArduPlane και το χειριστήριό του
Περιγραφή του παιχνιδιού ArduPlane και του χειριστηρίου του
Η πρότασή μας περιλαμβάνει τη δημιουργία προγράμματος παιχνιδιού (σε προγραμματιστικό περιβάλλον Scratch 2.00) καθώς και αντίστοιχου χειριστηρίου μέσω του οποίου θα παίζεται το παιχνίδι (με χρήση Arduino uno/Arduino nano). Το παιχνίδι περιλαμβάνει αεροπλάνο το οποίο θα κινείται δεξιά αριστερά στη σκηνή με τη περιστροφή του ποτενσιόμετρου το οποίο θα υπάρχει στο κύκλωμα του χειριστηρίου. Στόχος μας είναι η αποφυγή της σύγκρουσης με εχθρικό αεροπλάνο που έρχεται από την αντίθετη κατεύθυνση. Κατά την έναρξη του παιχνιδιού στο χειριστήριο θα είναι αναμμένα τρία λαμπάκια (leds) που δείχνουν ότι έχουμε τρεις ζωές. Με απώλεια κάθε ζωής (σύγκρουση με εχθρικό αεροπλάνο) θα σβήνει και από ένα λαμπάκι στο χειριστήριο ενώ παράλληλα θα ακούγεται και ήχος από piezo buzzer. Όταν σβήσουν όλα τα λαμπάκια (απώλεια όλων των ζωών) το παιχνίδι θα τερματίζεται. Στο χειριστήριο επιπλέον θα υπάρχουν δύο πλήκτρα (buttons):
• με πάτημα στο ένα πλήκτρο (button1) θα μπορεί το αεροπλάνο μας να πυροβολεί προς το εχθρικό αεροπλάνο και όταν τα πυρά μας το πετυχαίνουν θα κερδίζουμε 20 πόντους οπότε το σκορ μας θα αυξάνεται
• με πάτημα στο δεύτερο πλήκτρο (button2) θα αυξάνεται ο βαθμός δυσκολίας του παιχνιδιού με εμφάνιση δύο εχθρικών αεροπλάνων ταυτόχρονα σε διαφορετικό σκηνικό.
Δημιουργία Αποθετηρίου
Στο αποθετήριο που δημιουργήθηκε: https://github.com/8gymnperist/Robuino γίνεται αναφορά στους στόχους του έργου και σε ποιους απευθύνεται, παρουσιάζεται η πλήρης πορεία ανάπτυξής του (λογισμικού και υλικού), το εκπαιδευτικό υλικό που χρησιμοποιήθηκε, αλλά και οπτικό υλικό με φωτογραφίες και βίντεο σχετικά με την τεκμηρίωση και την υλοποίησή του. Τα ίδια αναπτύσσονται και στη παρούσα ιστοσελίδα.
Προαπαιτούμενες γνώσεις των μαθητών
Το έργο υλοποίησε η ομάδα μας αποτελούμενη από τρεις μαθητές της Γ’ Γυμνασίου. Θεωρούμε ότι μπορεί να υλοποιηθεί από μαθητές αυτής της τάξης (με προϋποθέσεις βέβαια που αναφέρονται παρακάτω), αλλά και από μεγαλύτερους μαθητές του Λυκείου.
Όσον αφορά το απαιτούμενο προγραμματιστικό τμήμα του έργου, οι μαθητές, είναι ήδη εξοικειωμένοι με βασικές έννοιες προγραμματισμού (όπως προβλέπεται από το αναλυτικό πρόγραμμα του μαθήματος της Πληροφορικής για το Γυμνάσιο). Η επιλογή του Scratch 2 (scratch.mit.edu) ως προγραμματιστικό περιβάλλον έγινε γιατί αποτελεί μια γλώσσα προγραμματισμού η οποία δίνει έμφαση στην αλγοριθμική λογική και υποστηρίζει το μαθητή να προγραμματίσει με εύκολο τρόπο – drag and drop – χρησιμοποιώντας κατάλληλα blocks τα οποία αναπαριστούν έτοιμες βασικές προγραμματιστικές δομές. Επίσης ήταν η γλώσσα που γνώριζε η ομάδα μας και παράλληλα με την επέκτασή του (s2aio με πλακίδια) δίνεται η δυνατότητα στον αρχάριο με ευκολία να προσεγγίσει το προγραμματισμό του μικροελεγκτή του Arduino. Ακόμη, στα πλαίσια του περιβάλλοντος Scratch, μπορούν να υλοποιηθούν αυθεντικές, ευχάριστες και με νόημα για το μαθητή δραστηριότητες που αυξάνουν το ενδιαφέρον όπως δημιουργία κινούμενων γραφικών (animations), και διαδραστικών παιχνιδιών. Τα παιχνίδια θεωρούνται ένα παλιό και διαχρονικό εργαλείο για την εκπαίδευση και είναι μεταξύ των πιο ευχάριστων δραστηριοτήτων.. Απαιτείται βέβαια η οικοδόμηση γνώσεων σε σχέση με τη λειτουργία του μικροελεγκτή και ενός μικρού συνόλου εντολών για τον προγραμματισμό του. (s2aio: https://github.com/MrYsLab/s2aio ). [2]
Όσον αφορά τη γνώση Φυσικών εννοιών χρειάζεται οι μαθητές να έχουν προσεγγίσει το νόμο του Ohm και να έχουν οικοδομήσει γνώσεις και δεξιότητες σχετικά με τη δημιουργία απλών κυκλωμάτων (Πηγή – αντίσταση – led).
Από τα Μαθηματικά χρειάζεται η γνώση των αναλογιών και των συντεταγμένων σημείου σε ορθοκανονικό σύστημα αξόνων.
Ο σκοπός και οι στόχοι σε σχέση με τη πρόταση και το πρόγραμμα σπουδών
Σκοπός
Σκοπός μας είναι μέσα από την ανάπτυξη του έργου (παιχνίδι Arduplane) να εμπεδωθούν και να οικοδομηθούν από τους εμπλεκόμενους γνώσεις και δεξιότητες σχετικά με τους μικροελεγκτές και τον προγραμματισμό, την φυσική, τα μαθηματικά και την τεχνολογία. Οι εμπλεκόμενοι να αισθανθούν ότι εκτός από απλοί χρήστες και καταναλωτές της τεχνολογίας, μπορούν να είναι και οι ίδιοι δημιουργοί.
Στόχοι
Α) Ως προς το προγραμματισμό:
- να επιλέγουν και να χρησιμοποιούν κατάλληλες μεταβλητές
- να εμπεδώσουν τη λειτουργία και την εφαρμογή των προγραμματιστικών δομών: α) της ακολουθίας, β) της επανάληψης και γ) της επιλογής
- να προγραμματίζουν τον μικροελεγκτή του Arduino uno με το ρεπερτόριο εντολών της επέκτασης s2aio στο προγραμματιστικό περιβάλλον Scratch 2.
B) Ως προς τη Φυσική:
- να γνωρίσουν και να χρησιμοποιούν για το σχεδιασμό και την κατασκευή ηλεκτρικών κυκλωμάτων τα εξής ηλεκτρικά παθητικά στοιχεία: αντίσταση, διακόπτη (button), led, ποτενσιόμετρο.
- να εφαρμόζουν το νόμο του Ohm σε απλά κυκλώματα για τον υπολογισμό της έντασης του ηλεκτρικού ρεύματος
- να χρησιμοποιούν breadboard για την κατασκευή πρότυπων ηλεκτρονικών κυκλωμάτων.
Γ) Ως προς τα Μαθηματικά:
- να εφαρμόζουν και να χρησιμοποιούν αναλογίες για την επίλυση καθημερινών προβλημάτων.
- να γνωρίζουν την έννοια των συντεταγμένων σημείου και να προσδιορίζουν απ’ αυτές σημεία σε ορθοκανονικό σύστημα συντεταγμένων (όπως στη σκηνή προγραμματιστικού περιβάλλοντος του Scratch 2)
Δ) Ως προς την Τεχνολογία:
- η κατασκευή με ασφάλεια απλών ηλεκτρικών κυκλωμάτων
- η ανάπτυξη δεξιοτήτων συγκόλλησης ηλεκτρονικών στοιχείων σε διάτρητη πλακέτα
- η σωστή και ασφαλείς χρήση των κατάλληλων εργαλείων (συγκόλλησης κ.α.)
Τρόπος οργάνωσης και λειτουργίας ομάδας / Ο ρόλος των εκπαιδευτικών
Οι μαθητές υλοποίησαν δραστηριότητες γνωστικής προετοιμασίας για την οικοδόμηση των γνώσεων σχετικά με το μικροελεγκτή και το προγραμματισμό του αλλά και των απαιτούμενων εννοιών από τα αντικείμενα της Φυσικής και των μαθηματικών και οι οποίες αναφέρονται στο τμήμα του εκπαιδευτικού υλικού αυτής της εργασίας.
Οι δραστηριότητες υλοποιήθηκαν από την ομάδα αλλά και από άλλους εθελοντές μαθητές στα πλαίσια πολιτιστικού προγράμματος που εντάχθηκε στη θεματολογία “Τεχνολογικά επιτεύγματα & Ψηφιακά Παιχνίδια” με τίτλο: “Δημιουργώ με τον μικροελεγκτή Arduino και το Scratch”. Η ομάδα συνεργαζόταν κάθε Δευτέρα μετά το πέρας του σχολικού προγράμματος για δύο διδακτικές ώρες κάθε φορά.
Μέσω συνεργατικής μάθησης αναπτύχθηκαν στους μαθητές ειδικές δεξιότητες, όπως η ανάληψη ρόλων και αρμοδιοτήτων, η υπευθυνότητα, η παρατήρηση, η συνομιλία, η συν-κατασκευή της γνώσης, ο σεβασμός,κ.ά.. Με αυτή τη προσέγγιση, οι μαθητές κατασκεύασαν το κύκλωμα του χειριστηρίου και προγραμμάτισαν το παιχνίδι συνδυάζοντας γνώσεις και δεξιότητες από διαφορετικά γνωστικά αντικείμενα όπως αναφέρθηκαν παραπάνω.
Ο ρόλος των εμπλεκόμενων εκπαιδευτικών ήταν κυρίως συντονιστικός και καθοδηγητικός των μαθητών προκειμένου να οικοδομήσουν την γνώση και να ολοκληρώσουν το έργο τους. Ως καθοδηγητές φρόντισαν να μην δίνουν έτοιμες απαντήσεις, αλλά να δημιουργούν κατάλληλες μαθησιακές καταστάσεις και προβληματισμούς ώστε οι ίδιοι οι μαθητές ν’ ανακαλύπτουν την λύση. Επίσης, ενθάρρυναν κάθε προσπάθεια για να ωθήσουν τους μαθητές στην έρευνα και τον προβληματισμό και εκτός της σχολικής αίθουσας. Στην επίτευξη των παραπάνω συνέβαλε και η αξιοποίηση πλατφόρμας Μoodle εγκατεστημένης στο Πανελλήνιο Σχολικό Δίκτυο http://users.sch.gr/kalodikis/moodle33/.
Η οργάνωση του έργου
Το έργο υλοποιήθηκε με τα παρακάτω βήματα:
BHMA 1o
-
Εγκατάσταση απαιτούμενου ελεύθερου και ανοικτού Λογισμικού
-
Προετοιμασία Ομάδας
BHMA 2o
-
Οι Επιφάνειες διεπαφής του παιχνιδιού (Πίστες)
-
Το κύκλωμα του Χειριστηρίου σε breadboard
BHMA 3o
Δημιουργία του Προγράμματος του Παιχνιδιού
BHMA 4o
-
Κατασκευή χειριστηρίου με διάτρητη πλακέτα και τοποθέτηση σε κουτί
-
Έλεγχος λειτουργίας σε διάφορα λειτουργικά σύστημα
Στη συνέχεια παραθέτουμε την αναλυτική περιγραφή των παραπάνω βημάτων:
BHMA 1.1– Εγκατάσταση απαιτούμενου Λογισμικού
Η επέκταση s2aio για τον επεξεργαστή εκτός σύνδεσης (Offline Editor) του προγραμματιστικού περιβάλλοντος Scratch 2.0
Με την επέκταση s2aio μπορούμε να προγραμματίσουμε, να ελέγξουμε και να παρακολουθήσουμε το Arduino (board) χρησιμοποιώντας το περιβάλλον οπτικού προγραμματιστικού Scratch 2.0 χωρίς να χρειάζεται να μάθουμε τη C. Περιλαμβάνει ένα σύνολο εντολών προγραμματισμού (μπλοκ) σε πολλές γλώσσες μεταξύ των οποίων και την Ελληνική. .
Η επέκταση έχει τα παρακάτω χαρακτηριστικά:
- Είναι γραμμένη σε Python χρησιμοποιώντας τη νέα βιβλιοθήκη Python 3.5 asyncio.
- Εγκαθίσταται σε Windows, Mac και Linux (και Raspbian σε Raspberry Pi).
- Είναι εύκολη στην εγκατάσταση.
- Και εύχρηστη.
H Εγκατάσταση της επέκτασης s2aio (για windows 7) [3]
Πριν εγκαταστήσετε την επέκταση s2aio απαιτούνται οι παρακάτω ενέργειες:
- Εγκατάσταση Python 3.5
- Εγκατάσταση του IDE του Arduino
- Εγκατάσταση του FirmataPlus στο Arduino σας – ΑΠΑΙΤΕΙΤΑΙ!
- Εγκατάσταση του προγραμματιστικού περιβάλλοντος Scratch 2.0 (offline Editor)
Εγκατάσταση Python 3.5
Για να εγκαταστήσετε το Python 3.5, μεταβείτε στην αρχική σελίδα της Python και κάντε λήψη της διανομής 3.5 για το λειτουργικό σας σύστημα.Εάν έχετε εγκατεστημένη προηγούμενη έκδοση (π.χ. τη Python 2.7), δεν χρειάζεται να την αφαιρέσετε. Πρέπει οπωσδήποτε να χρησιμοποιήσετε τη Python 3.5 για να εκτελέσετε s2aio.
Κατά τη διάρκεια της διαδικασίας εγκατάστασης, όπως φαίνεται και στο παραπάνω παράθυρο (περιβάλλον windows) υπάρχουν δύο πλαίσια ελέγχου όπως αυτό για να προσθέσουμε τη Python 3.5 στη διαδρομή (path), βεβαιωθείτε ότι τα έχετε επιλέξει (τσεκάρει) πριν προχωρήσετε στην εγκατάσταση. Μετά την εγκατάσταση, ανοίξτε ένα παράθυρο εντολών και πληκτρολογήστε: python -V. Θα πρέπει να δείτε Python 3.5.0 ή κάτι παρόμοιο.
Εγκατάσταση του IDE του Arduino
Εγκαταστήστε την τελευταία έκδοση του αρχείου Arduino IDE από τη σελίδα λήψης του Arduino. Κατά την εγκατάσταση, μπορεί να σας ζητηθεί να φορτώσετε ένα πρόγραμμα οδήγησης για σύνδεση USB / σειριακής επικοινωνίας. Φορτώστε το πρόγραμμα οδήγησης.
Μετά την εγκατάσταση, συνδέστε το Arduino στον υπολογιστή σας με το καλώδιο USB.
Ανοίξτε το IDE και από το μενού Εργαλεία, επιλέξτε τον τύπο του Arduino (board) που έχετε και τη θύρα στην οποία το έχετε συνδέσει.
Στη συνέχεια, από το μενού Αρχείο / Παραδείγματα / 01.Basics, επιλέξτε το πρόγραμμα Blink και μεταφορτώστε το στο Arduino. Έτσι επαληθεύουμε ότι μπορούμε να επικοινωνήσουμε με το Arduino.
Μόλις αυτό είναι επιτυχές, μεταφορτώστε το StandardFirmata (που παρέχεται με το IDE του Arduino) ή το FirmataPlus.
Το FirmataPlus πρέπει οπωσδήποτε να φορτωθεί στο Arduino για να μπορείτε να χρησιμοποιήσετε είτε τις ιδιότητες σόναρ ή ήχου του s2aio.
Ένα χρήσιμο βίντεο για τα παραπάνω που αφορούν την εγκατάσταση και τον έλεγχο του IDE μπορείτε να δείτε στη παρακάτω διεύθυνση:
https://www.youtube.com/watch?time_continue=313&v=5YDsX6zZ3b4
Μεταφόρτωση του FirmataPlus στο Arduino
Το FirmataPlus είναι μια βελτιωμένη έκδοση του StandardFirmata που περιλαμβάνεται σε αυτή τη διανομή.
ΠΡΟΣΟΧΗ: Το FirmataPlus είναι διαφορετικό από το StandardFirmataPlus. Το StandardFirmataPlus δεν θα λειτουργήσει σωστά.
Το FirmataPlus παρέχει υποστήριξη για:
- HC-SR04 συσκευές εντοπισμού απόστασης (Sonar)
- Υποστήριξη μοτέρ (Stepper Motor )
- Γεννήτρια τόνων
Για όσους χρησιμοποιούν τις πλακέτες Leonardo και Mega 2560 , θα χρειασθεί να μεταφορτώσουν το FirmataPlus32u4 αντί για το FirmataPlus.
Το FirmataPlus διανέμεται ως αρχείο zip. Αν έχετε κατεβάσει την διανομή pyamta_aio από το Github και έχετε εξάγει τα αρχεία, θα βρείτε ένα αρχείο libraries.zip στον κατάλογο του FirmataPlus. Μπορείτε επίσης να το κατεβάσετε απευθείας από εδώ. Κάντε κλικ στο κουμπί “view raw” για λήψη.
Ανοίξτε το IDE του Arduino και επιλέξτε Αρχείο / Προτιμήσεις για να καθορίσετε τη θέση του προγράμματος.
Κλείστε το IDE του Arduino και εξαγάγετε το αρχείο libraries.zip στον κατάλογο τοποθεσίας sketchbook.
Ανοίξτε ξανά το IDE του Arduino, επιλέξτε Αρχείο / Παραδείγματα / FirmataPlus / FiramataPlus και μεταφορτώστε το στο Arduino.
Εάν βλέπετε προειδοποιήσεις κατά την φόρτωση του FirmataPlus στο IDE του Arduino, βεβαιωθείτε ότι έχετε ρυθμίσει το επίπεδο προειδοποιήσεων μεταγλωττιστή στο “Default” στην οθόνη Αρχείο / Προτιμήσεις. Εάν εξακολουθείτε να βλέπετε τις προειδοποιήσεις, πάρτε το τελευταίο αντίγραφο του libraries.zip και εγκαταστήστε το ξανά.
Εγκατάσταση του προγραμματιστικού περιβάλλοντος Scratch 2.0 (Offline Editor)
Για χρήστες Windows και Mac, μεταβείτε στη σελίδα λήψης του Scratch και ακολουθήστε τις οδηγίες εγκατάστασης για το λειτουργικό σας σύστημα.
Εγκατάσταση του s2aio
Βεβαιωθείτε ότι διαθέτετε σύνδεση στο διαδίκτυο. Για χρήστες των Windows, ανοίξτε ένα παράθυρο εντολών και πληκτρολογήστε:
pip install s2aio
Κατά την εγκατάσταση, αποδεχτείτε την προεπιλεγμένη θέση εγκατάστασης.
Ξεκινώντας s2aio
Η εντολή s2aio δέχεται τις ακόλουθες επιλογές:
s2aio [-h] [-c CLIENT] [-L LANGUAGE] [-p COMPORT] [-b BASE_PATH] [-s SLEEPER] [-v] [-r RPI]
για τα προαιρετικά ορίσματα:
- -h, –help δείχνουν αυτό το μήνυμα βοήθειας και έξοδο
- -c CLIENT προεπιλογή = scratch [scratch | snap | no_client]
- -l LANGUAGE 1 = Αγγλικά (προεπιλογή) 2 = Κινέζικα (zh-CN) 3 = Κινέζικα (zh-TW) 4 = Ολλανδικά (NL) 5 = Γαλλικά (FR) 6 = Γερμανικά (DE) 7 =Ελληνικά (GR) 8=Κορεατικά (KO) 9 = Ιταλικά (ΙΤ) 10 = Πορτογαλικά (PT) 11 = Ισπανικά (ES)
- -p COMPORT Arduino θύρα COM – π.χ. / dev / ttyACMO ή COM3
- -b BASE_PATH Διαδρομή αρχείου Python – π.χ. /usr/local/lib/python3.5/dist-pakages/ s2aio
- -s SLEEPER Ρύθμιση χρονικού ορίου για να επιτραπεί η αρχικοποίηση του Scratch.
- -v έκδοση εκτύπωσης και διαδρομή Python
- -r RPI Ρυθμίστε σε TRUE όταν πρόκειται για εγκατάσταση σε Raspberry Pi
ΠΡΟΣΟΧΗ: Η επιλογή γλώσσας είναι διαθέσιμη μόνο για το Scratch.
Για εκτέλεση με χρήση της Ελληνικής γλώσσας και επικοινωνία με Arduino στη COM4, στο παράθυρο εντολών πληκτρολογούμε:
s2aio -p com4 -l 7
οπότε, εμφανίζεται το παράθυρο του Scratch 2 Offline Editor στο οποίο με πάτημα στις “Άλλες εντολές” βλέπουμε το παρακάτω παράθυρο που περιλαμβάνει τις εντολές της επέκτασης s2aio.
BHMA 1.2 – Προετοιμασία Ομάδας
Οι ομάδα μας με την εφαρμογή κατάλληλων φύλλων εργασίας προσέγγισε το βασικό υλικό για το Arduino, μελέτησε και εφάρμοσε τις εντολές της επέκτασης s2aio υλοποιώντας δραστηριότητες με χρήση φωτοδιόδων (leds), διακοπτών, ποτενσιομέτρου, buzzer, κ.ά.
Όσον αφορά το προγραμματιστικό τμήμα του έργου, οι μαθητές, ήταν ήδη εξοικειωμένοι με το περιβάλλον του Scratch 2.0. στο οποίο είχαν αναπτύξει αρκετές δραστηριότητες κατά την διδασκαλία του μαθήματος της Πληροφορικής.
Τα μέλη της ομάδας, ήδη είχαν προσεγγίσει τις βασικές έννοιες του ηλεκτρισμού και της δημιουργίας απλών ηλεκτρικών κυκλωμάτων, στο μάθημα της Φυσικής.
Ο ρόλος των εκπαιδευτικών υπήρξε συντονιστικός και καθοδηγητικός. Φρόντισαν να μην δίνουν έτοιμες απαντήσεις, να ωθούν τους μαθητές στην έρευνα και τον προβληματισμό και εκτός της σχολικής αίθουσας, αλλά και να δημιουργούν κατάλληλες μαθησιακές καταστάσεις και προβληματισμούς εντός αυτής, ώστε οι ίδιοι οι μαθητές ν’ ανακαλύπτουν και να καταλήγουν στις λύσεις.
Παρακάτω παρουσιάζεται με σύντομο τρόπο αυτό το εκπαιδευτικό υλικό με το οποίο προετοιμάσθηκε η ομάδα ώστε τα μέλη της να οικοδομήσουν τις απαραίτητες γνώσεις και ν’ αποκτήσουν τις κατάλληλες δεξιότητες που τους οδήγησαν τελικά στην υλοποίηση του παιχνιδιού Arduplane.
Το Arduino
Το Arduino είναι μια ηλεκτρονική πλατφόρμα ανοικτού κώδικα και σχεδιασμού, που αποτελείται από ένα board που χρησιμοποιεί μικροελεγκτή, το οποίο μας δίνει ένα αριθμό ακίδων (pins) οι οποίες μπορεί να λειτουργήσουν είτε ως είσοδοι είτε ως έξοδοι. Αυτές τις εισόδους ή εξόδους μπορούμε να τις διαχειριστούμε γράφοντας κώδικα στο περιβάλλον του Scratch 2.0 ( με εγκαταστημένη την επέκταση s2aio).
Αυτό που θα χρειαστούμε για αρχή για τους πειραματισμούς μας είναι:
- μια μονάδα, όπως είναι το Arduino Uno το οποίο με 14 ψηφιακές εισόδους/εξόδους και 6 αναλογικές εισόδους (Pins) είναι υπεραρκετό για τις εφαρμογές μας (και το αντίστοιχο usb καλώδιο για να συνδεθεί στον υπολογιστή σας),
- καλώδια για να συνδέουμε τα pins με ότι διαχειριζόμαστε,
- μια βάση όπου θα κατασκευάζουμε τα κυκλώματά μας (breadboard) και τέλος
- μερικά leds, αντιστάσεις, πυκνωτές, ποτενσιόμετρα, αισθητήρες κτλ για τις πρώτες μας υλοποιήσεις.
Πηγές ενέργειας για το Arduino
Το Arduino μπορεί να δουλέψει με παροχή από τη USB θύρα του υπολογιστή μας ή με αυτόνομη παροχή από μπαταρία. Για παροχή ηλεκτρικής ενέργειας στη μονάδα από εξωτερική πηγή δέχεται τροφοδοσία από εξωτερικό βύσμα (συνιστώμενη παρεχόμενη τάση λειτουργίας είναι στα 7V έως 12V), ώστε να μπορεί να λειτουργήσει και να δώσει σταθερά τα 5V στην έξοδο (βλ. http://arduino.cc/en/Main/arduinoBoardUno).
Μπορούμε να συνδέσουμε την πηγή απευθείας στα pins που προορίζονται για αυτό το σκοπό: (+) στο Pin VCC IN και (-) στο Gnd δίπλα του.
Στην περίπτωση που είναι συνδεδεμένη η μονάδα μας μόνιμα με θύρα USB τότε δουλεύει χωρίς πρόβλημα με τα 5V που παρέχει η USB θύρα.
Ακίδες εισόδου/εξόδου (Pins) του Arduino
Το Arduino Uno R3 έχει 14 ψηφιακές θύρες εισόδου ή εξόδου (digital input/outpit pins) και έξι αναλογικές εισόδους (analog input pins). Οι 14 ψηφιακές θύρες ονομάζονται με αντίστοιχους αριθμούς από το 0 έως το 13, ενώ οι έξι αναλογικές με το γράμμα Α ακολουθούμενο από ένα αριθμό από το 0 μέχρι το 5 (π.χ. Α3). Στην έξοδο τα pins μπορούν να δώσουν 0 έως και 5V τάση. Από τις 14 ψηφιακές θύρες οι έξι, και ειδικότερα οι 3, 5, 6, 9, 10, 11, είναι και PWM θύρες (Pulse Width Modulation), δηλαδή μπορούν να προσομοιώσουν αναλογικές εξόδους.
Έτσι, συνοπτικά για την είσοδο και έξοδο έχουμε:
- Για ψηφιακή είσοδο, χρησιμοποιούμε τις 14 ψηφιακές 0..13. Όταν δουλεύουν ψηφιακά, η είσοδος μπορεί να είναι ή 0 ή 5V, με τον χαρακτηρισμό 0 ή 1.
- Για ψηφιακή έξοδο, χρησιμοποιούμε τις 14 ψηφιακές από 0..13. Όταν δουλεύουν ψηφιακά, η έξοδος μπορεί να είναι 0 ή 5V, με τον χαρακτηρισμό 0 ή 1.
- Για αναλογική είσοδο, δηλαδή να διαβάσουμε τιμές δυναμικού στο διάστημα 0 έως 5V, χρησιμοποιούμε τις έξι αναλογικές θύρες A0..A5.
- Για αναλογική έξοδο, μπορούμε να χρησιμοποιήσουμε τις έξι PWM ψηφιακές θύρες (3, 5, 6, 9, 10, 11), οι οποίες θα μας δώσουν δυναμικό εξόδου όποιας τιμής θέλουμε στο διάστημα από 0 έως 5V.
Η επέκταση s2aio για το Scratch2.0
Η επέκταση s2aio παρέχει δέκα προσαρμοσμένα μπλοκ (εντολές) προγραμματισμού.
Τα μπλοκ αυτά βρίσκονται στην καρτέλα “Άλλες Εντολές”, όπως εικονίζονται παρακάτω.
Όπως αναφέρθηκε, η κύρια λειτουργία του μικροελεγκτή του Arduino βασίζεται στο να ελέγχει τις ακίδες που διαθέτει και είτε να δίνει ρεύμα (έξοδοι) είτε να παίρνει ρεύμα από αυτές (είσοδοι). Στην αρχή κάθε προγράμματός μας θα χρειαστεί να χαρακτηρίζουμε τα Pins που θα χρησιμοποιούμε ως εισόδους ή ως εξόδους.
Για να μπορέσουμε να δώσουμε ρεύμα προς τα έξω μέσω μιας ακίδας (pin) θα πρέπει πρώτα να έχει αυτή οριστεί ως εξόδου, όπως είδαμε στην προηγούμενη παράγραφο. Ακολούθως, με χρήση της κατάλληλης εντολής μπορούμε να δώσουμε κάθε φορά το επιθυμητό δυναμικό προς τα έξω.
Αντίστοιχα, για να “διαβάσουμε” από μια είσοδο, θα πρέπει αρχικά να την ορίσουμε ως είσοδο και με χρήση του κατάλληλου μπλοκ (εντολής) να διαβάζουμε την αντίστοιχη τιμή.
Οι εντολές της επέκτασης s2aio
Εντολή για τη ρύθμιση ψηφιακού ακροδέκτη (pin)
Αυτό το μπλοκ (εντολή) διαμορφώνει έναν ψηφιακό ακροδέκτη για να λειτουργεί είτε σαν ψηφιακή είσοδος, είτε σαν ψηφιακή έξοδος.
Εισάγουμε τον αριθμό του PIN του οποίου τη λειτουργία θέλουμε να ρυθμίσουμε και στην αναπτυσσόμενη λίστα στη δεξιά πλευρά του μπλοκ επιλέγουμε την επιθυμητή λειτουργία από τις παρακάτω:
Λειτουργία | Τύπος λειτουργίας |
Είσοδο | Είσοδος |
Έξοδο | Έξοδος |
PWM | Έξοδος |
Σέρβο | Έξοδος |
Tόνος | Έξοδος |
Σόναρ | Είσοδος |
Όπως έχει αναφερθεί παραπάνω για να χρησιμοποιήσουμε Τόνο ή Σόναρ, το FirmataPlus πρέπει να μεταφορτωθεί στο Arduino.
Στην αριστερή πλευρά του μπλοκ υπάρχει μια πτυσσόμενη λίστα Ενεργοποίηση / απενεργοποίηση.
Αυτές οι τιμές ισχύουν μόνο για τις λειτουργίες τύπου εισόδου. Εάν είναι ενεργοποιημένη (η προεπιλογή), θα μπορούμε να έχουμε αλλαγές δεδομένων στον αντίστοιχο ακροδέκτη. Εάν είναι απενεργοποιημένη, δεν θα εμφανιστούν αλλαγές για τον ακροδέκτη (PIN) στο ψηφιακό μπλοκ ανάγνωσης.
Εάν ο ακροδέκτης έχει ρυθμιστεί για είσοδο σόναρ, οι τιμές των δεδομένων ανακτώνται χρησιμοποιώντας το μπλοκ που φαίνεται παραπάνω, της ψηφιακής ανάγνωσης.
ΠΡΟΣΟΧΗ: Οι ακίδες Arduino περιγράφονται στο επίπεδο υλικού ως μέλη μιας ομάδας 8 ακίδων. Η απενεργοποίηση ή η ενεργοποίηση ενός ακροδέκτη εισόδου θα επηρεάσει και τα οκτώ μέλη της ομάδας του pin.
ΣΗΜΕΙΩΣΗ: Η διαμόρφωση για λειτουργία Tone (Τόνος) και Servo (Σέρβο) μπορεί να επηρεάσει τη λειτουργία PWM. Ο τόνος θα επηρεάσει την έξοδο PWM στις ακίδες 3 και 11 (σε boards εκτός του Mega). Σε boards διαφορετικά από το Mega, η ρύθμιση Σέρβο θα επηρεάσει τη λειτουργία PWM στις ακίδες 9 και 10. Στο Mega, μπορεί να επηρεάσει το PWM στις ακίδες 10 και 11.
Εντολή για τη ρύθμιση αναλογικού ακροδέκτη εισόδου (pin: Α0, Α1, Α2, Α3, Α4, Α5)
To Arduino έχει όπως είδαμε, 6 αναλογικές εισόδους, οι οποίες χαρακτηρίζονται με τα σύμβολα A0, A1, A2, A3, A4, A5. Μπορούμε να συνδέσουμε την έξοδο κάποιου αναλογικού εξαρτήματος (π.χ. ενός ποτενσιόμετρου) ή αισθητήρα σε μια απ’ αυτές τις εισόδους του Arduino και να διαβάζουμε την τιμή της.
Με την παρακάτω εντολή ρυθμίζουμε μία από αυτές τις ακίδες (pins) για αναλογική πηγή εισόδου (ακίδες που επισημαίνονται με έναν δείκτη ‘A’ στο Arduino )
Εισαγάγουμε τον αριθμό της ακίδας (pin) χωρίς το γράμμα ‘A’, για παράδειγμα για να εισάγουμε τον ακροδέκτη A5, απλώς πληκτρολογούμε το 5.
Η πτυσσόμενη λίστα στην αριστερή πλευρά της εντολής μας επιτρέπει να επιλέξουμε ή όχι, να υπάρχει η δυνατότητα ώστε να διαβάζουμε τις μεταβολές δεδομένων με την εντολή: “Διάβασε Αναλογική Είσοδο”.
Εάν είναι ενεργοποιημένη η επιλογή, τότε μπορούμε να διαβάσουμε μία από τις ακίδες (pins) με την εντολή:
Εάν έχει επιλεγεί απενεργοποίηση, η εντολή “Διάβασε Αναλογική Είσοδο” θα εμφανίσει την τελευταία τιμή που λάβαμε πριν απενεργοποιηθεί.
Για τις αναλογικές ακίδες, σε αντίθεση με τις ψηφιακές ακίδες, η ενεργοποίηση / απενεργοποίηση είναι ειδική για τον καθορισμένο ακροδέκτη και όχι για μια ομάδα ακίδων. Η ενεργοποίηση ή η απενεργοποίηση επηρεάζει μόνο τον επιλεγμένο ακροδέκτη (pin) και κανένα άλλο.
Εντολή για ψηφιακή εγγραφή
Αυτή η εντολή ρυθμίζει το δυναμικό σ’ ένα pin ψηφιακής εξόδου.
Εισάγουμε στον αριθμό pin π.χ. 12 και επιλέγουμε από την αναπτυσσόμενη λίστα στη δεξιά πλευρά είτε το μηδέν για έξοδο 0 Volts είτε το 1 για έξοδο 5Volts.
Εντολή για αναλογική εγγραφή
Κάποια από τα 14 Pins του Arduino έχουν την ένδειξη ~, δηλαδή μπορούν να προσομοιώσουν την αναλογική έξοδο μέσω παλμοκωδικής διαμόρφωσης (PWM).
Έτσι, με τιμές από το 0 μέχρι το 255 προσομοιώνουμε (αναλογικά) τιμές στο διάστημα από 0 έως 5V.
Με την εντολή ρυθμίζουμε έναν ακροδέκτη για έξοδο PWM.
Στη παραπάνω εντολή καταχωρίζουμε στον αριθμό PIN (κάποιο από τους αριθμούς: 3, 5, 6, 9, 10, 11) και στην τιμή VAL βάζουμε ένα ακέραιο αριθμό από 0 έως 255.
Αν βάλουμε στο VAL τιμή 0 θα έχουμε στο αντίστοιχο pin 0 V, ενώ αν βάλλουμε τιμή 255 θα έχουμε έξοδο 5 V. Αν βάλλουμε κάποια άλλη ακέραια τιμή π.χ. 153 θα έχουμε στο pin μια έξοδο 3 V.
ΠΡΟΣΟΧΗ: Η ρύθμιση των ακίδων, εκτός από αυτόν τον ακροδέκτη, για λειτουργία Tone ή Servo μπορεί να επηρεάσει τη λειτουργία PWM. Ο τόνος θα επηρεάσει την έξοδο PWM στις ακίδες 3 και 11 (σε boards εκτός του Mega). Σε boards διαφορετικά από το Mega, η σερβο ρύθμιση θα επηρεάσει τη λειτουργία PWM στις ακίδες 9 και 10. Στο Mega, μπορεί να επηρεάσει το PWM στις ακίδες 10 και 11.
Δραστηριότητες με εφαρμογή των παραπάνω εντολών της επέκτασης s2aio.
Χρήσιμα στοιχεία για τις Φωτοδιόδους στα κυκλώματά μας – Leds
Οι φωτοδίοδοι, ή τα leds όπως αλλιώς ονομάζονται, υπάρχουν σε διάφορα χρώματα και τάσεις λειτουργίας. Ανάλογα με την προβλεπόμενη τάση λειτουργίας του led πρέπει να χρησιμοποιήσουμε μαζί και την κατάλληλη αντίσταση, ώστε να αποφύγουμε κάποια καταστροφή από υπέρταση. Για να βρούμε την αντίσταση που χρειαζόμαστε αρκεί να θυμηθούμε τον τύπο
R = (Vπ – Vλ ) / I (Νόμος του Ohm)
όπου R είναι η αντίσταση που χρειαζόμαστε, Vπ το παρεχόμενο δυναμικό 5V από τοArduino, Vλ η τάση λειτουργίας του led και I το ρεύμα λειτουργίας του led. Τυπικά, μια αντίσταση γύρω στα 220 Ω καλύπτει τα περισσότερα led που χρησιμοποιούμε.
Leds σε διάφορα χρώματα
Επίσης, τα leds έχουν πολικότητα, δηλαδή λειτουργούν μόνο αν συνδεθούν σωστά, δηλαδή ο ακροδέκτης με το μεγαλύτερο μήκος (Άνοδος) στο (+) και αυτός με το μικρότερο μήκος (κάθοδος) στο (-). Επίσης, το led από την κάθοδο (–) είναι συνήθως επίπεδο κι όχι στρογγυλό όπως είναι από την άνοδο (+).
Πλακέτα διασύνδεσης χωρίς κολλήσεις (solderless breadboard)
Τι το ιδιαίτερο έχει μια Πλακέτα διασύνδεσης χωρίς κολλήσεις (solderless breadboard); Ότι μπορούμε να αναπτύξουμε πάνω της κάποιο κύκλωμα και πριν το αποτυπώσουμε σε μόνιμη πλακέτα να δούμε αν λειτουργεί σωστά αλλά και να μάθουμε τα εξαρτήματα και τη χρήση τους.
Τα κυκλώματα που υλοποιούνται συνήθως περιλαμβάνουν αρκετά ηλεκτρονικά στοιχεία (φωτοδίοδοι / led, αναλογικοί ή ψηφιακοί αισθητήρες, αντιστάσεις, πυκνωτές κτλ.), οπότε κρίνεται αναγκαία η χρήση του breadboard για τη δημιουργία πρωτότυπων πειραματικών κυκλωμάτων, χωρίς τη χρήση κολλήσεων. Τα καλώδια και τα ηλεκτρονικά στοιχεία εισάγονται στις ειδικές οπές και βραχυκυκλώνονται κάθετα ώστε να διευκολύνεται η σύνδεση όλων των εξαρτημάτων ακόμη και χωρίς καλώδια. Στο ακριανό μέρος ενός breadboard διακρίνονται οι γραμμές «+» και «–» που είναι οριζόντια βραχυκυκλωμένες και συνήθως συνδέεται στο «+» τροφοδοσία από τα 5 Volts που διαθέτει το Arduino και στο «-» η γείωση από το GND του Arduino.
Στην πρώτη εικόνα φαίνεται ένα τυπικό breadboard και στη δεύτερη πως διασυνδέονται οι οπές του.
Δραστηριότητα 1
Να συνδέσουμε ένα LED με την πλακέτα Arduino και να προγραμματίσουμε τον μικροελεγκτή ώστε να αναβοσβήνει το LED ανά ένα δευτερόλεπτο.
Υλικά που θα χρειαστούμε:
- 1 Arduino UNO
- 1 Breadboard
- 1 LED Κόκκινο
- 1 αντίσταση 220 Ohm
Το κύκλωμα σε breadboard
Το σενάριο είναι:
Στιγμιαία πλήκτρα/Κουμπιά (momentary Push-Button)
Μια από τις βασικές αλληλεπιδράσεις που μπορεί να έχουμε με το Arduino είναι με το πάτημα ενός κουμπιού να προκαλέσουμε κάποια άλλη ενέργεια.
Τα στιγμιαία πλήκτρα (momentary buttons) δρουν για όσο χρόνο πιέζονται, όπως συμβαίνει με τα πλήκτρα στο πληκτρολόγιο του ηλεκτρονικού υπολογιστή. Τα στιγμιαία πλήκτρα (διακόπτες) μπορούν να είναι είτε κλειστού είτε ανοικτού τύπου. Ένας κλειστού τύπου στιγμιαίος διακόπτης θα διαρρέεται από ρεύμα ενώ δεν πιέζεται και θα διακόπτει τη ροή ρεύματος όταν πιέζεται. Το αντίθετο συμβαίνει στον ανοικτού τύπου. Στην εικόνα βλέπουμε ένα μικρό στιγμιαίο διακόπτη ανοικτού τύπου. Παρατηρούμε ότι έχει τέσσερις ακίδες (ακροδέκτες).
Οι ακίδες στις δύο κόκκινες ελλείψεις είναι βραχυκυκλωμένες μεταξύ τους. Όταν πατάμε το πλήκτρο και οι τέσσερις ακίδες συνδέονται μεταξύ τους (βραχυκυκλώνουν).
Το παρακάτω κύκλωμα αφήνει το ρεύμα να περνάει όταν πατηθεί το κουμπί. H ακίδα εισόδου (pin 10) είναι πάντα στο LOW (γείωση) , κι όταν πατηθεί το πλήκτρο γίνεται HIGH –( έχουμε pull-down αντίσταση)
Επειδή το ρεύμα θα ακολουθήσει τη διαδρομή με τη μικρότερη αντίσταση, στο κύκλωμα της εικόνας όταν πατηθεί το κουμπί, τότε έχουμε ροή ρεύματος από την πηγή (5V Arduino) προς την ακίδα εισόδου (μικρότερη αντίσταση), δηλαδή θα έχουμε HIGH (5V) στην ακίδα εισόδου του Arduino.
Συνεπώς, αν διαβάζουμε συνεχώς την τιμή εισόδου στον ακροδέκτη (pin 10) μπορούμε να ξέρουμε πότε πατήθηκε το πλήκτρο διότι τότε η τιμή από LOW θα γίνεται HIGH.
Δραστηριότητα 2
Να δημιουργήσετε κύκλωμα με χρήση του breadboard και να προγραμματίσετε ώστε το Arduino ν’ ανάβει ένα led για δύο δευτερόλεπτα κάθε φορά που πατάμε ένα push-button.
Υλικά που θα χρειαστούμε:
- 1 Arduino UNO
- 1 Breadboard
- 1 Push-button
- 1 LED Κόκκινο
- 1 αντίσταση 220 Ohm
- 1 αντίσταση 10 KOhm
- καλώδια
Το κύκλωμα:
Ο διακόπτης (button) έχει συνδεθεί στην ακίδα 7 του Arduino ενώ το led στην ακίδα 4, οπότε το σενάριο είναι:
Δραστηριότητα 3
Στην δραστηριότητα αυτή θα χρησιμοποιήσουμε ένα LED το οποίο θα ανάβει σταδιακά και όταν θα φτάνει στη μέγιστη φωτεινότητά του θα αρχίσει να σβήνει σταδιακά. Η διαδικασία αυτή θα επαναλαμβάνεται συνεχώς.
Υλικά που θα χρειαστούμε:
- 1 Arduino UNO
- 1 Breadboard
- 1 LED Κόκκινο
- 1 αντίσταση 220 Ohm
Το κύκλωμα σε breadboard
Το σενάριο είναι:
Διαιρέτης τάσης
Ο διαιρέτης τάσης είναι ένα από τα πιο θεμελιώδη ηλεκτρικά/ηλεκτρονικά κυκλώματα και έχει πολλές εφαρμογές. Είναι βασικό να γνωρίζουμε τη λειτουργία του, τον μαθηματικό τύπο που τον διέπει, καθώς και να τον αναγνωρίζουμε όταν υπάρχει σε ένα κύκλωμα.
Στη διπλανή εικόνα βλέπουμε το κύκλωμα ενός διαιρέτη τάσης το οποίο αποτελείται από δύο αντιστάσεις R1 και R2 και μπορεί να μας δώσει μια τάση εξόδου Vout η οποία είναι ένα κλάσμα της τάσης εισόδου Vin .
Πιο συγκεκριμένα, η τάση εξόδου μπορεί (ανάλογα με τις τιμές των αντιστάσεων που έχουμε επιλέξει) να πάρει τιμές από 0 έως Vin. Δεν μπορεί δηλαδή να είναι μεγαλύτερη από την τάση εισόδου.
Ο μαθηματικός τύπος που δίνει την τάση εξόδου συναρτήσει της τάσης εισόδου είναι:
Μερικές ενδιαφέρουσες παρατηρήσεις:
- Η τάση εξόδου μπορεί να γίνει ίση αλλά όχι μεγαλύτερη από την τάση εισόδου.
- Η τιμή της τάσης εξόδου δεν εξαρτάται από την απόλυτη τιμή των αντιστάσεων αλλά από την αναλογία τους. Δηλαδή το ζεύγος αντιστάσεων R1=1,2 KΩ, R2=2,4 KΩ δίνουν την ίδια τάση εξόδου με τα ζεύγος R1=120 Ω, R2=240 Ω και με το ζεύγος R1=100 Ω, R2=200 Ω. Και στις τρεις περιπτώσεις η R2 είναι διπλάσια της R1.
- Αν οι δύο αντιστάσεις έχουν ίδια τιμή τότε η Vout είναι ακριβώς η μισή της
- Όσο η R1 τείνει προς το μηδέν τότε Vout τείνει προς Vin
- Όσο η R2 τείνει προς το μηδέν τότε Vout τείνει προς 0
- Από τα παραπάνω προκύπτει ότι όταν θέλουμε την τάση εξόδου να είναι πάνω από το μισό της τάσης εισόδου, πρέπει η R1 να είναι μικρότερη της R2. Το αντίστροφο αν θέλουμε η τάση εξόδου να είναι κάτω από το μισό της εισόδου.
-
Το κύκλωμα διαρρέεται συνεχώς από ρεύμα που δίνεται από τον τύπο:
Οπότε επιλέγουμε αντιστάσεις μεγάλης τιμής ώστε να περιορίσουμε το ρεύμα.
Ποτενσιόμετρο
Εσωτερικά ο μηχανισμός του ποτενσιόμετρου μοιάζει όπως στο σχήμα αριστερά.
Η καφέ λωρίδα σε σχήμα πετάλου είναι φτιαγμένη από ειδικό σύρμα υψηλής αντίστασης. Περιστρέφοντας τον άξονα μπορούμε να μετακινήσουμε τη θέση του δρομέα (απεικονίζεται με κίτρινο χρώμα) πάνω στο σύρμα. Καθώς η αντίσταση είναι ανάλογη με το μήκος του σύρματος, όταν ο δρομέας βρίσκεται ακριβώς στη μέση, το αριστερό τμήμα έχει το ίδιο μήκος και συνεπώς την ίδια αντίσταση με το δεξί. Καθώς ο δρομέας μετακινείται αριστερόστροφα τότε η αντίσταση του αριστερού τμήματος του σύρματος γίνεται μικρότερη ενώ του δεξιού μεγαλύτερη. Το αντίστροφο συμβαίνει όταν κινείται ο δρομέας δεξιόστροφα.
Η συνολική αντίσταση του ποτενσιόμετρου παραμένει αμετάβλητη ανεξάρτητα από τη θέση στην οποία βρίσκεται ο δρομέας. Έτσι, το ρεύμα που το διαρρέει παραμένει πρακτικά σταθερό.
Η αντιστοιχία με το διαιρέτη τάσης είναι προφανής. Στους δύο εξωτερικούς ακροδέκτες συνδέουμε την τάση εισόδου και τη γείωση, ενώ από τον μεσαίο ακροδέκτη παίρνουμε την τάση εξόδου. Συνηθίζεται να συνδέουμε τη γείωση στον πρώτο ακροδέκτη έτσι ώστε η τάση εξόδου να είναι μηδέν όταν το ποτενσιόμετρο βρίσκεται στο αριστερό άκρο και να αυξάνεται καθώς το περιστρέφουμε δεξιόστροφα, μέχρι να γίνει ίση με την τάση εισόδου στο δεξί άκρο.
Δραστηριότητα 4
Στην άσκηση αυτή θα χρησιμοποιήσουμε ένα LED το οποίο θα ανάβει σταδιακά και θα σβήνει σταδιακά με τη περιστροφή ενός ποτενσιόμετρου.
Υλικά που θα χρειαστούμε:
- 1 Arduino UNO
- 1 Breadboard
- 1 LED Κόκκινο
- 1 αντίσταση 220 Ohm
- 1 ποτενσιόμετρο
- καλώδια
Το κύκλωμα σε breadboard
Το σενάριο είναι:
Δραστηριότητα 5
Να τοποθετήσετε στο μέσο της κάτω πλευράς της σκηνής του Scratch ένα αεροπλάνο το οποίο θα κινείτε δεξιά και αριστερά με αντίστοιχη περιστροφή του κουμπιού του ποτενσιόμετρου. Όταν το ποτενσιόμετρο είναι στη μέση το αεροπλάνο θα τοποθετείται στο μέσο της κάτω πλευράς της σκηνής (όπως φαίνεται στην παρακάτω εικόνα). Αν το ποτενσιόμετρο περιστραφεί πλήρως αριστερά τότε το αεροπλάνο φτάνει στην αριστερή άκρη της σκηνής, ενώ αν περιστραφεί πλήρως δεξιά θα πρέπει να φτάνει στη δεξιά άκρη της σκηνής.
Το σενάριο του αεροπλάνου:
Στο παραπάνω σενάριο γίνεται η χρήση δύο μεταβλητών. Η μία μεταβλητή έχει όνομα “ποτενσιόμετρο” στην οποία εκχωρείται η τιμή που διαβάζεται από την αναλογική είσοδο Α2 και αντιστοιχεί στην τιμή του ποτενσιόμετρου. Η τιμή στο μέσο της διαδρομής (2,5 V) αντιστοιχεί στον ακέραιο αριθμό 512 (οι τιμές ως γνωστό βρίσκονται στο διάστημα από 0 (αντιστοιχεί σε δυναμικό 0 V) έως 1023 (αντιστοιχεί σε δυναμικό 5V)). Η άλλη μεταβλητή με όνομα χ έχει τιμές που δείχνουν τη θέση του αεροπλάνου στη σκηνή. Η τιμή του χ προκύπτει από τη θέση του ποτενσιόμετρου. Όταν το ποτενσιόμετρο είναι στο ένα άκρο το χ θα έχει τιμή -240 ώστε το αεροπλάνο να είναι στην αριστερή άκρη της σκηνής, ενώ όταν το ποτενσιόμετρο είναι στο άλλο άκρο η τιμή που θα έχει το χ θα πρέπει να είναι 240 και το αεροπλάνο θα τοποθετείται στη δεξιά άκρη της σκηνής. Στη μέση του ποτενσιόμετρου το χ θα έχει τιμή 0, δηλαδή το αεροπλάνο θα τοποθετείται στη μέση της οριζόντιας διάστασης της σκηνής.
Ανάλυση της αντιστοίχισης των τιμών του ποτενσιόμετρου και της τετμημένης χ του αεροπλάνου
Παρακάτω σχηματίζουμε δύο ευθείες στις οποίες έχουμε αντίστοιχα τα εξής:
— στη πρώτη ευθεία απεικονίζουμε τις τιμές που παίρνει το ποτενσιόμετρο (από 0 έως 1023). Το κόκκινο βέλος δείχνει μία τιμή “ποτενσιόμετρο” που αντιστοιχεί σε μια τυχαία θέση του ποτενσιόμετρου.
— στη δεύτερη ευθεία απεικονίζουμε τις τιμές που θα έχει η τετμημένη του “my-plane” (αεροπλάνου μας). Όταν το ποτενσιόμετρο έχει τη τιμή “ποτενσιόμετρο” τότε η τετμημένη χ θα έχει ανάλογη τιμή που δείχνεται με το μπλε βέλος.
Οι δύο ευθείες τοποθετήθηκαν παράλληλα και όπως αναφέρθηκε αντίστοιχα έχουμε:
— όταν το ποτενσιόμετρο έχει περιστραφεί στο αριστερό άκρο (στην αναλογική είσοδο Α2 διαβάζεται τιμή 0), το χ θα έχει τιμή –240 ώστε το αεροπλάνο να είναι στην αριστερή άκρη της σκηνής,
— όταν το ποτενσιόμετρο έχει στραφεί στο δεξί άκρο (στην αναλογική είσοδο Α2 διαβάζεται τιμή 1023) η τιμή που θα έχει το χ θα πρέπει να είναι 240 και το αεροπλάνο να τοποθετείται στη δεξιά άκρη της σκηνής.
— Στη μέση του ποτενσιόμετρου το χ θα έχει τιμή 0, δηλαδή το αεροπλάνο θα τοποθετείται στη μέση της οριζόντιας διάστασης της σκηνής.
1η Περίπτωση: Όταν η τιμή του ποτενσιόμετρου είναι από 0 έως 512
Έστω ότι το ποτενσιόμετρο έχει περιστραφεί αριστερά και έχει τιμή “ποτενσιόμετρο”. H “μεταβολή” από την μεσαία (κεντρική) θέση του (όπως φαίνεται και στο παραπάνω σχήμα) είναι:
μεταβολή = 511 – ποτενσιόμετρου
ενώ η αντίστοιχη μεταβολή κατ’ απόλυτη τιμή στη τετμημένη είναι χ.
2η Περίπτωση: Όταν η τιμή που έχει το ποτενσιόμετρο είναι από 512 έως 1023
Έστω ότι το ποτενσιόμετρο έχει περιστραφεί αριστερά και έχει τιμή “ποτενσιόμετρο” η “μεταβολή” από την μεσαία (κεντρική) θέση του (όπως φαίνεται και στο σχήμα) είναι:
μεταβολή = ποτενσιόμετρο – 512
Τα παραπάνω περιλαμβάνονται στο σενάριο του αεροπλάνου μέσα στην εντολή “για πάντα” και ορίζουν την τιμή της τετμημένης χ του αεροπλάνου σε κάθε περίπτωση.
Σόναρ – Μέτρηση απόστασης – Ανίχνευση κίνησης
Μια πολύ ενδιαφέρουσα συσκευή που μπορεί να χρησιμοποιηθεί για να μετρήσουμε απόσταση είναι το “Sonar“. θα χρησιμοποιήσουμε τον υπερηχητικό αισθητήρα HC-SR04.
Αυτή η συσκευή μιμείται ότι κάνουν οι νυχτερίδες. Εκπέμπουν έναν υπερηχητικό παλμό και μετράνε το χρόνο για να ληφθεί μια ηχώ. Έχοντας το χρόνο που χρειάζεται ο υπέρηχος από την ώρα που εκπέμπεται μέχρι να επιστρέψει πίσω στον αισθητήρα και γνωρίζοντας την ταχύτητα του ήχου (340 m/s), μπορούμε να υπολογίσουμε την απόσταση μεταξύ του αισθητήρα και του εμποδίου.
Αυτός ο αισθητήρας παρέχει λειτουργίες μέτρησης χωρίς επαφή από 2cm έως 400cm με ακρίβεια μέτρησης που μπορεί να φτάσει έως και 3mm. Κάθε μονάδα HC-SR04 περιλαμβάνει έναν πομπό υπερήχων, έναν δέκτη και ένα κύκλωμα ελέγχου.
Το HC-SR04 διαθέτει 4 ακίδες:
- VCC (Power),
- Trig (Trigger – Πομπός),
- Echo (Receive – Δέκτης), και
- GND (Γείωση).
Η συνδεσμολογία και οι εντολές για το Σόναρ με το Scratch 2.0 (s2aio)
Στην περίπτωσή μας, στην επέκταση s2aio υπάρχει η εντολή που ενεργοποιούμε το pin 12 για είσοδο από Σόναρ :
ενώ στη συνδεσμολογία του αισθητήρα θα πρέπει οι ακροδέκτες (pins) Trig και Echo να βραχυκυκλωθούν όπως εικονίζεται παρακάτω και να συνδεθούν στη ψηφιακή είσοδο 12 του Arduino.
Τα δεδομένα του “Sonar” διαβάζονται χρησιμοποιώντας την εντολή “Διάβασε Ψηφιακή είσοδο στο pin”:
(όπου PIN βάζουμε π.χ. 12, δηλαδή την είσοδο από το Σόναρ)
Η τιμή που διαβάζουμε μας δίνει την απόσταση (σε cm) που βρίσκεται το εμπόδιο από το Σόναρ την οποία μπορούμε να μεταβιβάσουμε σε μια μεταβλητή.
Η συνδεσμολογία και οι εντολές για το buzzer με το Scratch (s2aio)
Παρακάτω θα χρησιμοποιήσουμε ένα μικρό μονοτονικό ηχείο, κοινώς buzzer / piezo speaker, σε σύνδεση με το Arduino για να παράγουμε ήχους. Τέτοια ηχεία συναντάμε σε υπολογιστές, ξυπνητήρια, σε συστήματα συναγερμού ακόμα και στα πληκτρολόγια των ATMs.
Παραπάνω εικονίζεται η συνδεσμολογία ενός buzzer / piezo speaker με το Αrduino. Παρατηρούμε ότι ενώ ο ένας ακροδέκτης του είναι συνδεδεμένος στη γη ο άλλος είναι συνδεδεμένος με ένα PIN εξόδου του Arduino (στην εικόνα pin 8).
Για να παίξει έναν ήχο θα πρέπει πρώτα να ενεργοποιηθεί το αντίστοιχο PIN για λειτουργία τόνου με την εντολή:
Για να παίξουμε ένα τόνο με καθορισμένη συχνότητα και διάρκεια χρησιμοποιούμε την εντολή:
Η είσοδος σε μηδενική διάρκεια θα αφήσει τον ήχο ενεργοποιημένο. Χρησιμοποιούμε την εντολή χωρίς τόνο για να το απενεργοποιήσουμε.
Η εντολή:
θα σταματήσει την παραγωγή ήχου στην επιλεγμένη ακίδα (PIN). Συνήθως χρησιμοποιείται είτε εάν η εντολή τόνου έχει οριστεί με μηδενική διάρκεια (συνεχές τόνο) ή έχει φτάσει το τέλος του προγράμματος και ο ήχος πρέπει να τερματιστεί.
Δραστηριότητα 6
Να δημιουργήσετε ένα ανιχνευτή εμποδίων. Όσο το εμπόδιο είναι σε απόσταση από 0 έως 10 εκατοστά από τον ανιχνευτή και για όσο χρονικό διάστημα το εμπόδιο δεν απομακρύνεται πέρα από τα 10 εκατοστά θα ακούγετε ήχος ενώ παράλληλα θα ανάβει ένα κόκκινο led. Με την απομάκρυνση του εμποδίου μακρύτερα από τα δέκα εκατοστά, ο ήχος από το buzzer θα σταματά ενώ θα σβήνει και το κόκκινο led. Καθ’ όλη τη διάρκεια εκτέλεσης του προγράμματος θα εμφανίζεται η απόστασή του εμποδίου από τον αισθητήρα. Σε περίπτωση μη ύπαρξης η απόσταση θα δείχνει 0.
Υλικά που θα χρειαστούμε:
- 1 Arduino UNO
- 1 Breadboard
- 1 LED Κόκκινο
- 1 αντίσταση 220 Ohm
- 1 buzzer
- καλώδια
Το κύκλωμα:
Παρακάτω παραθέτουμε το σενάριο που επισυνάπτουμε σε κάποια μορφή (π.χ.γάτα ή ένα μαθητή) που θέλουμε ν’ αναφέρει την απόσταση από το εμπόδιο και να έχουμε το επιθυμητό αποτέλεσμα.
Επέκταση: Τροποποιήστε το παραπάνω πρόβλημα ώστε το Sonar παράλληλα να περιστρέφεται δεξιά αριστερά και να ελέγχει για το εν λόγω εμπόδιο.
Σέρβος-Servos και η εντολή διαχείρισης σέρβος
Ένα άλλο εξάρτημα που μπορούμε να διαχειριστούμε μέσω του Arduino είναι το σέρβο.
Πρόκειται για μια διάταξη που μπορεί να γυρίζει έναν άξονα από τις 0 μέχρι τις 180 μοίρες. Η διάταξη αυτή έχει εφαρμογή σε κατασκευές που θέλουμε να κινείται κάποιο μέρος ελεγχόμενα. Αν σταθεροποιήσουμε κάπου τη βάση του, μπορούμε να χρησιμοποιήσουμε το σέρβο για να έχουμε περιστροφική κίνηση σε εύρος 180 μοιρών στην κατασκευή μας. Το σέρβο συνδέεται με ένα καλώδιο στην τροφοδοσία του (πορτοκαλί), με ένα άλλο (καφέ) στη γείωση και ένα τρίτο (κίτρινο) σε ένα PIN του Arduino ώστε να του δίνουμε εντολή για το πόσο να στρίψει.
Δραστηριότητα 7
Για να υλοποιήσουμε την επέκταση της 6ης δραστηριότητας στερεώνουμε πάνω σ’ ένα servo το Sonar όπως φαίνεται στην εικόνα
Στο Scratch 2.0 εισάγουμε δύο μορφές που φαίνονται στο παρακάτω παράθυρο:
Η μία μορφή (κορίτσι) ονομάζεται “απόσταση” και η άλλη “servo” (αγόρι).
Δημιουργούμε δύο μεταβλητές μία με όνομα “απόσταση” και στην οποία εκχωρείται η απόσταση του εμποδίου ενώ η άλλη ονομάζεται “σέρβο” και εκχωρείται η γωνία περιστροφής του servo.
Παρακάτω δίνονται τα σενάρια που επισυνάπτουμε σε κάθε μια μορφή:
BHMA 2o – α) Οι Επιφάνειες διεπαφής του παιχνιδιού (Πίστες)
β) Το κύκλωμα του Χειριστηρίου σε breadboard
Η ομάδα σχεδίασε την επιφάνεια διεπαφής του παιχνιδιού Arduplane (interface) με τα διάφορα αντικείμενα που θα περιλαμβάνονται στην οθόνη και τους κανόνες για το χειρισμό και τη λειτουργία τους με το κύκλωμα του χειριστηρίου. Στη συνέχεια με βάση αυτά, σχεδίασε και υλοποίησε πρωτότυπο κύκλωμα με χρήση breadboard και Arduino uno.
α) σε πρώτο στάδιο η ομάδα σχεδίασε και υλοποίησε στο Scratch τις επιφάνειες διεπαφής του παιχνιδιού Arduplane (interface/πίστες) με τα διάφορα αντικείμενα που θα περιλαμβάνονται στην οθόνη (σκηνή) και τους κανόνες για το χειρισμό και τη λειτουργία τους με το κύκλωμα του χειριστηρίου.
Πίστα με ένα εχθρικό αεροπλάνο (backg1)
Πίστα με δύο εχθρικά αεροπλάνα (backg2)
β) Επίσης, σχεδίασε το κύκλωμα του χειριστηρίου και το υλοποίησε με χρήση breadboard και Arduino uno με βάση τη λειτουργία και τη σχέση του κάθε αντικειμένου της σκηνής με το χειριστήριο. Έτσι, πρώτα αναφέρουμε εδώ αναλυτικά το ρόλο του κάθε αντικειμένου επί της σκηνής, το συσχετισμό των αντικειμένων της σκηνής με τους αισθητήρες και ενεργοποιητές (buttons/κουμπιά, ποτενσιόμετρο, leds και buzzer) και τη σύνδεσή τους με διάφορες ακίδες του Arduino:
Αντικείμενο |
Ο ρόλος του στο παιχνίδι και ο χειρισμός του |
|
Το αντικείμενο “my-plane” είναι το αεροπλάνο το οποίο έχει πάντα σταθερή τη τεταγμένη της θέσης του και μετακινείται μόνο δεξιά και αριστερά μέσα στα όρια της σκηνής. Η κίνησή του αυτή γίνεται με το ποτενσιόμετρο του χειριστηρίου. Όταν το ποτενσιόμετρο έχει περιστραφεί και βρίσκεται στη μέση τότε το αεροπλάνο θα έχει τετμημένη χ ίση με 0. Με συνεχή περιστροφή του ποτενσιόμετρου αριστερά η τετμημένη χ του αεροπλάνου “my-plane” ελαττώνεται διαρκώς, μέχρις ότου φθάνει στην ακραία αριστερή θέση του και τότε η τετμημένη χ θα έχει τιμή –240 (το my-plane θα βρεθεί στο αριστερό άκρο της σκηνής). Αντίθετα, με συνεχή περιστροφή του ποτενσιόμετρου δεξιά η τετμημένη χ του αεροπλάνου “my-plane” αυξάνεται διαρκώς, μέχρις ότου φθάνει στην ακραία δεξιά θέση του και τότε η τετμημένη χ θα έχει τιμή 240 (το my-plane θα βρεθεί στο δεξί άκρο της σκηνής). Στην εικόνα του κυκλώματος του χειριστηρίου φαίνεται ότι την έξοδο του ποτενσιόμετρου την έχουμε συνδέσει στην αναλογική είσοδο Α2 του Arduino. |
Το αντικείμενο “fire” είναι τα βλήματα που εκτοξεύει το αεροπλάνο “my-plane” όταν πατάμε το διακόπτη (S1) στο κύκλωμα του χειριστηρίου. Το αντικείμενο “fire” εκτοξεύεται από τη θέση που έχει το “my-plane” τη στιγμή που πατάμε το διακόπτη. Όταν αγγίζει εχθρικό αεροπλάνο το βλήμα εξαφανίζεται και παράλληλα αυξάνει το σκορ κατά 20 πόντους. To διακόπτη (S1) τον έχουμε συνδέσει στην ψηφιακή είσοδο 8 του Arduino. Κάθε φορά που πατιέται ο διακόπτης το Arduino διαβάζει στην ψηφιακή είσοδό του 8 την τιμή “HIGH”. Έτσι, αντιλαμβάνεται πότε πυροβολούμε. |
|
Το αντικείμενο “spaceship-flat-icon1” είναι εχθρικό αεροπλάνο και φροντίζουμε να έρχεται κάθε φορά από την αντίθετη πλευρά από αυτή που βρίσκεται το “my-plane” και από διαφορετική τετμημένη. Όταν συγκρουσθεί με το αεροπλάνο μας (“my-plane”) χάνουμε μια από τις ζωές μας. Όταν το παιχνίδι αρχίζει έχουμε 3 ζωές. Έτσι, όταν συγκρουσθεί εχθρικό αεροπλάνο τρεις φορές με το “my-plane” το παιχνίδι τελειώνει. |
|
Έχουμε εισάγει τρία αντικείμενα σε εικονίδιο καρδιάς και με ονόματα: “Heart Face1”, “Heart Face2”, “Heart Face3”, αντίστοιχα. Κάθε ένα απ’ αυτά αντιστοιχεί και σε μία ζωή του “my-plane”. Σε κάθε ένα απ’ αυτά αντιστοιχεί και ένα αντίστοιχο λαμπάκι στο κύκλωμα του χειριστηρίου. Με την έναρξη του παιχνιδιού φροντίζουμε τα εικονίδια να είναι εμφανή και τ’ αντίστοιχα λαμπάκια στο χειριστήριο να είναι αναμμένα. Όταν χάνουμε μια ζωή (γιατί εχθρικό αεροπλάνο συγκρούεται με το “my-plane”), τότε εξαφανίζεται ένα εικονίδιο καρδιάς, σβήνει το αντίστοιχο λαμπάκι (led) στο χειριστήριο και από το buzzer που έχει συνδεθεί με την έξοδο 10 (τόνος) του Arduino ακούγεται ένας χαρακτηριστικός ήχος. Όταν χάνουμε την πρώτη ζωή εξαφανίζεται το “Heart Face1” και σβήνει στο χειριστήριο το λαμπάκι που έχει συνδεθεί με την ψηφιακή έξοδο 11 του Arduino. Με την δεύτερη ζωή που χάνουμε εξαφανίζεται το “Heart Face2” και σβήνει στο χειριστήριο το λαμπάκι που έχει συνδεθεί με την ψηφιακή έξοδο 12 του Arduino. Ενώ, όταν χάνουμε και την τρίτη ζωή τότε εξαφανίζεται το “Heart Face3”, σβήνει στο χειριστήριο το λαμπάκι που έχει συνδεθεί με την έξοδο 13 του Arduino και το παιχνίδι τελειώνει. |
|
|
Το αντικείμενο “spaceship-flat-icon2” είναι ένα δεύτερο εχθρικό αεροπλάνο το οποίο έρχεται μαζί με το αντικείμενο “spaceship-flat-icon1” από την αντίθετη πλευρά εναντίον του “my-plane” και έτσι αυξάνεται ο βαθμός δυσκολίας του παιχνιδιού ενώ παράλληλα αλλάζει και το σκηνικό. Αυτό συμβαίνει όταν πατηθεί στο χειριστήριο ο διακόπτης (S2), ο οποίος είναι συνδεδεμένος με την ψηφιακή είσοδο 9 του Arduino. |
Η συνδεσμολογία των στοιχείων για τη δημιουργία του χειριστηρίου έγινε όπως εικονίζεται παρακάτω:
Συνεπώς, για το κύκλωμα του χειριστηρίου που σχεδιάσαμε, απαιτούνται τα παρακάτω υλικά:
- 1 board Arduino uno
- 1 Breadboard
- 3 Αντιστάσεις 220 Ω
- 2 Αντιστάσεις 10 ΚΩ
- 3 κόκκινα leds (5mm)
- 1 περιστροφικό ποτενσιόμετρο
- 2 buttons (διακόπτες) s1, s2
- 1 piezo buzzer
- καλώδια
Παρατήρηση: Στην ολοκληρωμένη κατασκευή του το χειριστήριο υλοποιείται με χρήση διάτρητης πλακέτας (αντί Breadboard) με Arduino Nano αντι Arduino Uno και περιέχεται σε ανάλογο για τη χρήση του κουτί.
Φωτογραφίες της ομάδας από την κατασκευή του πρωτοτύπου:
Βίντεο με την περιγραφή του κυκλώματος του χειριστηρίου
https://drive.google.com/file/d/1VMEDgMzQeXfBxuYJhJ0yQAQAG7ydDfGr/view?usp=sharing
ΒΗΜΑ 3ο – Δημιουργία του Προγράμματος του Παιχνιδιού (Arduplane)
Αφού συνδέσουμε μέσω το Arduino στη θύρα usb (com 4) στον υπολογιστή, ανοίγουμε το Arduino IDE και φορτώνουμε στο Arduino από τα “παραδείγματα” το FirmataPlus.
Στη συνέχεια εκτελούμε την εντολή:
s2aio -p com4 -l 7
οπότε στο περιβάλλον οπτικού προγραμματισμού του Scratch 2 στη κατηγορία “Άλλες εντολές” έχουμε διαθέσιμο το σύνολο των εντολών της επέκτασης s2aio. Στο παρακάτω παράθυρο εμφανίζεται η λίστα με το σύνολο των αντικειμένων που έχουμε εισάγει για τη χρήση τους στο παιχνίδι.
Οι μεταβλητές του παιχνιδιού και ο ρόλος τους.
Η μεταβλητή Σκορ: Στη μεταβλητή εκχωρείται το σκορ του παιχνιδιού και εμφανίζεται στην οθόνη. Κάθε φορά που ξεκινά νέο παιχνίδι αρχικοποιείται (εκχωρείται τιμή 0) Με βάση τους κανόνες του παιχνιδιού η μεταβλητή αυξάνει κατά 20 πόντους όταν κάποιο βλήμα που εκτοξεύουμε από το “my-plane” πετυχαίνει (“αγγίζει”) εχθρικό αεροπλάνο. Επίσης αυξάνεται κατά πέντε πόντους κάθε φορά που εχθρικό αεροπλάνο διασχίζει την σκηνή χωρίς να κτυπήσει το “my-plane”.
Η μεταβλητή Ζωές: Στην αρχή του παιχνιδιού εκχωρείται τιμή 3. Όταν χάνουμε ζωή μετά από σύγκρουση με εχθρικό αεροπλάνο η μεταβλητή ελαττώνεται κατά 1. Όταν η τιμή της μηδενισθεί τότε το παιχνίδι τελειώνει.
Η μεταβλητή χ: Στη μεταβλητή χ εκχωρείται η τιμή της τετμημένης της θέσης του “my-plane” στη σκηνή. Η τετμημένη προκύπτει μετά από μετασχηματισμό της τιμής που διαβάζει το Arduino από την αναλογική είσοδο Α2 (Όπως αναλύθηκε παραπάνω στη δραστηριότητα 4).
Η μεταβλητή πύρ: Αρχικά η τιμή της τίθεται σε 0 και γίνεται 1 κάθε φορά που πατάμε το διακόπτη (S2) και το “my-plane” ρίχνει ένα βλήμα. Ακόμη, η μεταβλητή γίνεται 0 όταν το βλήμα φτάνει στο απέναντι άκρο της σκηνής και επιστρέφει στην απέναντι πλευρά με τετμημένη αυτή που έχει και το “my-plane”.
Οι μεταβλητές Σημαία1, Σημαία2: Με την έναρξη του παιχνιδιού εκχωρείται σ’ αυτές η τιμή 0. Όταν εχθρικό αεροπλάνο αγγίζει το “my-plane” και χάνουμε μια ζωή τότε σβήνει το πρώτο led και ακούγεται ήχος από το buzzer ενώ η μεταβλητή Σημαία γίνεται 1. Για όσο το παιχνίδι συνεχίζεται δεν θα ακούγεται ήχος και θα συμβεί ξανά (σβήνει led και ακούγεται ήχος) την επόμενη φορά που θα χάσουμε ζωή και τότε η μεταβλητή Σημαία2 θα γίνει 1. Το ίδιο θα γίνει ξανά όταν χάσουμε και την τελευταία μας ζωή.
Ακολούθως παραθέτουμε τα σενάρια που επισυνάψαμε σε κάθε αντικείμενο του παιχνιδιού αλλά και στο σκηνικό:
Το σενάριο του αντικειμένου “my-plane”:
Οι μεταβλητές (περιγράφηκαν παραπάνω) παίρνουν αρχικές τιμές (π.χ. η Σκόρ γίνεται 0, η ζωές γίνεται 3, η Σημαία1 και η Σημαία2 γίνονται 0).
Μέσα στην εντολή επανάληψης “για πάντα” γίνεται έλεγχος για τα εξής:
— εάν πατήθηκε ο διακόπτης S1 (έλεγχος στον ακροδέκτη 8 του Arduino)οπότε και μεταδίδεται το μήνυμα “πύρ“. Η χρήση και η σύνδεση διακοπτών αναλύεται στο εκπαιδευτικό υλικό και στην εφαρμογή 2 (Βήμα 2)
— εάν πατήθηκε ο διακόπτης S2 (έλεγχος στον ακροδέκτη 9 του Arduino) οπότε και μεταδίδεται το μήνυμα “twice”
Επίσης γίνεται έλεγχος στην αναλογική είσοδο Α2 και μετατρέπεται η τιμή εισόδου σε τετμημένη χ του αεροπλάνου (my-plane) για να κινείται σωστά όταν περιστρέφεται το ποτενσιόμετρο. Αναλυτική περιγραφή γίνεται στην εφαρμογή 5 του εκπαιδευτικού υλικού (Βήμα 2)
Τα σενάρια του αντικειμένου “fire”:
Όταν το αντικείμενο “fire” (σφαίρα) λάβει το μήνυμα “πύρ” τότε ξεκινά από τη θέση που έχει το αεροπλάνο “my-plane” και κινείται κατακόρυφα με αλλαγή της τεταγμένης της y κατά 12 (Η μεταβολή αυτή καθορίζει και τη ταχύτητα της σφαίρας). Αυτό επαναλαμβάνεται μέχρις ότου η σφαίρα είτε φθάσει στην απεναντι πλευρά (θέση του y > 176) είτε να αγγίξει κάποιο από τα εχθρικά αεροπλάνα οπότε και εξαφανίζεται.
Το σενάριο του αντικειμένου “spaceship-flat-icon1”:
Δείτε το βίντεο με την ανάλυση του σεναρίου του εχθρικού αεροπλάνου:
https://drive.google.com/file/d/1u9XqAcyGiGidKGLngo6-MX2Ptql06Zvg/view?usp=sharing
Το σενάριο του αντικειμένου “Heart Face1”:
Εδώ ελέγχεται για πάντα εάν η μεταβλητή ζωές έχει τιμή 2 (έγινε πρώτη σύγκρουση του my-plane με εχθρικό αεροπλάνο) και η Σημαία1 είναι 0, οπότε σβήνει το πρώτο λαμπάκι και ακούγεται ήχος (η Σημαία1 γίνεται 1 ώστε ο ήχος να σταματήσει και να μην συνεχίζεται).
Το σενάριο του αντικειμένου “Heart Face2”:
Εδώ ελέγχεται για πάντα εάν η μεταβλητή ζωές έχει τιμή 1 (έγινε δεύτερη σύγκρουση του my-plane με εχθρικό αεροπλάνο) και η Σημαία2 είναι 0, οπότε σβήνει το δεύτερο λαμπάκι και ακούγεται ήχος (η Σημαία2 γίνεται 1 ώστε ο ήχος να σταματήσει και να μην συνεχίζεται).
Το σενάριο του αντικειμένου “Heart Face3”:
Εδώ ελέγχεται για πάντα εάν η μεταβλητή ζωές έχει τιμή 0 (έγινε τρίτη σύγκρουση του my-plane με εχθρικό αεροπλάνο), οπότε σβήνει το τρίτο λαμπάκι , ακούγεται ήχος απώλειας ζωής και στη συνέχεια εμφανίζεται το υπόβαθρο “backg3” με το GAME OVER.
Το σενάριο του αντικειμένου “spaceship-flat-icon2”:
Το δεύτερο εχθρικό αεροπλάνο εμφανίζεται στη σκηνή και συμπεριφέρεται όπως και το πρώτο (ίδιος κώδικας) όταν λάβει το μήνυμα “twice” (το οποίο στέλνεται όπως είδαμε όταν στο χειριστήριο πατηθεί ο διακόπτης S2).
Τα σενάρια του σκηνικού:
Όταν το παιχνίδι ξεκινά το υπόβαθρο γίνεται το “backg1“. Όταν λάβει το μήνυμα “twice” (οπότε εμφανίζεται και το δεύτερο εχθρικό αεροπλάνο με πάτημα του S2) εμφανίζεται άλλο υπόβαθρο το “Backg2“.
(Η τεκμηρίωση του λογισμικού γίνεται και στο αποθετήριο: https://github.com/8gymnperist/Robuino/blob/master/code/code-directory.md )
Το πρόγραμμα του παιχνιδιού επίσης βρίσκεται στο αποθετήριο, στο φάκελο code (για το άνοιγμα και την εκτέλεσή του χρειάζεται να έχετε εγκαταστήσει το Scratch 2 με την επέκταση s2aio όπως αναλύθηκε στο βήμα 1): https://github.com/8gymnperist/Robuino/blob/master/code/Arduplane.sb2
ΒΗΜΑ 4
- Κατασκευή χειριστηρίου με διάτρητη πλακέτα και τοποθέτησή σε κουτί
- Έλεγχος λειτουργίας σε διάφορα περιβάλλοντα
1. Κατασκευή χειριστηρίου με διάτρητη πλακέτα και τοποθέτησή σε κουτί
Στο στάδιο αυτό το δοκιμασμένο πλέον κύκλωμα του πρωτότυπου χειριστηρίου το κατασκεύασαμε με διάτρητη πλακέτα και αντικαταστήσαμε σ’ αυτό το Arduino uno με Arduino nano και το τοποθετήσαμε σε κατάλληλο κουτί.
https://github.com/8gymnperist/Robuino/blob/master/hardware-design/sxediasmos.md
Για το τελικό κύκλωμα του χειριστηρίου, απαιτήθηκαν τα εξής υλικά:
• 1 board Arduino nano
• 1 διάτρητη πλακέτα (8 cm χ 12 cm)
• 3 Αντιστάσεις 220 Ω
• 2 Αντιστάσεις 10 ΚΩ
• 3 κόκκινα leds (5mm)
• 1 περιστροφικό ποτενσιόμετρο με καπάκι
• 2 buttons (διακόπτες) s1, s2 με τα καάκια τους
• 1 piezo buzzer
• 1 πλαστικό κουτί
• καλώδια
Εργαλεία: α) Κολλητήρι και καλάι, β) τανάλια, γ) Πιστόλι Θερμοκόλλησης.
Ένα Χρήσιμος οδηγός για τις συγκολλήσεις από το Ίδρυμα Ευγενίδου (βίντεο): https://www.youtube.com/watch?v=6_4EDcYAzRE
Το συνολικό κόστος των υλικών της κατασκευής υπολογίζεται περίπου στα 12 Ευρώ.
Φωτογραφίες από την κατασκευή:
Βίντεο. Κατασκευή χειριστηρίου με διάτρητη πλακέτα
Δείτε το σχετικό βίντεο: https://drive.google.com/file/d/1WC1EpmGAygGCiTjIm5gPGhKAHugTn4Rc/view?usp=sharing
για την κατασκευή του χειριστηρίου με διάτρητη πλακέτα και την τοποθέτησή του σε κατάλληλο κουτί.
Παρουσίαση του χειριστηρίου (βίντεο): https://drive.google.com/file/d/1byFS6r9bHdntyOD2-r_eUkFxp5H1IJEG/view?usp=sharing
2. Έλεγχος λειτουργίας σε διάφορα περιβάλλοντα
Έγινε έλεγχος για τη σωστή λειτουργία του χειριστηρίου σε συνδυασμό με το πρόγραμμα του παιχνιδιού σε διάφορα περιβάλλοντα όπως: α) Windows 7, β) Linux Ubuntu Mate 18.04 και γ) Raspian (Raspberry pi 3).
Βίντεο για την παρουσίαση και τον έλεγχο του παιχνιδιού και του χειριστηρίου σε διάφορα λειτουργικά συστήματα: α) Windows 7, β) Raspbian για Raspberry pi 3 και γ) linux Ubuntu Mate 18.04.
https://drive.google.com/file/d/14k0kBwG6YBduTImlj3yZ-IMPIfs6TW3Q/view?usp=sharing
Επεκτάσεις:
Σ’ ένα επόμενο στάδιο το παιχνίδι μας μπορεί να διαμορφωθεί ώστε:
— να παίζει κάποιο τραγούδι με νότες από το buzzer όταν ένας παίκτης ξεπερνά κάποιο όριο στο σκορ, ως επιβράβευση,
— να παίζεται με δύο παίκτες. Ο δεύτερος παίκτης να χειρίζεται με το χειριστήριό του την κίνηση του εχθρικού αεροπλάνου και να πυροβολεί.
Πηγές [1]. https://scratch.mit.edu/ [2]. https://github.com/MrYsLab/s2aio [3]. https://github.com/MrYsLab/s2aio/wiki [4]. https://www.arduino.cc/en/Main/Software [5]. https://www.python.org/ [6]. https://www.youtube.com/watch?v=6_4EDcYAzRE