Εισαγωγή στον προγραµµατισµό µε δραστηριότητες εκπαιδευτικής ροµποτικής: χρήση του NXT Software.

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

Download "Εισαγωγή στον προγραµµατισµό µε δραστηριότητες εκπαιδευτικής ροµποτικής: χρήση του NXT Software."

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Παναγιώτα Νίκα Α.Ε.Μ 1306 Εισαγωγή στον προγραµµατισµό µε δραστηριότητες εκπαιδευτικής ροµποτικής: χρήση του NXT Software. (Introduction to programming with educational robotics: The use of NXT Software) Επιβλέπων: ΣΤΑΥΡΟΣ ΗΜΗΤΡΙΑ ΗΣ Επίκουρος Καθηγητής ΘΕΣΣΑΛΟΝΙΚΗ, 2010

2 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: ΕΚΠΑΙ ΕΥΤΙΚΗ ΡΟΜΠΟΤΙΚΗ ΕΙΣΑΓΩΓΗ ΕΚΠΑΙ ΕΥΤΙΚΗ ΑΞΙΟΠΟΙΗΣΗ LEGO MINDSTORMS Υποστηριζόµενες Γλώσσες προγραµµατισµού ηµοφιλείς Γλώσσες τρίτων κατασκευαστών LEGO MINDSTORMS ΝΧΤ Η ανανέωση των Ροµπότ Λογισµικό LABVIEW Απεικόνιση του ΝΧΤ Ανάλυση των µερών που το αποτελούν Θύρες Μηχανών...10 Motor ports (κινητήρες)...10 Sensor ports (αισθητήρες)...10 USB port (θύρα USB) NXT κουµπιά Υλικό του NXT...11 ΑΙΣΘΗΤΗΡΑΣ ΑΦΗΣ(TOUCH SENSOR)...11 ΑΙΣΘΗΤΗΡΑΣ ΗΧΟΥ(SOUND SENSOR)...12 ΑΙΣΘΗΤΗΡΑΣ ΦΩΤΟΣ(LIGHT SENSOR)...13 ΑΙΣΘΗΤΗΡΑΣ ΥΠΕΡΗΧΩΝ (ULTRASONIC SENSOR)...14 ΣΕΡΒΟΜΗΧΑΝΕΣ (SERVO MOTORS)...14 ΑΙΣΘΗΤΗΡΑΣ ΠΕΡΙΣΤΡΟΦΗΣ...14 ΚΕΦΑΛΑΙΟ 2: ΠΑΡΟΥΣΙΑΣΗ Ι ΙΟΤΗΤΩΝ ΤΩΝ ΠΡΟΣΦΕΡΟΜΕΝΩΝ ΠΕΡΙΒΑΛΛΟΝΤΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΤΟΥ NXT ΤΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ LEGO MINDSTORMS ROBOTC NXC NBC ROBOLAB NXJ PbLua LeJos OSEK...28 ΚΕΦΑΛΑΙΟ 3: NXT SOFTWARE ΕΙΣΟ ΟΣ ΣΤΟ ΠΡΟΓΡΑΜΜΑ ΕΝΗΜΕΡΩΣΗ ΤΟΥ FIRMWARE ΤΟΥ NXT DATA WIRE-ΚΑΛΩ ΙΑ Ε ΟΜΕΝΩΝ ΠΑΛΕΤΑ Common

3 3.4.1 Move block...35 Παράδειγµα της λειτουργίας του Move Block Record/Play Block...36 Παράδειγµα της λειτουργίας του Record/Play Block Sound Block...38 Παράδειγµα της λειτουργίας του Sound Block Display Block...40 Παράδειγµα της λειτουργίας του Display Block Wait Block...42 ΧΡΟΝΟΣ...42 ΑΙΣΘΗΤΗΡΑΣ ΑΦΗΣ...43 ΑΙΣΘΗΤΗΡΑΣ ΦΩΤΟΣ...44 ΑΙΣΘΗΤΗΡΑΣ ΗΧΟΥ...44 ΑΙΣΘΗΤΗΡΑΣ ΥΠΕΡΗΧΩΝ...45 Παράδειγµα της λειτουργίας µε Block Αναµονής Loop Block...46 ΓΙΑ ΠΑΝΤΑ...47 ΑΙΣΘΗΤΗΡΕΣ...47 ΧΡΟΝΟΣ...47 Παράδειγµα της λειτουργίας µε Loop Block Switch Block...48 ΤΙΜΗ...49 ΑΙΣΘΗΤΗΡΕΣ...51 Παράδειγµα της λειτουργίας µε Loop Block ΠΑΛΕΤΑ Complete Common Blocks Action Blocks...52 MOTOR BLOCK...52 SEND MESSAGE BLOCK Sensor BLOCKS...57 TOUCH SENSOR BLOCK...57 SOUND SENSOR BLOCK...58 LIGHT SENSOR BLOCK...59 ULTRASONIC SENSOR BLOCK...61 NXT BUTTONS BLOCK...62 ROTATION SENSOR BLOCK...63 TIMER BLOCK...65 RECEIVE MESSAGE BLOCK Flow Blocks...67 STOP BLOCK Data Blocks...68 LOGIC BLOCK...68 MATH BLOCK...69 COMPARE BLOCK...70 RANGE BLOCK...71 RANDOM BLOCK...72 VARIABLE BLOCK...73 Παράδειγµα της λειτουργίας των Data Blocks Advanced Blocks...76 TEXT BLOCK...76 NUMBER TO TEXT BLOCK...77 KEEP ALIVE BLOCK...78 FILE ACCESS BLOCK...78 CALIBRATION BLOCK...79 RESET MOTOR BLOCK MY BLOCK...82 ηµιουργώντας ένα My Block

4 ΚΕΦΑΛΑΙΟ 4: ΦΥΛΛΑ ΕΡΓΑΣΙΑΣ ΚΑΙ ΣΧΕ ΙΑ ΜΑΘΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΛΑΤΦΟΡΜΑ NXT SOFTWARE ΕΞΟΙΚΕΙΩΣΗ ΜΕ ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΟΥ NXT SOFTWARE Φύλλο εργασίας για την εξοικείωση µε το περιβάλλον του NXT Software Σχέδιο Μαθήµατος για την εξοικείωση µε το περιβάλλον του NXT Software ΕΞΟΙΚΕΙΩΣΗ ΜΕ ΤΗΝ ΕΝΝΟΙΑ ΤΗΣ ΜΕΤΑΒΛΗΤΗΣ Φύλλο Εργασίας για την εξοικείωση µε την έννοια της µεταβλητής Σχέδιο Μαθήµατος για την εξοικείωση µε την έννοια της µεταβλητής Μαθηµατική λογική- Άλγεβρα Boole ΕΞΟΙΚΕΙΩΣΗ ΜΕ ΤΗΝ ΕΝΝΟΙΑ ΤΗΣ ΕΠΙΛΟΓΗΣ Φύλλο εργασίας για την εξοικείωση µε την έννοια της Επιλογής Σχέδιο Μαθήµατος για την εξοικείωση µε την έννοια της Επιλογής ΕΞΟΙΚΕΙΩΣΗ ΜΕ ΤΗΝ ΕΝΝΟΙΑ ΤΗΣ ΕΠΑΝΑΛΗΨΗΣ Φύλλο Εργασίας για την εξοικείωση µε την έννοια της Επανάληψης Σχέδιο Μαθήµατος για την εξοικείωση µε την έννοια της Επανάληψης ΚΕΦΑΛΑΙΟ 5: ΣΥΜΠΕΡΑΣΜΑΤΑ Μαθήµατα Ροµποτικής Αναλυτική παρουσίαση των µαθηµάτων Τελική ραστηριότητα

5 Περίληψη Αντικείµενο της παρούσας διπλωµατικής εργασίας είναι η περιγραφή της πλατφόρµας NXT Software και η παρουσίαση µίας διδακτικής προσέγγισης, η οποία συνδυάζει τη µάθηση µε το παιχνίδι για υποστήριξη µαθητών δευτεροβάθµιας εκπαίδευσης στην εκµάθηση βασικών εννοιών προγραµµατισµού. Ο αρχικός µας στόχος είναι η πλήρης ανάλυση του περιβάλλοντος της πλατφόρµας, ενώ ο επόµενος στόχος είναι η δηµιουργία ολοκληρωµένου εκπαιδευτικού υλικού(φύλλα εργασίας),το οποίο θα είναι διαθέσιµο προς χρήση για τη διδασκαλία του προγραµµατισµού µε τη χρήση των ροµπότ. Η παρούσα εργασία χωρίζεται σε 5 κεφάλαια. Αρχικά, γίνεται µία εισαγωγή στην εκπαιδευτική ροµποτική και την εξέλιξη των Lego Mindstorms. Στη συνέχεια, γίνεται αναφορά στο hardware του NXT, αναλύοντας τον κάθε αισθητήρα και τη λειτουργία του. Στο δεύτερο κεφάλαιο παρουσιάζονται κύρια πλεονεκτήµατα και µειονεκτήµατα των προσφερόµενων περιβαλλόντων προγραµµατισµού του NXT, καθώς και σηµαντικές ιδιότητες, ενώ γίνεται και µία σηµαντική σύγκριση των πλατφορµών µεταξύ τους. Στο τρίτο κεφάλαιο, γίνεται ανάλυση της πλατφόρµας NXT Software, µία γνωριµία και εξοικείωση µε το περιβάλλον. Παρουσιάζονται αναλυτικά τα βήµατα για βασικές λειτουργίες της πλατφόρµας(όπως για παράδειγµα η φόρτωση του firmware) καθώς και λειτουργίες του NXT στο περιβάλλον. Οι δυσκολίες που συναντούν οι αρχάριοι προγραµµατιστές αποτέλεσαν και κίνητρο για την αναζήτηση νέων µεθόδων διδασκαλίας για τα εισαγωγικά µαθήµατα προγραµµατισµού. Στο τέταρτο κεφάλαιο προτείνεται µία µέθοδος διδασκαλίας του προγραµµατισµού που στηρίζεται στην καθοδήγηση των ροµπότ Lego Mindstorms, από προγράµµατα που συντάσσονται µε τη βοήθεια του προγραµµατιστικού περιβάλλοντος NXT Software. Στην ενότητα αυτή εκτός από τα φύλλα εργασίας, περιγράφεται η µεθοδολογία που χρησιµοποιήθηκε κατά τη διάρκεια των µαθηµάτων, οι δραστηριότητες που πραγµατοποιήθηκαν σε ότι αφορά τον τρόπο διεξαγωγής και τα εκπαιδευτικά εργαλεία που χρησιµοποιήθηκαν. Τέλος, παρουσιάζονται και φύλλα αξιολόγησης που δίνονται στους µαθητές. Στο πέµπτο και τελευταίο κεφάλαιο, καταγράφονται παρατηρήσεις µέσα από την προσωπική µας εµπειρία στο µάθηµα. Ένα φύλλο εργασίας µε ασκήσεις σχετικά µε την πλατφόρµα NXT Software παρουσιάζεται στους µαθητές, ενώ σηµειώνονται συµπεράσµατα κατά τη διάρκεια της τελικής αυτής πρόκλησης. 5

6 ΚΕΦΑΛΑΙΟ 1:ΕΚΠΑΙ ΕΥΤΙΚΗ ΡΟΜΠΟΤΙΚΗ 1.1 ΕΙΣΑΓΩΓΗ Η ιδέα των προγραµµατιζόµενων ροµποτικών κατασκευών ξεκίνησε µε τη χελώνα της Logo από τα τέλη της δεκαετίας του '60. Οι χελώνες αυτές συνδέονταν µε τον υπολογιστή µε ένα καλώδιο και µπορούσαν να κινούνται στο πάτωµα ανάλογα µε τις εντολές που λάµβαναν. Σήµερα ποικιλία δοµικών στοιχείων και ηλεκτρονικών εξαρτηµάτων χρησιµοποιούνται για τη σύνθεση ροµποτικών κατασκευών, ενώ η ανάγκη της αυτονοµίας των κατασκευών από τον υπολογιστή οδήγησε στη χρήση προγραµµατιζόµενων κύβων µε ενσωµατωµένους µικροεπεξεργαστές. Το σύστηµα Lego ΝΧΤ προσφέρει ένα ευφυές ελεγχόµενο από υπολογιστή «τούβλο» Lego, που αποτελεί τον εγκέφαλο του εκπαιδευτικού ροµπότ του Lego Mindstorms ( διαδραστικούς κινητήρες, ηχητικούς, υπερηχητικούς και άλλους αισθητήρες, καθώς και µια µεγάλη συλλογή υλικών κατασκευής («τουβλάκια», γρανάζια, τροχαλίες, άξονες κ.λπ.) που δοµούνται γύρω ή πάνω στον µικροεπεξεργαστή (.Αλιµήσης, 2008). 1.2 ΕΚΠΑΙ ΕΥΤΙΚΗ ΑΞΙΟΠΟΙΗΣΗ Στις µέρες µας, ροµπότ και έξυπνα συστήµατα βρίσκονται οπουδήποτε-έξυπνα αυτοκίνητα, έξυπνα σπίτια, κτίρια, τηλέφωνα, ιατροφαρµακευτική τεχνολογία, µηχανές αναζήτησης, συστήµατα ασφαλείας,- είναι δηλαδή τα έξυπνα συστήµατα πανταχού παρόν. Οι µαθητές, σαν καινοτόµοι, οφείλουν να ξέρουν να τα χρησιµοποιούν. Τα ροµπότ γενικότερα συγκεντρώνουν την περιέργεια όλων των ανθρώπων και των ηλικιών. Υπάρχει κάτι που γοητεύει τους ανθρώπους όταν βλέπουν ένα ροµπότ να κινείται τριγύρω παίρνοντας µόνο του αποφάσεις. Αυτή η έλξη µπορεί να οδηγήσει σε έµπνευση και διαφωτισµό. Στην πραγµατικότητα, η ροµποτική σήµερα ολοκληρώνει την εκπαίδευση. Όταν οι µαθητές µαθαίνουν σχετικά µε τη ροµποτική, κερδίζουν εµπειρία στο να διαχειρίζονται έργα, αναλύουν συστήµατα, έχουν πρόσβαση σε πληροφορίες, δουλεύουν σε οµάδες και επιλύουν προβλήµατα. Το πανεπιστήµιο Carnegie Mellon και η Lego δουλεύουν µαζί για να σχεδιάσουν εκπαιδευτικά εργαλεία που προωθούν τη µαθηµατική και κατασκευαστική ικανότητα. Τα παιδιά µαθαίνουν να σχεδιάζουν, να χτίζουν και να προγραµµατίζουν. Αυτά τα έργα µεταφέρουν τα παιδιά από τη µέτρηση στην ανάλυση, από τον υπολογισµό στην επικοινωνία και από την ατοµική εργασία στη συνεργατική. Σήµερα, τα περισσότερα γυµνάσια και λύκεια χρησιµοποιούν MINDSTORMS και άλλα ροµπότ, πέρα του NXT, για να εισάγουν έννοιες ελέγχου(r.shoop,2008). Η εκπαιδευτική δυναµική των προγραµµατιζόµενων ροµποτικών κατασκευών Lego Mindstorms συνίσταται στη δυνατότητα που προσφέρει στους µαθητές να συνθέσουν µια µηχανική οντότητα (π.χ. ένα µοντέλο αυτοκινήτου) και να την κατευθύνουν µε τη βοήθεια ενός απλού και εύχρηστου προγραµµατιστικού περιβάλλοντος. Το πακέτο Lego Mindstorms, αν αξιοποιηθεί κατάλληλα, µπορεί να υποστηρίξει τη δηµιουργία ενός περιβάλλοντος εποικοδοµητικής µάθησης (constructive learning) που θα παρέχει αυθεντικές εκπαιδευτικές δραστηριότητες ενταγµένες σε διαδικασίες επίλυσης ανοιχτών 6

7 προβληµάτων από τον πραγµατικό κόσµο, θα ενθαρρύνει την έκφραση και την προσωπική εµπλοκή στη µαθησιακή διαδικασία και θα υποστηρίζει την κοινωνική αλληλεπίδραση. Με τα Lego Mindstorms γίνονται πράξη οι ιδέες του S. Papert για «µαστόρεµα της γνώσης» (constructionism): τα παιδιά οικοδοµούν πιο αποτελεσµατικά τη γνώση όταν εµπλέκονται ενεργά στη σχεδίαση και κατασκευή (χειρωνακτική και ψηφιακή) πραγµατικών αντικειµένων που έχουν νόηµα για τους ίδιους, είτε αυτά είναι κάστρα από άµµο, είτε κατασκευές Lego και προγράµµατα υπολογιστών (Papert, 1991). Η σχεδίαση δραστηριοτήτων µε τις ροµποτικές κατασκευές Lego Mindstorms συνδέεται µε την εκπλήρωση ενός έργου µε στόχο την επίλυση ενός προβλήµατος. Σε ένα τέτοιο µαθησιακό περιβάλλον η µάθηση καθοδηγείται από το προς επίλυση πρόβληµα. Προκειµένου να εµπλέξουµε τους µαθητές σε δραστηριότητες σχεδίασης και κατασκευής πραγµατικών αντικειµένων, δηλαδή ροµποτικών κατασκευών που έχουν νόηµα για τους ίδιους και τους γύρω τους, θα πρέπει να επινοήσουµε δραστηριότητες που θα προτρέπουν τους µαθητές να κατασκευάσουν αλλά συγχρόνως να τους ενθαρρύνουµε και να τους υποστηρίξουµε κατάλληλα ώστε να πειραµατιστούν και να διερευνήσουν ιδέες που διέπουν τις κατασκευές τους (Rensick & Silverman, 2005). Οι δραστηριότητες αυτές είναι συνήθως διαθεµατικές και µπορούν να ενταχθούν στα σχολικά µαθήµατα της τεχνολογίας, των φυσικών επιστηµών και της πληροφορικής, τόσο στην πρωτοβάθµια όσο και στη δευτεροβάθµια εκπαίδευση (.Αλιµήσης, 2008). Εικόνα 1.1 Το προγραµµατιζόµενο «τούβλο» RCX της 1ης γενιάς (1998) και το πιο σύγχρονο NXT της 2ης γενιάς (2006) 1.3 LEGO MINDSTORMS Τα Lego Mindstorms είναι µια γραµµή παραγωγής της Lego που συνδυάζει προγραµµατίσηµα τούβλα µε ηλεκτρικές µηχανές, αισθητήρες, τούβλα Lego, και τεχνικά κοµµάτια Lego (όπως εργαλεία, άξονες, ακτίνες, και υδραυλικά µέρη)κατάλληλα για να χτίσει ο χρήστης ροµπότ και άλλα αυτοµατοποιηµένα ή διαλογικά συστήµατα. Η πρώτη λιανική έκδοση Lego Mindstorms κυκλοφόρησε το 1998 και πωλήθηκε εµπορικά µε την επωνυµία Robotics Invention System (RIS). Η τρέχουσα έκδοση κυκλοφόρησε το 2006 ως Lego Mindstorms NXT. Η αρχική Mindstorms Robotics Invention System περιείχε δύο µηχανές, δύο αισθητήρες αφής, και έναν αισθητήρα φωτός. Η έκδοση NXT έχει τρεις σερβοµηχανές και τέσσερις 7

8 αισθητήρες για την αφή, το φως, τον ήχο, και την απόσταση. Τα Lego Mindstorms µπορούν να χρησιµοποιηθούν για να κατασκευαστεί ένα µοντέλο ενσωµατωµένου συστήµατος µε ηλεκτροµηχανικά µέρη ελεγχόµενα από υπολογιστή. Πολλά είδη πραγµατικών ενσωµατωµένων συστηµάτων, από ελεγκτές ανελκυστήρων έως βιοµηχανικά ροµπότ, µπορούν να διαµορφωθούν χρησιµοποιώντας τα Mindstorms. Τα Mindstorms kits πωλούνται επίσης και χρησιµοποιούνται ως εκπαιδευτικό εργαλείο, αρχικά µέσω µιας συνεργασίας µεταξύ της Lego και του MIT Media Laboratory. Η εκπαιδευτική έκδοση των προϊόντων καλείται Lego Mindstorms for Schools, και έρχεται µε το βασισµένο σε γραφική διεπαφή λογισµικό προγραµµατισµού ROBOLAB, που αναπτύχθηκε στο Πανεπιστήµιο Tufts χρησιµοποιώντας ως µηχανή το National Instruments LabVIEW. Εικόνα 1.2 Robotics Invention System - RCX brick First-generation RCX programmable brick. Η πρώτη γενιά LEGO Mindstorms χτίστηκε γύρω από το κοµµάτι της LEGO µε τη µορφή τούβλου γνωστό ως RCX. Περιέχει έναν µικροελεγκτή Renesas H8/300 ως εσωτερική ΚΜΕ του. Το τούβλο προγραµµατίζεται µε τη µεταφόρτωση ενός προγράµµατος (που γράφεται σε µια από διάφορες διαθέσιµες γλώσσες προγραµµατισµού) από ένα PC ή MAC στη RAM του τούβλου µέσω µιας ειδικής υπέρυθρης διεπαφής (IR). Αφότου αρχίσει ο χρήστης ένα πρόγραµµα, µια δηµιουργία RCX Mindstorms µπορεί να λειτουργήσει από µόνη της, ενεργώντας στα εσωτερικά και εξωτερικά ερεθίσµατα σύµφωνα µε τις προγραµµατισµένες οδηγίες. Επίσης, δύο ή περισσότερα τούβλα RCX µπορούν να επικοινωνήσουν το ένα µε το άλλο µέσω της διεπαφής IR, επιτρέποντας τη συνεργασία ή τον ανταγωνισµό µεταξύ των τούβλων. Εκτός από τη θύρα IR, υπάρχουν τρεις θύρες εισαγωγής αισθητήρων και τρεις θύρες σύνδεσης µηχανών (επίσης χρησιµοποιήσιµες για τους λαµπτήρες, κ.λπ.). Υπάρχει επίσης µία LCD που µπορεί να επιδείξει το επίπεδο φόρτισης των µπαταριών, την κατάσταση των θυρών εισόδου-εξόδου, το ποιο πρόγραµµα εκτελείται, καθώς και άλλες πληροφορίες. Τα τούβλα RCX έκδοσης 1.0 διαθέτουν µία παροχή ρεύµατος για να επιτρέπουν τη συνεχή λειτουργία αντί της λειτουργίας περιορισµένου χρόνου κατά τη χρησιµοποίηση µπαταριών. Στην έκδοση RCX 2.0, η παροχή ρεύµατος αφαιρέθηκε. Τα τούβλα RCX µε παροχή ρεύµατος είναι δηµοφιλή για τα στατικά προγράµµατα ροµποτικής (όπως τα ροµπότ βραχίονες) ή για τα πρότυπα µοντέλα τρένων Lego. 8

9 1.3.2 Υποστηριζόµενες Γλώσσες προγραµµατισµού RCX Code (περιέχεται στις Mindstorm εκδόσεις λιανικής) ROBOLAB (βασίζεται στο LabVIEW και αναπτύχθηκε στο Tufts University) ηµοφιλείς Γλώσσες τρίτων κατασκευαστών C and C++ under BrickOS (formerly LegOS) Java under lejos or TinyVM NQC ("Not Quite C") pbforth (επεκτάσεις της Forth γλώσσας προγραµµατισµού) Visual Basic (µέσω του COM+ interface παρεχόµενο µε το CD) RobotC (νέα γλώσσα συµβατή µε την έκδοση NXT ) 1.4 LEGO MINDSTORMS ΝΧΤ Η ανανέωση των Ροµπότ Με τη νέα γενιά ΝΧΤ,, η Lego προχωρεί ένα βήµα πιο πέρα από την επανάσταση των «οικιακής κατασκευής» ροµπότ που η ίδια είχε ξεκινήσει πριν από οκτώ χρόνια µε τα Lego Mindstorms. Πολύ πιο εύκολα και γρήγορα στην κατασκευή τους, τα kit Mindstorms ΝΧΤ δίνουν τη δυνατότητα στους ερασιτέχνες λάτρεις της ροµποτικής κάθε ηλικίας να φτιάξουν και να προγραµµατίσουν το δικό τους µίνι ροµπότ µέσα σε µόλις 30 λεπτά της ώρας. Η αναπροσαρµογή λογισµικού για το δηµοφιλές σύστηµα εφευρέσεων ροµποτικής LEGO MINDSTORMS NXT απελευθερώνεται. Η νέα έκδοση λογισµικού LEGO MINDSTORMS NXT1.1 τώρα παρέχει την υποστήριξη για Vista και Macintosh Windows. Με τη βελτιωµένη χρήση µνήµης του λογισµικού, το LEGO MINDSTORMS NXT περιλαµβάνει µικρότερα συνταγµένα προγράµµατα και συµπιεσµένα αρχεία. Το ΝΧΤ βασίζεται στο επιτυχηµένο Robotics System Invention της εταιρείας, το οποίο έχει βελτιωθεί µε την πρόσθεση νέων τεχνολογιών και αισθητήρων αυξηµένων ικανοτήτων. Το «τουβλάκι» ΝΧΤ που αποτελεί τον εγκέφαλο του ροµπότ είναι ένας αυτόνοµος µικροεπεξεργαστής των 32 bit (σε αντίθεση µε τα 16 bit της πρώτης γενιάς), ο οποίος µπορεί να προγραµµατιστεί µέσω ηλεκτρονικού υπολογιστή PC ή - άλλη καινοτοµία - Mac. Αφού κατασκευάσει το ροµπότ του, ο χρήστης δηµιουργεί ένα δικό του πρόγραµµα χρησιµοποιώντας ένα εύχρηστο αλλά πλούσιο σε χαρακτηριστικά λογισµικό LabVIEW, το οποίο έχει σχεδιαστεί από τη National Instruments Λογισµικό LABVIEW Το λογισµικό LEGO MINDSTORMS NXT τροφοδοτείται από το LabVIEW, ένα διαισθητικό γραφικό λογισµικό προγραµµατισµού που χρησιµοποιείται από τους επιστήµονες και τους µηχανικούς παγκοσµίως στα καταναλωτικά προϊόντα σχεδίου, ελέγχου και δοκιµής και τα συστήµατα όπως MP3 και 9

10 DVD, τα κινητά τηλέφωνα, και τα συστήµατα ασφάλειας αερόσακων οχηµάτων ( Απεικόνιση του ΝΧΤ Ανάλυση των µερών που το αποτελούν Το NXT είναι ο εγκέφαλος ενός ροµπότ MINDSTORMS. Είναι ένα ευφυές, ελεγχόµενο από υπολογιστή τούβλο LEGO που δίνει τη δυνατότητα σε ένα ροµπότ MINDSTORMS να ζωντανέψει και να εκτελέσει τις διαφορετικές διαδικασίες ( Εικόνα 1.3 Εγκέφαλος ενός ροµπότ NXT Θύρες Μηχανών Motor ports (κινητήρες) Το NXT έχει τρεις θύρες εξόδου για την ένωση των µηχανών θύρες Α, Β και C. Sensor ports (αισθητήρες) Το NXT έχει τέσσερις θύρες εισόδου για την ένωση των αισθητήρων - θύρες 1, 2, 3 και 4. USB port (θύρα USB) Συνδέστε ένα καλώδιο USB µε τη θύρα USB και µεταφορτώστε τα προγράµµατα από τον υπολογιστή σας στο NXT (ή φορτώστε τα στοιχεία από το ροµπότ στον υπολογιστή σας). Μπορείτε επίσης να χρησιµοποιήσετε την ασύρµατη σύνδεση Bluetooth για το φόρτωµα και τη µεταφόρτωση NXT κουµπιά Πορτοκαλί κουµπί:on/enter/run Γκρι Βέλη: Χρησιµοποιούνται για να κινηθεί ο χρήστης αριστερά και δεξιά στο µενού του NXT. Γκρι κουµπί: Χρησιµοποιείται για να πάει το χρήστη πίσω(clear). 10

11 Εικόνα 1.4 Μέρη εγκεφάλου ΝΧΤ Υλικό του NXT ΑΙΣΘΗΤΗΡΑΣ ΑΦΗΣ(TOUCH SENSOR) Εικόνα 1.5 Αισθητήρας Αφής Ο αισθητήρας αφής δίνει στο ροµπότ σας την αίσθηση της αφής. Ο αισθητήρας αφής ανιχνεύει πότε πιέζεται από κάτι και πότε απελευθερώνεται πάλι. Εικόνα 1.6 Επεξήγηση µορφών πιέσεων του αισθητήρα αφής. Προτάσεις χρήσης: Μπορείτε να χρησιµοποιήσετε τον αισθητήρα αφής για να κάνετε το ροµπότ σας να κρατά πράγµατα, για παράδειγµα ένας ροµποτικός βραχίονας που εξοπλίζεται µε έναν αισθητήρα αφής ενηµερώνει το ροµπότ εάν υπάρχει ή όχι κάτι στο βραχίονά του και στη συνέχεια το αρπάζει. Επίσης, 11

12 µπορείτε να χρησιµοποιήσετε έναν αισθητήρα αφής για να κάνετε το ροµπότ σαν να εκτελέσει µια εντολή, παραδείγµατος χάριν, µε τη πίεση του αισθητήρα αφής µπορείτε να κάνετε το ροµπότ σας να περπατήσει, να µιλήσει, να κλείσει µια πόρτα, ή να ανοίξει τη TV σας. ΑΙΣΘΗΤΗΡΑΣ ΗΧΟΥ(SOUND SENSOR) Εικόνα 1.7 Αισθητήρας Ήχου Ο αισθητήρας ήχου µπορεί να ανιχνεύσει τόσο decibels [DB], όσο και ρυθµισµένο decibel [DBA]. Decibel είναι µια µέτρηση της συνήθους έντασης ήχου. Στην ανίχνευση ρυθµισµένων decibels, η ευαισθησία του αισθητήρα προσαρµόζεται στην ευαισθησία του ανθρώπινου αυτιού. Με άλλα λόγια, ανιχνεύει ήχους που τα αυτιά σας είναι σε θέση να ακούσουν. Ο αισθητήρας ήχου µπορεί να µετρήσει τα επίπεδα ηχητικής έντασης µέχρι 90 DB. Τα επίπεδα έντασης ήχου είναι εξαιρετικά περίπλοκα, έτσι οι αναγνώσεις αισθητήρων στο MINDSTORMS NXT επιδεικνύονται σε ποσοστό [%]. Όσο χαµηλότερα τα ποσοστά τόσο πιο ήρεµος ο χώρος µέτρησης. Για παράδειγµα: 4-5% είναι όπως ένα σιωπηλό καθιστικό 5-10% θα ήταν κάποιος που µιλά από κάποια απόσταση µακριά 10-30% είναι κανονική συνοµιλία κοντά στον αισθητήρα ή µουσική που παίζεται σε κανονικό επίπεδο % είναι όπως ακούγεται µουσική που παίζεται σε µεγάλη ένταση οκιµή για τη δυνατότητα του αισθητήρα ήχου να διαβάζει τον ήχο της φωνής. Εικόνα 1.8 οκιµή λειτουργίας αισθητήρα ήχου Προτάσεις χρήσης: Ο χρήστης µπορεί να φτιάξει ένα πρόγραµµα µε πραγµατικούς ήχους και να ακούει αυτούς όταν τρέχει το πρόγραµµα. 12

13 ΑΙΣΘΗΤΗΡΑΣ ΦΩΤΟΣ(LIGHT SENSOR) Εικόνα 1.9 Αισθητήρας Φωτός Ο αισθητήρας φωτός είναι ένας από τους δύο αισθητήρες που δίνουν όραση στο ροµπότ σας [ο υπερηχητικός αισθητήρας είναι ο άλλος]. Ο αισθητήρας φωτός επιτρέπει στο ροµπότ σας να διακρίνει µεταξύ του φωτός και του σκοταδιού. Μπορεί να διαβάσει την ένταση του φωτός σε ένα δωµάτιο και να µετρήσει την φωτεινή ένταση των χρωµατισµένων επιφανειών. Εικόνα 1.10 Αναλογία όρασης ανθρώπου ροµπότ. Προτάσεις χρήσης: Μπορείτε να χρησιµοποιήσετε τον αισθητήρα φωτός για να κάνετε ένα ροµπότ συναγερµό διαρρηκτών, δηλαδή, όταν ένας εισβολέας ανοίγει το φως στο δωµάτιό σας το ροµπότ µπορεί να αντιδράσει για να υπερασπίσει την ιδιοκτησία σας. Μπορείτε επίσης να χρησιµοποιήσετε τον αισθητήρα φωτός για να κάνετε το ένα ροµπότ να ταξινοµήσει πράγµατα κατά το χρώµα. Εξετάστε τη δυνατότητα του αισθητήρα φωτός να διαβάσει το περιβαλλοντικό φως µε τη µέτρηση του επιπέδου φωτός στις διαφορετικές θέσεις του δωµατίου. Παραδείγµατος χάριν, κρατήστε αρχικά τον αισθητήρα απέναντι στο παράθυρο και κατόπιν κρατήστε τον στο πλαίσιο ενός πίνακα. Ο χρήστης µπορεί να δοκιµάσει τον αισθητήρα φωτός συνδέοντάς τον στο NXT, στη συνέχεια ανοίγοντας το ροµπότ και τοποθετώντας τον αισθητήρα πάνω από διαφορετικά χρώµατα µπορεί να δει τις αναγνώσεις που κάνει. Εικόνα 1.11 οκιµή Αισθητήρα. 13

14 ΑΙΣΘΗΤΗΡΑΣ ΥΠΕΡΗΧΩΝ (ULTRASONIC SENSOR) Εικόνα 1.12 Αισθητήρας Υπερήχων Ο αισθητήρας υπέρηχων είναι ένας από τους δύο αισθητήρες που δίνουν όραση στο ροµπότ σας [ο αισθητήρας φωτός είναι ο άλλος]. Ο υπερηχητικός αισθητήρας επιτρέπει στο ροµπότ σας για να δει και να ανιχνεύσει τα αντικείµενα. Μπορείτε επίσης να τον χρησιµοποιήσετε για να κάνετε το ροµπότ σας να αποφύγει εµπόδια, να έχει την αίσθησης της απόστασης, και να ανιχνεύει τη µετακίνηση. Ο υπερηχητικός αισθητήρας µετρά την απόσταση σε εκατοστόµετρα και σε ίντσες. Είναι σε θέση να µετρήσει τις αποστάσεις από 0 έως 255 εκατοστόµετρα µε ακρίβεια +/- 3 εκατ. Ο υπερηχητικός αισθητήρας µετρά την απόσταση µε τον υπολογισµό του χρόνου που παίρνει σε ένα κύµα για να χτυπήσει ένα αντικείµενο και να επιστρέψει - ακριβώς όπως µια ηχώ. Τα µεγάλου µεγέθους αντικείµενα µε τις σκληρές επιφάνειες επιστρέφουν τις καλύτερες αναγνώσεις. Τα αντικείµενα φτιαγµένα από µαλακό ύφασµα ή τα κυρτά [όπως µια σφαίρα] ή τα πολύ λεπτά ή µικρά µπορεί να είναι δύσκολα για τον αισθητήρα να ανιχνευθούν. Πρέπει να σηµειωθεί ότι δύο ή περισσότεροι Ultrasonic αισθητήρες που λειτουργούν στο ίδιο δωµάτιο µπορεί να µπερδέψουν ο ένας τις αναγνώσεις του άλλου. ΣΕΡΒΟΜΗΧΑΝΕΣ (SERVO MOTORS) Εικόνα 1.13 Σερβοµηχανή Οι τρεις σερβοµηχανές δίνουν στο ροµπότ σας τη δυνατότητα να κινηθούν. Εάν χρησιµοποιήσετε το block κίνησης στο λογισµικό LEGO MINDSTORMS NXT για να προγραµµατίσετε τις µηχανές σας, οι δύο µηχανές θα συγχρονιστούν αυτόµατα, έτσι ώστε το ροµπότ σας να κινηθεί σε µια ευθεία γραµµή. ΑΙΣΘΗΤΗΡΑΣ ΠΕΡΙΣΤΡΟΦΗΣ Κάθε µηχανή έχει έναν ενσωµατωµένο αισθητήρα περιστροφής. Ο αισθητήρας περιστροφής µετρά τις περιστροφές µηχανών σε µοίρες ή πλήρεις περιστροφές [ακρίβεια +/- 1]. Μια περιστροφή είναι ίση µε 360 µοίρες, έτσι εάν θέσετε µια µηχανή να κάνει περιστροφή 180 µοιρών, ο άξονας περιστροφής του θα κάνει µισή στροφή. Ο ενσωµατωµένος αισθητήρας περιστροφής σε κάθε µηχανή σας αφήνει επίσης να θέσετε διαφορετικές ταχύτητες για τις µηχανές σας [µε τον καθορισµό των διαφορετικών παραµέτρων ταχύτητας στο λογισµικό]. 14

15 ΚΕΦΑΛΑΙΟ 2:ΠΑΡΟΥΣΙΑΣΗ Ι ΙΟΤΗΤΩΝ ΤΩΝ ΠΡΟΣΦΕΡΟΜΕΝΩΝ ΠΕΡΙΒΑΛΛΟΝΤΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΤΟΥ NXT 2.1 ΤΟ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ LEGO MINDSTORMS Το σύστηµα Lego ΝΧΤ προσφέρει ένα απλό γραφικό περιβάλλον προγραµµατισµού, που δίνει τη δυνατότητα δηµιουργίας προγραµµατιζόµενων «συµπεριφορών» για τις µηχανικές κατασκευές. Οι προγραµµατιζόµενες «συµπεριφορές» µεταβιβάζονται από τον Η/Υ στη µηχανική κατασκευή µέσω σύνδεσης USB ή Bluetooth µεταξύ του Η/Υ και του µικροεπεξεργαστή των µηχανικών κατασκευών. Το εκπαιδευτικό λογισµικό LEGO MINDSTORMS Education NXT βασίζεται στη χρήση εικονιδίων και είναι µια εκπαιδευτική έκδοση του επαγγελµατικού λογισµικού LabVIEW της National Instruments, λογισµικό που χρησιµοποιούν παγκοσµίως επιστήµονες και µηχανικοί, προκειµένου να σχεδιάσουν, να ελέγξουν και να δοκιµάσουν προϊόντα και συστήµατα. Το λογισµικό έχει µια διαισθητική διεπαφή σύρε και άφησε (drag and drop) και ένα γραφικό προγραµµατιστικό περιβάλλον, το οποίο καθιστά την εφαρµογή προσιτή για έναν αρχάριο, αλλά και εξίσου δυναµική για έναν εξειδικευµένο χρήστη. Οι παλέτες προγραµµατισµού προσφέρουν όλα τα blocks προγραµµατισµού που απαιτούνται για να δηµιουργηθούν τα προγράµµατα. Κάθε block προγραµµατισµού περιλαµβάνει τις οδηγίες που το NXT µπορεί να ερµηνεύσει. Ένα πρόγραµµα δηµιουργείται µε συνδυασµό διαφορετικών blocks. Εικόνα 2.1 Περιβάλλον Lego Mindstorms µε ενδεικτικά πεδία ρυθµίσεων παραµέτρων των blocks. 15

16 Τα διαθέσιµα εικονίδια-blocks περιλαµβάνουν µεταξύ άλλων block κίνησης (κάνουν τα ροµπότ να κινούνται), block αναµονής (κάνουν το ροµπότ να περιµένει για την ενεργοποίηση των αισθητήρων του ή για τη λήξη ενός οριζόµενου χρονικού διαστήµατος), block επανάληψης (Loop) (το ροµπότ επαναλαµβάνει την ίδια συµπεριφορά όσες φορές ορίσουµε ή µέχρι να ενεργοποιηθεί κάποιος αισθητήρας), block επιλογής (Switch block) (επιτρέπουν στο ροµπότ να παίρνει τις δικές του αποφάσεις). Η πλήρης παλέτα εικονιδίων περιλαµβάνει blocks δράσης που επιτρέπουν τον έλεγχο διάφορων εξωτερικών συσκευών (διαδραστικού κινητήρα, ήχων, λαµπτήρων κ.ά.). Τα blocks ροής επιτρέπουν τη δηµιουργία σύνθετων συµπεριφορών. Περιλαµβάνουν τον έλεγχο για την επανάληψη, την αναµονή και τις συνθήκες µεταβλητών για τη διακοπή συµπεριφοράς ή τον καθορισµό µιας λογικής σειράς σε ένα πρόγραµµα και τη λήψη αποφάσεων για τον προγραµµατισµό αντιδράσεων σε καθορισµένες τιµές των αισθητήρων. Τέλος, το πρόγραµµα προσφέρει «Τα δικά µου blocks» (My Blocks) µε τα οποία ο χρήστης µπορεί να αποθηκεύσει ένα δικό του πρόγραµµα ως ένα µοναδικό block, που µπορεί να το ξαναχρησιµοποιήσει σε άλλο πρόγραµµα (.Αλιµήσης, 2008). Το πρόγραµµα τρέχει σε περιβάλλοντα Windows και Macintosh αλλά όχι σε Linux. Απαιτήσεις συστήµατος: Windows Intel Pentium processor or compatible, 800 MHz minimum Windows XP Professional ή Home Edition µε Service Pack 2 256MB of RAM minimum Πάνω από 300MB διαθεσιµότητα σκληρού δίσκου XGA display (1024x768) 1διαθέσηµη USB θύρα CD-ROM drive Compatible Bluetooth adapter (προαιρετικά)* Macintosh PowerPC G3, G4, G5 processor, 600 MHz minimum Apple MacOS X v or MB of RAM minimum Πάνω από 300MB διαθεσιµότητα σκληρού δίσκου XGA display (1024x768) 1διαθέσηµη USB θύρα CD-ROM drive Compatible Bluetooth adapter (προαιρετικά)* 16

17 Εικόνα 2.2 Περιβάλλον Lego Mindstorms 17

18 2.2 ROBOTC Η RobotC σχεδιάστηκε σαν ένα εκπαιδευτικό εργαλείο ικανό για καινούριους αλλά και για ήδη εκπαιδευµένους προγραµµατιστές. Περιλαµβάνει µία υψηλού επιπέδου εκπαιδευτική λειτουργία και είναι ιδιαίτερα ελκυστική για τους καθηγητές που χρησιµοποιούν ποικίλες πλατφόρµες για να διδάξουν ροµποτική. H RobotC ( επιτρέπει να προγραµµατιστεί το NXT χρησιµοποιώντας την πρότυπη γλώσσα C. Αναπτύχθηκε από την ακαδηµία Ροµποτικής στο Πανεπιστήµιο Carnegie Mellon. Όσο αναφορά το firmware τόσο στη πλατφόρµα RobotC, όσο και στη Robolab είναι Standard όπως και σε πολλά άλλα λογισµικά Lego. Εικόνα 2.3 Ιδιότητες RobotC Αναλυτικότερα, µετά το πρώτο βήµα που είναι το χτίσιµο του ροµπότ, σαν δεύτερο βήµα πρέπει να αποθηκεύσει ο χρήστης ένα πρόγραµµα (firmware) που λειτουργεί σαν ένα λειτουργικό σύστηµα, προκειµένου το ροµπότ να καταλάβει το πρόγραµµα RobotC. Ο χρήστης συνδέει το ροµπότ µε τον υπολογιστή µέσω USB για να αποθηκεύσει το πρόγραµµα. Εικόνα 2.4 Σύνδεση ΝΧΤ µε USB 18

19 Ακόµη, η πλατφόρµα RobotC µπορεί να εγκατασταθεί σε Windows, αλλά όχι σε Linux. Ωστόσο, γίνεται µία προσπάθεια για την εγκατάστασή τους σε MacOSX, η οποία δεν έχει επιτευχθεί ακόµα. Οι γραφικές λύσεις προγραµµατισµού προσφέρουν συνήθως δυνατότητα drag-and-drop ενός "µπλοκ κώδικα". Η ROBOTC έχει µια παρόµοια ικανότητα, µε τη διαφορά ότι έχουµε δυνατότητα "drag and drop" κειµένου. Το αριστερό παράθυρο στην εικόνα περιέχει το "λεξικό" της ROBOTC όπου ενσωµατώνονται οι δυνατότητες ελέγχου.. Εικόνα 2.5 Code Template Άλλες απαιτήσεις συστήµατος: Intel Premium επεξεργαστή 256ΜΒ RAM Πάνω από 30MB σκληρό δίσκο ιαθέσιµη θύρα USB Η ROBOTC απευθύνεται σε αρχάριους και προχωρηµένους χρήστες καθώς έχει "βασική λειτουργία" και "λειτουργία εµπειρογνωµόνων". Στην "βασική λειτουργία" για παράδειγµα πολλές δυνατότητες και τα µενού είναι κρυφά. 19

20 Εικόνα 2.6 Περιβάλλον RobotC Η ROBOTC διαθέτει ένα ισχυρό διαδραστικό πρόγραµµα εντοπισµού σφαλµάτων σε πραγµατικό χρόνο, που µειώνει σηµαντικά το χρόνο που απαιτείται για το debug των προγραµµάτων. O χρήστης της πλατφόρµας RobotC εξοικειώνεται µε το περιβάλλον και πλεονεκτεί στο να γράφει γρήγορα προγράµµατα, όπως και στο να µαθαίνει προχωρηµένα προγραµµατιστικά σχέδια. Αξίζει να σηµειωθεί ότι, έχουν πραγµατοποιηθεί αρκετά γεγονότα και συζητήσεις για τη συγκεκριµένη πλατφόρµα. Μέχρι σήµερα, πάνω από 2000 µαθητές έχουν διδαχθεί στην τάξη την πλατφόρµα ROBOTC. Στο τέλος του πρώτου µαθήµατος, προγραµµάτιζαν για πρώτη φορά και έτρεχαν τα προγράµµατα τους στο NXT. Στην Ακαδηµία Ροµποτικής Carnegie Mellon University αναπτύχθηκαν βίντεο βήµα-βήµα οδηγιών, που επιτρέπουν στους νέους χρήστες να γίνουν ικανοί προγραµµατιστές γρήγορα. Η πλατφόρµα ROBOTC υποστηρίζει τόσο την NXT και RCX καθώς και προϊόντα από την Innovation FIRST(Swan D.,2007). Η πλατφόρµα RobotC δίνει τη δυνατότητα να επικοινωνεί µε Bluetooth το τουβλάκι µε τον υπολογιστή, τα τουβλάκια µεταξύ τους και το τουβλάκι µε άλλη µηχανή. Είναι µία από τις λίγες πλατφόρµες που υποστηρίζουν τρισδιάστατες µηχανές ( 20

21 2.3 NXC Η NXC (Not exactly C) είναι µία όµοια µε τη C γλώσσα προγραµµατισµού για τον εγκέφαλο NXT. Τα NXC προγράµµατα αναπτύσσονται χρησιµοποιώντας το περιβάλλον ανάπτυξης Bricx. Το Bricx αρχικά αναπτύχθηκε για το προηγούµενο προϊόν της LEGO, το RCX, και έχει ενισχυθεί για την υποστήριξη και του NXT. Η NXC χρησιµοποιεί το ίδιο firmware µε την NXT-G. Αυτό είναι πολύ βολικό για τους χρήστες που θέλουν να προγραµµατίσουν τόσο σε γραφικό όσο και σε περιβάλλον κειµένου γιατί δεν χρειάζεται να φορτώνουν και να αλλάζουν το firmware κάθε φορά που θέλουν να αλλάξουν τον τύπο του περιβάλλοντος. Μπορούν να αποθηκευτούν και τα δύο NXT-G και NXC προγράµµατα ταυτόχρονα στο ίδιο Brick. Η NXC έχει τους ίδιους περιορισµούς µε την NXT-G. Έχει ακέραιες αλλά όχι πραγµατικές µεταβλητές και δεν έχει ισχυρή µορφοποίηση κειµένου. Ακόµα διαθέτει σύστηµα φακέλων. Το NXT έχει bytecode διερµηνέα (παρέχεται από τη LEGO), που χρησιµοποιείται για την εκτέλεση των προγραµµάτων. Ο NXC µεταγλωττιστής µετατρέπει ένα πηγαίο πρόγραµµα σε NXT bytecodes, το οποίο µπορεί στη συνέχεια να εκτελεστεί. Παρόλο που ο Preprocessor και οι δοµές ελέγχου της NXC είναι παρόµοια µε τη C, η NXC δεν είναι γενικής χρήσης γλώσσα προγραµµατισµού. Υπάρχουν πολλοί περιορισµοί που απορρέουν από εµπόδια του NXT bytecode διερµηνέα. Η NXC ορίζεται ως δύο ξεχωριστά τµήµατα. Η NXC γλώσσα περιγράφει την σύνταξη που πρέπει να χρησιµοποιείται στο πρόγραµµα. Το NXC Application Programming Interface (API) περιγράφει τις συναρτήσεις συστήµατος, τις σταθερές και τις µακροεντολές που µπορούν να χρησιµοποιούνται από το προγράµµατα. Το API, ορίζεται σε ένα ειδικό αρχείο γνωστό ως "header file" το οποίο, από προεπιλογή, αυτόµατα συµπεριλαµβάνεται κατά τη σύνταξη ενός προγράµµατος. Η NXC υποστηρίζεται τόσο από περιβάλλοντα Windows και Mac OSX όσο και από Linux (John Hansen, 2007). Εικόνα 2.7 Περιβάλλον NXC 21

22 2.4 NBC To NBC αντικαθιστά το NeXT Byte Codes. Είναι µια απλή γλώσσα για τον προγραµµατισµό (assemply) του εγκεφάλου LEGO MINDSTORMS NXT. Όµοια µε τα NXC τα NΒC προγράµµατα αναπτύσσονται χρησιµοποιώντας το περιβάλλον ανάπτυξης Bricx. Η NΒC χρησιµοποιεί το ίδιο firmware µε την NXT-G. Έχει ακέραιες αλλά όχι πραγµατικές µεταβλητές και δεν έχει ισχυρή µορφοποίηση κειµένου. Ακόµα διαθέτει σύστηµα φακέλων. Ο NΒC µεταγλωττιστής µετατρέπει ένα πηγαίο πρόγραµµα σε NXT bytecodes, το οποίο µπορεί στη συνέχεια να εκτελεστεί. Παρόλο που ο Preprocessor και οι δοµές ελέγχου της NΒC είναι παρόµοια µε την assemly, η NBC δεν είναι γενικής χρήσης γλώσσα προγραµµατισµού. Υπάρχουν πολλοί περιορισµοί που απορρέουν από εµπόδια του NXT bytecode διερµηνέα. H NBC ορίζεται ως δύο ξεχωριστά τµήµατα. Η NBC γλώσσα περιγράφει την σύνταξη που πρέπει να χρησιµοποιείται στα προγράµµατα. Το NBC Application Programming Interface (API) περιγράφει τις συναρτήσεις συστήµατος, τις σταθερές και τις µακροεντολές που µπορούν να χρησιµοποιούνται από το προγράµµατα. Το API, ορίζεται σε ένα ειδικό αρχείο γνωστό ως "header file" το οποίο, από προεπιλογή, αυτόµατα συµπεριλαµβάνεται κατά τη σύνταξη ενός προγράµµατος. Η NXC υποστηρίζεται τόσο από περιβάλλοντα Windows και Mac OSX όσο και από Linux. Εικόνα 2.8 Περιβάλλον NBC Αν µόλις ξεκινήσατε τον προγραµµατισµό, τότε τα γραφικά περιβάλλοντα όπως το Mindstorms NXT software ίσως θα ήταν καλύτερη επιλογή. ιαφορετικά, αν είστε προγραµµατιστής και προτιµάτε να πληκτρολογείτε λίγες γραµµές από το να χρησιµοποιείται τη λειτουργία drag and drop, τότε είτε η NBC ή η NXC θα ήταν ιδανική για εσάς ( 22

23 2.5 ROBOLAB Το περιβάλλον ROBOLAB έχει αναπτυχθεί από το πανεπιστήµιο Tufts για τον εγκέφαλο πρώτης γενιάς Lego Mindstorms RCX. Ήταν εκτενώς ενισχυµένο για να υποστηρίζει τόσο τον RCX όσο και τον επόµενης γενιάς εγκέφαλο NXT. To ROBOLAB είναι άλλο ένα γραφικό περιβάλλον, αν και δεν είναι τόσο διαισθητικό όπως η γλώσσα NXT-G. Αν γνωρίζετε ήδη ROBOLAB ή θα πρέπει να εισάγετε το πρόγραµµα και στους δύο RCX και NXT εγκεφάλους, το ROBOLAB είναι µια καλή επιλογή για εσάς. Αν µόλις αρχίζετε και θέλετε µια γραφική γλώσσα προγραµµατισµού για το NXT, το NXT-G(NXT Software) είναι η καλύτερη επιλογή. Εικόνα 2.9 Περιβάλλον Robolab Το ROBOLAB γράφτηκε χρησιµοποιώντας το σύστηµα LabVIEW. Το LabVIEW είναι επίσης η τεχνολογία που χρησιµοποιήθηκε για να γραφεί το NXT-G. Άλλα χρήσιµα χαρακτηριστικά του ROBOLAB συµπεριλαµβάνουν υποστήριξη για ακέραιους και πραγµατικούς υπολογισµούς. Επίσης διαθέτει µια ολοκληρωµένη λύση καταγραφής δεδοµένων. Το πρόγραµµα τρέχει σε περιβάλλοντα Windows και Macintosh αλλά όχι σε Linux. Γραφικές διεπαφές όπως η NXT-G και η ROBOLAB είναι πολύ εύχρηστες αλλά µπορεί να καταντήσουν κουραστικές καθώς αποκτάτε εµπειρία στον προγραµµατισµό ( 07_NXT.shtml). 23

24 Πλεονεκτήµατα του Robolab Η αντιστοίχιση φυσικών οντοτήτων στο περιβάλλον διευκολύνει το µαθητή. Απεικονίζονται όχι µόνο οι φυσικές οντότητες αλλά και οι ιδιότητές τους και οι λειτουργίες τους. Στο περιβάλλον συγγραφής του κώδικα γίνεται ταυτόχρονα και συντακτικός έλεγχος, έτσι απαλλάσσεται ο προγραµµατιστής (µαθητής) από συντακτικά λάθη. Φυσικά παραµένουν τα λογικά λάθη. Όσο για τα λάθη χρόνου εκτέλεσης σπανίζουν µιας και το πρόγραµµα συνήθως κατασκευάζεται για να δίνει συµπεριφορές σε ροµποτικές συσκευές. ηλαδή ανάλογα µε τις τιµές των τριών αισθητήρων παρέχεται ισχύς στις τρεις εξόδους. Μια διαίρεση µε το µηδέν για παράδειγµα, είναι πολύ σπάνιο έως απίθανο γεγονός. Μειονεκτήµατα του Robolab Τα εικονίδια είναι πολλά και ίσως µερικά να είναι περιττά. Τα εικονίδια είναι πολλά και τίθεται θέµα διακριτότητας. Η αντιστοιχία εικονιδίων και λειτουργιών δεν είναι πάντα αυτονόητη Το πρόβληµα της αναζήτησης εικονιδίου 2.6 NXJ Μία ακόµα πλατφόρµα που µπορεί ο χρήστης να εξερευνήσει είναι η NXJ, η οποία αποτελεί µία JAVA εκτέλεση για το NXT,αλλά µε σηµαντικά µικρότερη βιβλιοθήκη. Η δεδοµένη βιβλιοθήκη είναι αρκετά µεγάλη για τη συνολική µνήµη του NXT στα 256kbytes. Τα προγράµµατα NXJ γράφονται και εκσφαλµατώνονται στον υπολογιστή, ενώ στη συνέχεια τα ήδη διορθωµένα προγράµµατα µεταφέρονται στο NXT όπου και εκτελούνται, σε αντίθεση µε την πλατφόρµα pblua στην οποία η διόρθωση των προγραµµάτων γίνεται στο NXT brick. H LeJos NXT, µία µικροσκοπική JAVA εικονική µηχανή, όπως χαρακτηρίζεται, προσφέρει επαναφορά και συγχρονισµό ( 07_NXT.shtml). Εικόνα 2.10 NXJ firmware 24

25 Μπορεί να υποστηριχθεί από υπολογιστές οι οποίοι έχουν Windows, MacOSX ή Linux, όπως συµβαίνει και µε τις NBC και NXC. Αξίζει, επίσης, να σηµειωθεί ότι και εδώ δίνεται η δυνατότητα επικοινωνίας µε Bluetooth των NXT µεταξύ τους ή µεταξύ υπολογιστή και NXT. Το πρωτόκολλο Ι2C διευκολύνει τη λήψη και την αποστολή δεδοµένων από συσκευές, ενώ ο χρήστης µπορεί να αποθηκεύσει αρχεία ή φακέλους στο NXT τα οποία µπορεί να διαβάσει και να χρησιµοποιήσει αργότερα. Όσο αναφορά τους τύπους δεδοµένων που χρησιµοποιούνται στην πλατφόρµα NXJ περιλαµβάνει πραγµατικούς(float) και σειρές χαρακτήρων(string), όπως και στη JAVA, κάνει χρήση πολλών από των java.lang, java.util, java.io κλάσεων. Συµπερασµατικά, η LeJos NXJ θυµίζει πολύ τη γλώσσα προγραµµατισµού JAVA και είναι µία ενδιαφέρουσα πλατφόρµα για τους προγραµµατιστές αφού δίνει τη δυνατότητα εξοικείωσης στον προγραµµατιστή µε προχωρηµένα προγράµµατα ( OSEK/lejos_nxj/README.html). Εικόνα 2.11 NXJ Enterprise 2.7 PbLua Συνεχίζοντας τη γνωριµία µε το software των Lego µία ακόµα πλατφόρµα είναι η pblua. Είναι µία σχετικά καινούργια πλατφόρµα που βασίζεται σε κείµενο και η οποία έχει κερδίσει την προσοχή και το ενδιαφέρον των ακαδηµαϊκών. Η Lua είναι µια πραγµατικά όµορφη γλώσσα η οποία χρησιµοποιείται σε όλα τα είδη των εφαρµογών. Είναι γραµµένη σε C και µεταβάλλεται εύκολα µε ελάχιστες απαιτήσεις στο χρόνο που «τρέχει» ένα πρόγραµµα. ίνει τη δυνατότητα στο χρήστη να µπορεί να τη διαβάσει και συνθέσει εύκολα κώδικα. 25

26 Εικόνα 2.12 Παράθυρο διαλόγου κατά την εγκατάσταση της εφαρµογής Η πλατφόρµα pblua είναι µία απόλυτα χαρακτηριστική έκδοση Lua για το NXT. Όσο αναφορά την εκτέλεση της ακολουθεί µία συγκεκριµένη γραµµή η οποία µοιάζει αρκετά στην εκτέλεση της RobotC και της NXC, ενώ δεν απαιτείται να έχει ο χρήστης IDE για να χρησιµοποιήσει την πλατφόρµα pblua σε αντίθεση µε τις RobotC και NXC. Αν θέλει όµως µπορεί να έχει. Επίσης, το να χειρίζεται ο χρήστης την πλατφόρµα pblua είναι εύκολο µε οποιαδήποτε µηχανή η οποία έχει πρόσβαση σε µία σειρά διαδοχικών διαδικασιών που λειτουργούν σε USB ή προσοµοίωση µε Bluetooth, και αυτό σχετικά µε υπολογιστές που υποστηρίζουν Windows, MacOSX ή Linux ( ). Εικόνα 2.13 PbLua Bluetooth 26

27 Είναι χαρακτηριστικό ότι η πλατφόρµα που µελετάµε, δεν υποστηρίζει το standard Lego firmware, την επικοινωνία δηλαδή µε Bluetooth NXTs µεταξύ τους και δικτύου υπολογιστών µε NXT, όπως συµβαίνει στην πλατφόρµα RobotC, αφού η τελευταία δεν έχει τη δυνατότητα χειρισµού αυθαίρετων δεδοµένων από µία µηχανή µε Bluetooth, ενώ η pblua µπορεί να υποστηρίζει τη ροή δεδοµένων από τέτοιες µηχανές. Επιπλέον Πλεονεκτήµατα: Η πλατφόρµα pblua υποστηρίζεται από το πρωτόκολλο I2C, το οποίο είναι ένα πρωτόκολλο επικοινωνίας που µπορεί να χρησιµοποιηθεί πέραν από µικρές αποστάσεις. Αποτελείται από µία γραµµή ρολογιού και µία γραµµή δεδοµένων. Η τελευταία µπορεί να χρησιµοποιηθεί για να στέλνει ή να λαµβάνει δεδοµένα από τη συσκευή που είναι συνδεδεµένη σε ένα γκρουπ από ηλεκτρικά σήµατα τα οποία µπορούν να µοιράζονται ανάµεσα σε πολλές συσκευές και το πρωτόκολλο I2C είναι υπεύθυνο γι αυτό. Χρησιµοποιώντας την πλατφόρµα pblua φάκελοι µπορούν να αποθηκευτούν στη µνήµη του NXT. Έτσι, ο χρήστης µπορεί να δηµιουργήσει, να γράψει και να διαβάσει τα αρχεία, αλλά ακόµα καλύτερα µπορεί και να τα «τρέξει». Έχει τη δυνατότητα να διαλέξει τα αρχεία είτε από το NXT είτε από το πρόγραµµα και να φορτώσει δεδοµένα στο ροµπότ τα οποία θα χρησιµοποιήσει αργότερα. Προγραµµατιστές οι οποίοι είναι εξοικειωµένοι µε τη Lua και άλλες γλώσσες, είναι πιθανό να συγχυστούν µε τους αριθµούς τύπου float σαν ένα ιδιαίτερο τύπο δεδοµένων στη pblua. Αναλυτικότερα, ο βασικός τύπος αριθµητικών δεδοµένων υπογράφει 32 bits ακεραίους. Χρησιµοποιεί δηλαδή η γλώσσα Lua έναν τύπο δεδοµένων float που ονοµάζεται userdata και είναι κοντά στο κλασσικό τύπο δεδοµένων. Η πλατφόρµα pblua επιτρέπει στο χρήστη να χρησιµοποιήσει ένα datalog για να συλλέξει δεδοµένα από τους αισθητήρες του ροµπότ για περαιτέρω ανάλυση και να επιλέξει µία διαδικασία φόρτωσης δεδοµένων χωρίς να συνδέσει τη κονσόλα στο NXT. Εικόνα 2.14 Περιβάλλον εφαρµογής PbLua 27

28 2.8 LeJos OSEK Τελειώνοντας την περιήγηση µας στο software των Lego Mindstorms αξίζει να γίνει µία αναφορά και στην πλατφόρµα LeJos OSEK. Η NXT OSEK είναι µία ανοικτού λογισµικού πλατφόρµα για τα NXT Lego Mindstorms. Η γλώσσα που χρησιµοποιείται είναι η ANSI C, ενώ ένας τρόπος για να ανεβάσουµε µία διαδικασία στο NXT είναι αποθηκεύοντας στο ροµπότ ένα πρόγραµµα (firmware) που λειτουργεί σαν ένα λειτουργικό σύστηµα προκειµένου το ροµπότ να καταλάβει τα προγράµµατα γραµµένα στη LeJos OSEK. Εικόνα 2.15 Περιβάλλον εφαρµογής LeJos OSEK Συνεχίζοντας, αυτό το προϊόν κατανέµεται από την εταιρία Sourgeforce και τρέχει σε λειτουργικά συστήµατα MS Windows, Linux και MAC OS. Λόγω της καλής γνώσης της γλώσσας προγραµµατισµού Java µεταξύ των προγραµµατιστών, πολλοί από τους χρήστες των Lego Mindstorms χρησιµοποιούν αυτή την πλατφόρµα. Όπως σηµειώνεται και στην προηγούµενη πλατφόρµα δεν απαιτείται από το χρήστη IDE ώστε να έχει πρόσβαση στην πλατφόρµα. Επίσης, δίνεται η δυνατότητα επικοινωνίας µε Bluetooth µεταξύ υπολογιστή και NXT και µεταξύ δύο NXTs, ενώ δεν έχει ακόµα παρατηρηθεί κάποια δοκιµή για την επικοινωνία NXT µε άλλη συσκευή. υποστηρίζεται από το πρωτόκολλο Ι2C γίνεται χρήση του τύπου αριθµητικών δεδοµένων float δίνει τη δυνατότητα αποθήκευσης και επανάκτησης δεδοµένων από το NXT µε χρήση ενός συστήµατος αρχείου(file system). 28

29 Εξερευνώντας την πλατφόρµα ο προγραµµατιστής µπορεί να µάθει να προγραµµατίζει χρησιµοποιώντας το NXT, να συνθέτει και να γράφει γρήγορα προγράµµατα και ανάλογα µε την εξοικείωση και τις ικανότητες του καθενός να τα γράφει σε λίγο χρόνο ( Εικόνα 2.16 LeJos OSEK firmware 29

30 ΚΕΦΑΛΑΙΟ 3:NXT Software 3.1 ΕΙΣΟ ΟΣ ΣΤΟ ΠΡΟΓΡΑΜΜΑ Εγκαθιστώντας την πλατφόρµα NXT-G(ή NXT Software) εµφανίζεται στην επιφάνεια εργασίας η συντόµευση απ όπου µπορείτε να ανοίξετε την εφαρµογή. Με την εκκίνησή της εµφανίζεται το παρακάτω παράθυρο. Εικόνα 3.1 Εισαγωγικό Παράθυρο Στο δεξί µέρος του παραθύρου παρουσιάζονται κάποια παραδείγµατα λειτουργίας του ροµπότ που µπορείτε να παρακολουθήσετε για µία αρχική εξοικείωση µε τις ικανότητές του. Ο χώρος που ενδιαφέρει εµάς είναι το αριστερό παράθυρο. Από εκεί στη µπάρα start new program (επισηµαίνεται µε κόκκινο) µπορείτε να γράψετε το όνοµα ενός νέου προγράµµατος και πατώντας Go να ανοίξετε την επιφάνεια δηµιουργίας του προγράµµατός σας. Επίσης από το drop down menu open recent program (επισηµαίνεται µε πράσινο) µπορείτε να ανοίξετε κάποιο πρόγραµµα που έχετε ήδη ξεκινήσει ώστε να συνεχίσετε την εργασίας σας. Φυσικά, στο χώρο επεξεργασίας µπορείτε να εισέλθετε και από το menu File καθώς και να αλλάξετε όνοµα στα αρχεία σας ή να ανοίξετε ένα ήδη υπάρχων. Τέλος, στις επιλογές Getting Started και Software Overview γίνεται µια σύντοµη επίδειξη των δυνατοτήτων της εφαρµογής. Μετά την είσοδο σας στην πλατφόρµα θα εµφανιστεί το παρακάτω παράθυρο που είναι ο χώρος εγγραφής των προγραµµάτων σας. 30

31 Εικόνα 3.2 Κυρίως παράθυρο της πλατφόρµας Στην παλέτα που βρίσκεται αριστερά εµφανίζονται όλα τα blocks που θα χρησιµεύσουν για την ολοκλήρωση της εγγραφής ενός προγράµµατος. Στο επάνω µέρος βρίσκονται διάφορες συντοµεύσεις όπως άνοιγµα νέου αρχείου, αποθήκευση, αποκοπή, αναίρεση καθώς και τα εργαλεία pointer tool και pan tool (για την πλοήγηση µέσα στο χώρο επεξεργασίας του προγράµµατος) και το comment tool για την εισαγωγή σχολίων µέσα στο πρόγραµµα. Επίσης, στο κάτω µέρος του παραθύρου εµφανίζονται τα πάνελ για τις ρυθµίσεις των επιλεγµένων blocks. ίνονται, τέλος, στο κάτω αριστερά µέρος του παραθύρου, επιλογές βοήθειας και προεπισκόπησης. Εικόνα 3.3 Πλήκτρα φόρτωσης προγραµµάτων Τα παραπάνω πλήκτρα χρησιµοποιούνται για τον έλεγχο του ΝΧΤ εγκεφάλου καθώς και για τη φόρτωση και εκτέλεση των προγραµµάτων από τον ηλεκτρονικό υπολογιστή στο ροµπότ µέσω USB θύρας. 31

32 3.2 ΕΝΗΜΕΡΩΣΗ ΤΟΥ FIRMWARE ΤΟΥ NXT Το Firmware είναι ένα λογισµικό που είναι ενσωµατωµένο στο NXT. Χωρίς το firmware το NXT δεν θα ήταν σε θέση να ελέγχει τους κινητήρες, να λαµβάνει στοιχεία από αισθητήρες, ή γενικά να λειτουργεί. Περιστασιακά, η οµάδα LEGO δηµιουργεί νέες εκδόσεις του λογισµικού αυτού που προσθέτουν αυξηµένη λειτουργικότητα ή διορθώνουν σφάλµατα που βρέθηκαν στις προηγούµενες εκδόσεις. Η ενηµέρωση του firmware είναι εύκολο να γίνει. Πρώτον, επιλέξτε Update NXT Firmware... στο µενού Tools. Αυτό θα ανοίξει το Update NXT Firmware παράθυρο διαλόγου όπως φαίνεται παρακάτω. Εικόνα 3.4 Παράθυρο Update NXT Firmware Πρώτα βεβαιωθείτε ότι έχετε ενεργοποιήσει το NXT και το έχετε συνδέσει µε τον υπολογιστή. Αν είστε συνδεδεµένοι στο ιντερνέτ µπορείτε να ελέγξετε αν υπάρχουν νεότερες εκδόσεις του firmware πατώντας το πλήκτρο Check στην περιοχή Online Updates. Επιλέξτε την πιο πρόσφατη έκδοση του firmware και να βεβαιωθείτε για την τοποθεσία όπου θα σωθεί. Προτείνονται οι θέσεις: Για Macintosh: Macintosh HD:Applications:LEGO MINDSTORMS NXT:engine:Firmware Για τα Windows: C:\Program Files\LEGO Software\LEGO MINDSTORMS EDU NXT\engine\Firmware Στη συνέχεια µπορείτε είτε να επιλέξετε ένα firmware από αυτά που βρίσκονται στο σχετικό φάκελο, είτε να περιηγηθείτε στον υπολογιστή και να βρείτε firmware που έχετε αποθηκεύσει σε άλλες τοποθεσίες και τέλος να πατήσετε Download ώστε να γίνει η ανανέωση. Επανεγκατάσταση Firmware που συνοδεύει το προϊόν σας: Αν το ροµπότ σταµατήσει να λειτουργεί για κάποιο λόγο µπορεί να βοηθήσει η επανεγκατάσταση του firmware που το συνόδευε. 32

33 3.3 DATA WIRE-ΚΑΛΩ ΙΑ Ε ΟΜΕΝΩΝ Τα καλώδια δεδοµένων µεταφέρουν πληροφορίες ανάµεσα στα block ενός προγράµµατος. Πολλά block χρειάζονται καλώδια δεδοµένων για να λειτουργήσουν σωστά. Για παράδειγµα, αν θέλουµε να πάρουµε µία τυχαία τιµή από ένα Random Block, πρέπει να συνδέσουµε στη θύρα εξόδου του ένα καλώδιο που θα µεταφέρει τον αριθµό σε ένα άλλο block. Άνοιγµα θυρών δεδοµένων και δηµιουργία καλωδίων δεδοµένων.: Μπορείτε να δηµιουργήσετε ένα καλώδιο δεδοµένων τραβώντας το από τις θύρες εισόδου και εξόδου των blocks. Σχεδόν όλα τα Blocks διαθέτουν θύρες εισόδου και εξόδου και µπορούν να υποστηρίξουν αυτή τη δυνατότητα. Μπορείτε να ανοίξετε τις θύρες εισόδου και εξόδου των blocks κάνοντας ένα κλικ στα αριστερά της κάτω πλευράς τους, αφού πρώτα τα τοποθετήσετε στο παράθυρο δηµιουργίας του προγράµµατος. Εικόνα 3.5 Θύρες Εισόδου-Εξόδου Move Block Σηµείωση: Πολλές φορές µπορεί να µην ανοίξουν όλες οι θύρες ενός block. Με ένα δεύτερο κλικ στην ίδια περιοχή θα ανοίξουν και οι υπόλοιπες κρυµµένες θύρες. Μπορείτε επίσης να κλείσετε τις θύρες που δεν χρησιµοποιούνται για να εξασφαλίσετε χώρο στην περιοχή ανάπτυξης του προγράµµατος κάνοντας πάλι κλικ στο σηµείο που υποδεικνύεται και στην εικόνα. ηµιουργία νέου καλωδίου δεδοµένων: Ο κέρσορας του ποντικιού αλλάζει σχήµα όταν αιωρείται πάνω από τις θύρες των blocks ή όταν βρίσκεται δίπλα σε αυτές. Αν όταν αλλάξει το σχήµα του κέρσορα κάνετε αριστερό κλικ και σύρετε το ποντίκι έχοντας το πατηµένο, τότε θα αρχίσει να δηµιουργείται το καλώδιο, το οποίο µπορείτε να µεταφέρετε µέχρι τη θύρα ενός άλλου block. ιαγραφή καλωδίου δεδοµένων: Για να διαγράψετε ένα καλώδιο δεδοµένων που εκτείνεται από αριστερά προς τα δεξιά µεταξύ µίας θύρας εξόδου και µίας εισόδου, κάντε κλικ στη δεξιά θύρα εισόδου. Είσοδοι και Έξοδοι: Τα καλώδια δεδοµένων που µεταφέρουν πληροφορίες προς ένα block συνδέονται στις θύρες στην αριστερή πλευρά του block (θύρες εισόδου). Τα καλώδια δεδοµένων που µεταφέρουν πληροφορίες από ένα block συνδέονται στις θύρες στην δεξιά πλευρά του block (θύρες εξόδου). 33

34 Εικόνα 3.6 Καλώδια εδοµένων Α. Θύρα εισόδου Β. Θύρα εξόδου C. Καλώδιο αριθµητικών δεδοµένων (κίτρινο) D. Καλώδιο λογικών δεδοµένων (πράσινο) Ε. Καλώδιο δεδοµένων κειµένου (πορτοκαλί) F. Εσφαλµένο καλώδιο Τα καλώδια δεδοµένων µεταφέρουν συγκεκριµένους τύπους πληροφορίας: Κάθε καλώδιο δεδοµένων µεταφέρει συγκεκριµένο τύπο πληροφορίας ανάµεσα στα blocks. Για παράδειγµα, αν ένα καλώδιο ξεκινήσει από µία θύρα εξόδου λογικών τιµών µπορεί να συνδεθεί µόνο µε θύρες εισόδου λογικών τιµών άλλων blocks. Χρώµατα καλωδίων δεδοµένων: Τα καλώδια δεδοµένων προσδιορίζονται από συγκεκριµένα χρώµατα: Τα καλώδια που µεταφέρουν αριθµητικά δεδοµένα είναι κίτρινα. Τα καλώδια που µεταφέρουν λογικές τιµές (true/false) είναι πράσινα. Τα καλώδια που µεταφέρουν κείµενο είναι πορτοκαλί. Εσφαλµένα καλώδια δεδοµένων: Αν προσπαθήσετε να συνδέσετε ένα καλώδιο δεδοµένων µε λάθος τύπου θύρα, το καλώδιο θα θεωρηθεί εσφαλµένο και θα γίνει γκρι χρώµα. Αν υπάρχουν εσφαλµένα καλώδια δεν θα µπορείτε να εκτελέσετε το πρόγραµµα σας. Αν κάνετε κλικ σε ένα εσφαλµένο καλώδιο µπορείτε να δείτε που βρίσκεται το λάθος σε ένα βοηθητικό παράθυρο στο κάτω αριστερά µέρος του παράθυρου της εφαρµογής. Εικόνα 3.7 Βοήθεια για εσφαλµένα καλώδια. 34

35 3.4 ΠΑΛΕΤΑ Common. Παρακάτω ακολουθεί αναλυτική επεξήγηση των Blocks της εφαρµογής για τη προγραµµάτων καθώς και τρόποι που µπορούν να χρησιµοποιηθούν µέσα σε αυτά. εγγραφή των Αρχικά υπάρχει η παλέτα των Common Blocks, των blocks δηλαδή που χρησιµοποιούνται συχνότερα κατά την εγγραφή των προγραµµάτων. Αυτά είναι: Move block Με το Block κίνησης (Move block) µπορείτε να µετακινήσετε το ροµπότ µπροστά ή πίσω ή ακόµα και να το περιστρέψετε, προσδιορίζοντας κάθε φορά την διάρκεια της κίνησης. Εικόνα 3.8 Move block Τα γράµµατα στην αριστερή κορυφή του block (1) προσδιορίζουν ποιες από τις θύρες εξόδου ελέγχονται από το συγκεκριµένο block. Το εικονίδιο 2 δείχνει την κατεύθυνση που θα κινηθεί το ροµπότ. Το εικονίδιο 3 δείχνει την ταχύτητα του ροµπότ. Τέλος, το εικονίδιο 4 αναφέρεται στο είδος της διάρκειας της κίνησης, Επιλέγοντας το move block στο κάτω µέρος του παραθύρου της πλατφόρµας εµφανίζεται το παρακάτω πεδίο. Εικόνα 3.9 Πεδίο ρυθµίσεων Move block Στην περιοχή Port (1) µπορείτε να επιλέξετε ποιοι κινητήρες θα ελέγχονται από το συγκεκριµένο block. Στο Direction(2) επιλέγετε αν οι κινητήρες θα κινηθούν µπροστά πίσω ή δεν θα κινηθούν καθόλου. Στη συνέχεια, στην περιοχή Steering(3) έχετε τη δυνατότητα να επιλέξετε µία κατεύθυνση προς την οποία θα στρίψει το ροµπότ. Στην περιοχή Power(4) ρυθµίζετε την ταχύτητα που επιθυµείτε να κινηθούν οι κινητήρες (0-100%). 35

36 Στην περιοχή Duration(5) µπορείτε να επιλέξετε τη διάρκεια της κίνησης καθώς και το µέγεθος που θα µετρήσει τη διάρκεια αυτή. Στο pull-down µενού δίνονται οι επιλογές Seconds, Rotations, Degrees καθώς και η επιλογή Unlimited για απεριόριστη κίνηση. Ακολουθεί η περιοχή του Next Action(6) όπου δίνεται η επιλογή είτε το ροµπότ να φρενάρει είτε να συνεχίσει στην επόµενη κίνηση. Η επιλογή του brake µπορεί να βοηθήσει ώστε το ροµπότ να ακινητοποιηθεί πλήρως σε κάποια επίπεδο µε κλίση. Παρ` όλα αυτά µε το φρενάρισµα εξασθενούν γρηγορότερα οι µπαταριές του. Τέλος, στο χώρο Move (7), υπολογίζεται πόσες στροφές έχουν κάνει οι κινητήρες σε κάθε θύρα εξόδου. Πατώντας το πλήκτρο Reset οι τιµές επιστρέφουν στο µηδέν για ανανέωση των µετρήσεων. Παράδειγµα της λειτουργίας του Move Block Έστω ότι θέλουµε το ροµπότ µας να πραγµατοποιήσει µία ορισµένη κίνηση. Για παράδειγµα να προχωρήσει µπροστά για 3 δευτερόλεπτα, στη συνέχεια να στρίψει δεξιά, να προχωρήσει άλλα τρία δευτερόλεπτα, να στρίψει αριστερά αλλά σε µικρότερο βαθµό από την προηγούµενη στροφή και τέλος να προχωρήσει άλλα δύο δευτερόλεπτα. Για την κάθε κίνηση πρέπει να χρησιµοποιήσουµε ένα ξεχωριστό move block. Το πρόγραµµα θα έχει την παραπάνω µορφή. Στο πάνελ κάθε block θα πρέπει να ορίσουµε σωστά τις παραµέτρους της κάθε κίνησης. Αρχικά, θα πρέπει να επιλέξουµε τις θύρες που είναι συνδεδεµένοι οι κινητήρες µας. Στη συνέχεια ορίζουµε την κατεύθυνση της κίνησης, την ταχύτητά της και τέλος τη διάρκειά της. Αυτά θα πρέπει να προσδιοριστούν σε κάθε block ξεχωριστά. Τελειώνοντας, ελέγχουµε την κίνηση του ροµπότ και ανάλογα πραγµατοποιούµε αλλαγές σε όποια παράµετρο χρειάζεται Record/Play Block Με το Βlock Record/Play µπορείτε να καταγράψετε κάποιες κινήσεις του ροµπότ και στη συνέχεια αφού τις αποθηκεύσετε να τις αναπαράγεται. Στην ουσία αποµνηµονεύεται πόσες φορές έχει κινηθεί ο κάθε κινητήρας και κατά την αναπαραγωγή επαναλαµβάνεται ο αριθµός των κινήσεων. Εικόνα 3.10 Record/Play block 36

37 Το σχήµα(1) στην κάτω αριστερή γωνία του block δείχνει αν εκτελείται η ενέργεια της καταγραφής ή της αναπαραγωγής. Εάν θέλετε να καταγράψετε µια κίνηση, στο panel που θα εµφανιστεί µόλις εισαχθεί το Record/Play Block στο πρόγραµµα, τσεκάρετε την επιλογή Record. Εικόνα 3.11 Πεδίο ρυθµίσεων Record block Στη συνέχεια στη περιοχή Name(1) πληκτρολογήστε το όνοµα που θέλετε να δώσετε στην κίνηση που θα καταγράψετε. Στην περιοχή Recording(2) επιλέγετε τους κινητήρες των οποίων την κίνηση θα καταγράψετε. Τέλος, στο Time(3) καθορίζετε τη διάρκεια της καταγραφής. Μόλις ολοκληρώσετε αυτή τη διαδικασία, κάνετε download το block και όταν το τρέξετε εκτελέστε τις κινήσεις που επιθυµείτε στο ροµπότ. Οι κινήσεις αυτές καταγράφονται και έτσι όταν να επιλέξετε την αναπαραγωγή της συγκεκριµένης ενέργειας το ροµπότ θα εκτελέσει σχεδόν τις ίδιες κινήσεις χωρίς την βοήθεια σας. Για να αναπαράγετε µία από τις εγγραφές σας, στο panel που θα εµφανιστεί µόλις εισαχθεί το Record/Play Block στο πρόγραµµα, τσεκάρετε την επιλογή Play. Εικόνα 3.12 Πεδίο ρυθµίσεων Play block Από το menu Program(1) επιλέξτε την εγγραφή που επιθυµείτε να εκτελεσθεί και αφού κάνετε download το ροµπότ θα κάνει την κίνηση που καταγράψατε χωρίς τη δική σας βοήθεια. Παράδειγµα της λειτουργίας του Record/Play Block Έστω ότι επιθυµούµε το ροµπότ να εκτελέσει µία περιστροφή καθώς προχωρά, αλλά την περιστροφή αυτή, να την έχουµε καταγράψει ώστε να καθορίσουµε ακριβώς την κίνηση που επιθυµούµε να πραγµατοποιήσει. Σε αυτή την περίπτωση κάνουµε χρήση του Record/Play Block. Το πρόγραµµα θα έχει την παρακάτω µορφή: 37

38 Στο πρώτο Record/Play Block καταγράφουµε την περιστροφή που επιθυµούµε, ορίζοντας στο πάνελ του τις κατάλληλες συνθήκες, δηλαδή αρχικά επιλέγουµε το Record, στη συνέχεια δίνουµε ένα όνοµα στην κίνηση που θα καταγράψουµε, ορίζουµε ποιοι κινητήρες θα πραγµατοποιήσουν αυτή την κίνηση και τέλος προσδιορίζουµε τον χρόνο καταγραφής. Στο σηµείο που θέλουµε να πραγµατοποιηθεί η κίνηση που έχουµε καταγράψει τοποθετούµε άλλο ένα Record/Play block, επιλέγουµε στο πάνελ του το Play και δίνουµε το όνοµα της κίνησης που έχουµε καταγράψει από πριν Sound Block Μπορείτε να χρησιµοποιήσετε το Sound block για να αναπαράγετε κάποιον ήχο που προϋπάρχει ή ήχους που δηµιουργείτε εσείς. Εικόνα 3.13 Sound block Το πρώτο εικονίδιο(1) του block αυτού δείχνει αν πρόκειται να αναπαραχθεί έτοιµος ήχος ή κάποιος τόνος. Στη θέση του δεύτερου εικονιδίου(2) φαίνεται αν το block θα ξεκινήσει ή θα σταµατήσει να αναπαράγει ήχο Στη θέση του τρίτου(3) δηλώνεται η ένταση του ήχου. Εάν θέλετε να αναπαράγεται έναν έτοιµο ήχο, στο panel που θα εµφανιστεί µόλις εισαχθεί το Sound Block στο πρόγραµµα, τσεκάρετε την επιλογή Sound File(1). Εικόνα 3.14 Πεδίο ρυθµίσεων Sound block(για έτοιµους ήχους) 38

39 Στην περιοχή Control(2) µπορείτε να επιλέξετε αν το block θα ξεκινήσει ή θα σταµατήσει να αναπαράγει ήχο. Στην περιοχή Volume(3) καθορίζεται η ένταση του ήχου. Στο Function(4), εάν είναι τσεκαρισµένο το Repeat ο ήχος που έχει επιλεχθεί θα επαναλαµβάνεται έως το τέλος του προγράµµατος. Στη συνέχεια, από το µενού File(5) µπορείτε να επιλέξετε τον ήχο που θέλετε να αναπαραχθεί, από ένα µενού µε όλους τους ήχους που υπάρχουν αποθηκευµένοι στο φάκελο των ήχων του ροµπότ. Τέλος, αν στο Wait(6) η επιλογή Wait for Completion είναι τσεκαρισµένη το ροµπότ θα περιµένει την ολοκλήρωση του ήχου πριν προχωρήσει στην εκτέλεση του επόµενου block. ιαφορετικά ο ήχος θα αναπαράγεται ταυτόχρονα µε την εκτέλεση του block που ακολουθεί. Εάν αντίθετα θέλετε να αναπαραχθεί ένας τόνος ή µία σειρά τόνων της επιλογής σας δεν έχετε παρά να τσεκάρετε την επιλογή Tone(1). Για να δηµιουργήσετε µία σειρά τόνων, δηλαδή µία δική σας µελωδία, τοποθετήστε συνεχόµενα block ήχου το ένα µετά το άλλο µε κάθε block να παίζει έναν διαφορετικό τόνο. Εικόνα 3.15 Πεδίο ρυθµίσεων Sound block(για τόνους) Εδώ το µόνο που αλλάζει είναι η ιδιότητα Note(4). Στο σηµείο αυτό εµφανιζόταν οι ήδη υπάρχοντες ήχοι όταν είχαµε επιλέξει στο πεδίο Action(1) το Sound File. Τώρα όµως εµφανίζεται ένα πιάνο όπου σας επιτρέπει να επιλέξετε τον τόνο που επιθυµείτε καθώς και την διάρκεια αυτού. Παράδειγµα της λειτουργίας του Sound Block Έστω ότι επιθυµούµε το ροµπότ να εκτελεί κάποιες κινήσεις, αλλά να ανακοινώνει φωνητικά την κίνηση που εκτελείτε καθώς και να δίνει µία επιβράβευση µετά από κάθε κίνηση και πάλι φωνητικά. Το πρόγραµµα θα είχε την µορφή: Πριν και µετά από κάθε κίνηση των Move Block, τοποθετούµε ένα Sound Block. Ορίζουµε τα Sound blocks πριν την κάθε κίνηση ώστε να αναφέρουν την κίνηση που πραγµατοποιεί το επόµενο move block από τη φάκελο ήχων. Για παράδειγµα πριν από µία ευθεία κίνηση το Sound block θα αναφέρει τη λέξη 39

40 Forward. Στα Sound blocks που ακολουθούν το κάθε move block ορίζουµε να δίνουν µία επιβράβευση όπως Good Job Display Block Με το Display Block µπορείτε να εµφανίσετε στην οθόνη του NXT εγκεφάλου µία εικόνα, ένα κείµενο ή ακόµα και κάποιο σχήµα. Με την παράθεση πολλών blocks µπορείτε να δηµιουργήσετε µία πιο σύνθετη εικόνα. Εικόνα 3.16 Display Block Το εικονίδιο (1) στο κάτω δεξιά µέρος του Block δείχνει αν µε το συγκεκριµένο Block πρόκειται να εµφανιστεί εικόνα, κείµενο ή σχήµα. Με την εισαγωγή του Display Block στο πάνελ εγγραφής του προγράµµατος σας εµφανίζεται το παρακάτω παράθυρο. Εικόνα 3.17 Πεδίο ρυθµίσεων Display Block(για εικόνες) Στην περιοχή Action(1) επιλέγετε αν θέλετε να εµφανίσετε εικόνα, κείµενο ή σχήµα. ίνεται επίσης και η επιλογή Reset σε περίπτωση που θέλετε να επανέλθετε στην default οθόνη του NXT. Στην περιοχή Display(2) έχοντας τσεκαρισµένο το Clear καθαρίζονται όλες οι προηγούµενες εµφανίσεις της οθόνης πριν εµφανιστεί η νέα επιλογή σας. Εάν έχετε επιλέξει στο µενού Action(1) την επιλογή Image εµφανίζεται το µενού File(3) απ` όπου µπορείτε να επιλέξετε κάποια από τις υπάρχουσες εικόνες. Επίσης εµφανίζεται το παράθυρο Position(4) που σας δείχνει τι θα προβληθεί στην οθόνη και σε ποια θέση. Με το ποντίκι µπορείτε να µετακινήσετε την εικόνα ώστε να εµφανιστεί στη θέση που επιθυµείτε. Εάν στο µενού Action(1) επιλέξετε Text τότε το παράθυρο µετατρέπεται στο παρακάτω. 40

41 Εικόνα 3.18 Πεδίο ρυθµίσεων Display Block(για κείµενο) Εδώ οι επιλογές Display και Position παραµένουν ίδιες. Εµφανίζεται όµως µία νέα περιοχή, η Text(5) όπου µπορείτε να πληκτρολογήσετε το κείµενο που θέλετε να εµφανίζεται στην οθόνη. ίνεται επιπλέον η δυνατότητα επιλογής της γραµµής εµφάνισης του κειµένου στην περιοχή Position. Τέλος, εάν στο µενού Action(1) επιλέξετε το Drawing το παράθυρο που θα εµφανιστεί θα είναι το παρακάτω. Εικόνα 3.19 Πεδίο ρυθµίσεων Display Block(για σχέδια) Εδώ στο µενού Type(7) µπορείτε να επιλέξετε αν θέλετε να εµφανιστεί σηµείο (point), γραµµή(line)ή κύκλος(circle) και αντίστοιχα να το µορφοποιήσετε ή να το µετακινήσετε στο παράθυρο(8) στη θέση Position. Παράδειγµα της λειτουργίας του Display Block Έστω ότι επιθυµούµε το ροµπότ να εκτελεί κάποιες κινήσεις, αλλά να ανακοινώνει φωνητικά την κίνηση που εκτελείται και να δίνει µία επιβράβευση µετά από κάθε κίνηση τόσο φωνητικά, όσο και µε µία εικόνα στην οθόνη του NXT. Το πρόγραµµα θα έχει τη µορφή: Στον κώδικα του προηγούµενου παραδείγµατος παραθέτουµε και ορισµένα Display Blocks στα οποία επιλέγουµε τις κατάλληλες εικόνες για την επιβράβευση µετά την ολοκλήρωση του κάθε move block. 41

42 3.4.5 Wait Block To block αυτό επιτρέπει στο ροµπότ να διαισθανθεί/ελέγξει µία συγκεκριµένη συνθήκη του περιβάλλοντος του πριν συνεχίσει τις ενέργειές του. Επιτρέπει να ορίσετε κάποιες τιµές σε µεταβλητές των αισθητήρων τις οποίες το ροµπότ θα ελέγχει και ανάλογα θα συνεχίζει ή θα σταµατά την εκτέλεση του προγράµµατος µε βάση τις προϋποθέσεις που έχετε θέσει. Εικόνα 3.20 Wait Block Ο αριθµός στο επάνω δεξιά µέρος του block δείχνει την θύρα εισόδου που ελέγχει ο συγκεκριµένος αισθητήρας. Στο πάνελ του block δίνεται δυνατότητα αλλαγής της θύρας αυτής. Αν έχετε επιλέξει να περιµένετε τιµές από έναν αισθητήρα φωτός, ήχου ή υπερύθρων, το εικονίδιο 2 υποδεικνύει τη συνθήκη ελέγχου. Όσες περισσότερες χρωµατιστές µπάρες φαίνονται τόσο υψηλότερη έχει ορισθεί να είναι η τιµή ελέγχου. Αν έχετε επιλέξει να περιµένετε έναν αισθητήρα αφής, το εικονίδιο δείχνει την κατάσταση του αισθητήρα(bumped, pressed, ή released) που θα επιτρέψει στο πρόγραµµα να συνεχιστεί. Οι αναµονές στις συνήθεις περιπτώσεις µπορούν να ορισθούν µε βάση το χρόνο ή την κατάσταση ενός αισθητήρα αφής, φωτός, ήχου ή υπερήχων. Επιλέγοντας το wait block στο κάτω µέρος του παραθύρου της πλατφόρµας εµφανίζεται το πάνελ του block στο οποίο µπορείτε να επιλέξετε ποια συνθήκη θα ελέγξετε. ΧΡΟΝΟΣ Εικόνα 3.21 Wait Block(Time) Για να ορίσετε αναµονή µε βάση το χρόνο επιλέγετε στο µενού Control το Time. Εικόνα 3.22 Πεδίο ρυθµίσεων Wait Block(Time) 42

43 Στη µπάρα Until (1) εισάγετε πόσα δευτερόλεπτα θα θέλατε να περιµένει το ροµπότ πριν εκτελέσει το υπόλοιπο πρόγραµµα. ΑΙΣΘΗΤΗΡΑΣ ΑΦΗΣ Εικόνα 3.23 Wait Block(Touch Sensor) Για να ορίσετε αναµονή µε βάση την είσοδο ενός αισθητήρα αφής επιλέγετε στο µενού Control το Sensor και ακριβώς κάτω από αυτό, στο µενού Sensor το Touch Sensor. Αν κάνετε αυτή την επιλογή το πρόγραµµα θα περιµένει µέχρι ο αισθητήρας στη θύρα που θα ορίσετε να είναι bumped, pressed, ή released (το επιλέγετε εσείς) πριν συνεχίσει την εκτέλεση του επόµενου block του. Εικόνα 3.24 Πεδίο ρυθµίσεων Wait Block(Touch Sensor) Στην περιοχή Port(1) επιλέγετε τη θύρα που είναι συνδεδεµένος ο αισθητήρας αφής που πρέπει να ελεγχθεί. Στην περιοχή Action(2) ορίζετε αν το πρόγραµµα θα συνεχιστεί όταν ο αισθητήρας θα είναι στην κατάσταση bumped, pressed ή released. -Επιλέξτε bumped αν θέλετε να συνεχιστεί το πρόγραµµα µετά από ένα πάτηµα και επαναφορά του αισθητήρα. -Επιλέξτε pressed αν θέλετε να συνεχιστεί το πρόγραµµα µετά από ένα πάτηµα του αισθητήρα πριν την επαναφορά. -Επιλέξτε released αν θέλετε να συνεχιστεί το πρόγραµµα µετά από την επαναφορά του αισθητήρα. Στο πεδίο(3) φαίνεται η κατάσταση του αισθητήρα που έχετε επιλέξει. Αν είναι ενεργός εµφανίζεται ο αριθµός 1,αν όχι το 0. 43

44 ΑΙΣΘΗΤΗΡΑΣ ΦΩΤΟΣ Εικόνα 3.25 Wait Block(Light Sensor) Για να ορίσετε αναµονή µε βάση την είσοδο ενός αισθητήρα φωτός επιλέγετε στο µενού Control το Sensor και ακριβώς κάτω από αυτό, στο µενού Sensor το Light Sensor. Με αυτή την επιλογή το πρόγραµµα θα περιµένει µέχρι ο αισθητήρας φωτός στη θύρα που θα ορίσετε να δεχτεί µία συγκεκριµένη ποσότητα φωτός για τη συνέχιση των ενεργειών του. Εικόνα 3.26 Πεδίο ρυθµίσεων Wait Block(Light Sensor) Στην περιοχή Port(1) επιλέγετε τη θύρα που είναι συνδεδεµένος ο αισθητήρας φωτός που πρέπει να ελεγχθεί. Στην περιοχή Until(2) επιλέγετε την ποσότητα του φωτός που τίθεται ως όριο, πάνω ή κάτω από το οποίο θα συνεχιστεί η εκτέλεση του προγράµµατος. Στην περιοχή Function(3), αν επιλέξετε το Generate Light, ο αισθητήρας θα ενεργοποιήσει τη δική του πηγή φωτός και θα προσπαθεί να εντοπίσει αν το δικό του φως αντανακλάται πίσω σε αυτόν. Τέλος, στο πεδίο ανάδρασης (4) εµφανίζεται η τρέχουσα τιµή φωτός που λαµβάνει ο αισθητήρας. ΑΙΣΘΗΤΗΡΑΣ ΗΧΟΥ Εικόνα 3.27 Wait Block(Sound Sensor) Για να ορίσετε αναµονή µε βάση την είσοδο ενός αισθητήρα ήχου επιλέγετε στο µενού Control το Sensor και ακριβώς κάτω από αυτό, στο µενού Sensor το Sound Sensor. Με την επιλογή αυτή το πρόγραµµα θα περιµένει την ενεργοποίηση του αισθητήρα από έναν ήχο ορισµένης έντασης που θα έχετε ορίσει εσείς. 44

45 Εικόνα 3.28 Πεδίο ρυθµίσεων Wait Block(Sound Sensor) Στην περιοχή Port(1) επιλέγετε τη θύρα που είναι συνδεδεµένος ο αισθητήρας ήχου που πρέπει να ελεγχθεί. Στην περιοχή Until(2) επιλέγετε την ένταση του ήχου πάνω ή κάτω από την οποία θα ενεργοποιείται ο αισθητήρας και εποµένως θα συνεχίζεται και η εκτέλεση του επόµενου block του προγράµµατος. Στο πεδίο ανάδρασης (3) εµφανίζεται η τρέχουσα ένταση του ήχου που λαµβάνει ο αισθητήρας. ΑΙΣΘΗΤΗΡΑΣ ΥΠΕΡΗΧΩΝ Εικόνα 3.29 Wait Block(Ultrasonic Sensor) Για να ορίσετε αναµονή µε βάση την είσοδο ενός αισθητήρα υπερήχων επιλέγετε στο µενού Control το Sensor και ακριβώς κάτω από αυτό, στο µενού Sensor το Ultrasonic Sensor. Με την επιλογή αυτής της αναµονής το πρόγραµµα περιµένει να ενεργοποιηθεί ο αισθητήρας υπερήχων από ένα αντικείµενο σε ορισµένη απόσταση. Εικόνα 3.30 Πεδίο ρυθµίσεων Wait Block (Ultrasonic Sensor) Στην περιοχή Port(1) επιλέγετε τη θύρα που είναι συνδεδεµένος ο αισθητήρας υπερήχου που πρέπει να ελεγχθεί. Στην περιοχή Until(2) επιλέγετε την απόσταση του αντικειµένου πάνω ή κάτω από την οποία θα µπορεί ο αισθητήρας να εντοπίσει το αντικείµενο και να ενεργοποιηθεί. Στο µενού Show(3) επιλέγετε αν η απόσταση θέλετε να µετρηθεί σε εκατοστά ή ίντσες. Στο πεδίο ανάδρασης (4) εµφανίζεται η τρέχουσα απόσταση του αντικειµένου που εντοπίζει ο αισθητήρας. 45

46 Παράδειγµα της λειτουργίας µε Block Αναµονής Θέλουµε να δηµιουργήσουµε ένα κοµµάτι κώδικα όπου το ροµπότ µας θα εκτελεί µία κίνηση, αλλά αν κάτι το εµποδίσει, όπως ένας τοίχος να αποφεύγει το εµπόδιο αυτό. Εδώ θα πρέπει να χρησιµοποιήσουµε ένα Wait Block και έστω ότι επιθυµούµε να χρησιµοποιήσουµε τον αισθητήρα αφής για τον εντοπισµό του εµποδίου. Το εµπόδιο δηλαδή θα πιέζει το κουπί του αισθητήρα αφής καθώς το ροµπότ θα κατευθύνεται προς αυτό, το ροµπότ θα καταλαβαίνει έτσι την ύπαρξη του εµποδίου και θα αλλάζει κατεύθυνση. Το πρόγραµµα θα έχει την παρακάτω µορφή: Καθώς εκτελείται µία κίνηση, εντοπίζεται εµπόδιο από τον αισθητήρα, το ροµπότ εκτελεί οπισθοχώρηση και στρίβει για να αποφύγει το εµπόδιο. Στο πάνελ του Wait Block επιλέγουµε το είδος του αισθητήρα που θέλουµε να χρησιµοποιήσουµε και ορίζουµε σε ποια θύρα είναι αυτός συνδεδεµένος Loop Block To Loop block χρησιµοποιείται για να επαναλάβετε τµήµατα κώδικα. Μπορείτε να επιλέξετε τη συνθήκη που θα τερµατίζει το βρόγχο ανάλογα µε το χρόνο, τον αριθµό επαναλήψεων, µία λογική τιµή ή µε βάση τις τιµές εισόδου από έναν αισθητήρα. Επίσης µπορείτε να ορίσετε να επαναλαµβάνεται ο βρόγχος για πάντα. Εικόνα 3.31 Loop Block Αν έχετε ορίσει να επαναλαµβάνεται για πάντα ο βρόγχος εµφανίζεται στο εικονίδιο του block επανάληψης το σύµβολο του άπειρου(1). Αντίστοιχα αν ορίσετε να επαναλαµβάνεται ο βρόχος για έναν ορισµένο αριθµό επαναλήψεων εµφανίζεται στη θέση του άπειρου το αντίστοιχο εικονίδιο(2). 46

47 Ενώ αν επιλέξετε να γίνεται η επανάληψη µε βάση την είσοδο κάποιου αισθητήρα εµφανίζεται το είδος του αισθητήρα που έχετε διαλέξει(3). Επιλέγοντας το Loop block εµφανίζεται η περιοχή ρυθµίσεών του στο κάτω µέρος της οθόνης από όπου µπορείτε να επιλέξετε τη συνθήκη που θα γίνονται οι επαναλήψεις. ΓΙΑ ΠΑΝΤΑ Αν στο µενού Control επιλέξετε το Forever το τµήµα του κώδικα που βρίσκεται µέσα στο block επανάληψης θα επαναλαµβάνεται για πάντα χωρίς διακοπές. Εικόνα 3.32 Πεδίο ρυθµίσεων Loop Block Αν τσεκάρετε την επιλογή Counter(1) στο Show θα µετρώνται οι επαναλήψεις του βρόγχου και θα µπορείτε να χρησιµοποιήσετε αυτόν τον αριθµό σε άλλα σηµεία του προγράµµατος. Για παράδειγµα καθώς αυξάνεται ο αριθµός των επαναλήψεων να αυξάνεται και η ταχύτητα ενός κινητήρα. ΑΙΣΘΗΤΗΡΕΣ Για να ελέγχετε τον αριθµό επαναλήψεων µε βάση κάποιον αισθητήρα στο µενού Control επιλέγετε το Sensor. Στη συνέχεια στο µενού Sensor επιλέγετε το είδος του αισθητήρα και κάνετε τις επιθυµητές ρυθµίσεις στα χαρακτηριστικά του. Για παράδειγµα το πάνελ για τον αισθητήρα αφής είναι το παρακάτω: Εικόνα 3.33 Πεδίο ρυθνµίσεων Loop Block(Sensor) Οι ρυθµίσεις στην περίπτωση των αισθητήρων γίνεται όµοια µε τις ρυθµίσεις στο block αναµονής. ΧΡΟΝΟΣ Αν θέλετε ο βρόγχος να επαναλαµβάνεται για ορισµένο χρονικό διάστηµα, επιλέγετε στο µενού Control το Time. 47

48 Εικόνα 3.34 Πεδίο ρυθµίσεων Loop Block(Time) Στο πλαίσιο Until Seconds(1) εισάγετε τον αριθµό των δευτερολέπτων που θέλετε να τρέξει ο βρόγχος. Αν τσεκάρετε το Show Counter ο αριθµός επαναλήψεων του βρόγχου θα µετράται ώστε να χρησιµοποιηθεί αν το επιθυµείτε σε άλλα σηµεία του προγράµµατος. Παράδειγµα της λειτουργίας µε Loop Block Έστω ότι θέλουµε το ροµπότ µας να εκτελέσει µία τετραγωνική κίνηση χρησιµοποιώντας όµως µόνο δύο move blocks. Αυτό µπορεί να γίνει αν επαναλάβουµε τα move blocks που κάνει για την κίνηση µίας πλευράς και περιστροφής για 90 µοίρες, 4 φορές, χρησιµοποιώντας ένα Loop block. Κάνουµε τις απαραίτητες ρυθµίσεις στα δύο move blocks για την κίνηση και περιστροφή και τα τοποθετούµε µέσα σε ένα loop block το οποίο ορίζουµε να πραγµατοποιήσει 4 επαναλήψεις Switch Block Μπορείτε να χρησιµοποιήσετε το Switch Block για να επιλέξετε να εκτελεστεί ένα από δύο τµήµατα κώδικα. Για παράδειγµα, το ροµπότ µπορεί να εκτελέσει ένα τµήµα κώδικα αν ένας αισθητήρας αφής είναι πατηµένος ή κάποιο άλλο εάν δεν είναι. 48

49 Εικόνα 3.35 Switch Block µε αισθητήρα Όπως φαίνεται και παραπάνω στο εικονίδιο(1) που βρίσκεται στην αρχή του loop block, φαίνεται η συνθήκη που ελέγχεται ώστε να ακολουθήσει το πρόγραµµα ένα από τα δύο τµήµατα κώδικα. Σε αυτή την περίπτωση η τρέχουσα κατάσταση του αισθητήρα αφής είναι αυτή που θα επηρεάσει την επιλογή του προγράµµατος. Το πρώτο τµήµα κώδικα(2) θα τρέξει αν το κουµπί του αισθητήρα αφής είναι πατηµένο. Το δεύτερο τµήµα κώδικα(3) θα τρέξει αν τι κουµπί του αισθητήρα αφής δεν είναι πατηµένο. Εικόνα 3.36 Switch Block µε λογική τιµή Αν επιλέξετε να ελέγξετε το Switch block χρησιµοποιώντας την συνθήκη Value, θα εµφανιστεί ένα σηµείο εισόδου στην αρχή του block, το οποίο θα πρέπει να συνδέσετε µε ένα καλώδιο δεδοµένων(δυνατότητα που παρέχεται για την ανταλλαγή δεδοµένων ανάµεσα στα blocks του προγράµµατος), που θα µεταφέρει µία λογική τιµή ή έναν αριθµό από ένα άλλο block ώστε να γίνει ο έλεγχος. ΤΙΜΗ Επιλέγοντας το Switch block στο κάτω µέρος της οθόνης εµφανίζεται όπως σε κάθε block το πάνελ που επιτρέπει να κάνετε τις διάφορες ρυθµίσεις, δηλαδή η περιοχή ρυθµίσεών του. Όταν στο µενού Control βάλετε την τιµή Value το block µπορεί να δεχτεί είτε λογικές είτε αριθµητικές τιµές εισόδου µέσω την πύλης εισόδου που εµφανίζεται στην αρχή του. Το block θα εντοπίσει το είδος των δεδοµένων εισόδου (πχ λογική τιµή ή αριθµός) και θα προσφέρει διαφορετικές επιλογές για το κάθε είδος. 49

50 Αν εισάγετε λογική τιµή (true/false) το πρόγραµµα θα τρέξει τον επάνω κόµβο εντολών αν πρόκειται για αληθή τιµή ενώ αν πρόκειται για ψευδή τιµή θα τρέξει τον κάτω κόµβο εντολών. Αν εισάγετε έναν αριθµό ή ένα κείµενο, µπορείτε να προσδιορίσετε την ακριβή είσοδο που θα οδηγήσει το πρόγραµµα σε κάθε επιλογή. Επιπλέον, αν το Display Flat View δεν έχει επιλεχθεί µπορείτε να εισάγετε περισσότερες από δύο εναλλακτικές επιλογές και εποµένως και περισσότερα από δύο εναλλακτικά κοµµάτια κώδικα. Εικόνα 3.37 Πεδίο ρυθµίσεων Switch Block(Logic Value) Στην περιοχή Control(1) εµφανίζεται ο τύπος των δεδοµένων εισόδου που εντοπίζει το block. Απεπιλέγοντας το Display Flat View(2), η µορφή παρουσίασης του block θα αλλάξει/συµπτυχθεί και θα δίνεται πλέον η δυνατότητα εισαγωγής περισσότερων από δύο επιλογών. Το block θα χρησιµοποιεί εµφάνιση µε ετικέτες και επιλέγοντας κάθε µία από αυτές θα µπορείτε να βλέπετε τα τµήµατα του κώδικα που αντιστοιχούν σε κάθε συνθήκη. Στον πίνακα Conditions(3) κάθε γραµµή παρουσιάζει µία επιλογή. Όταν το Display Flat View δεν είναι τσεκαρισµένο, η πρώτη επιλογή, δηλαδή ο αριθµός 1,αντιπροσωπεύει τη συνθήκη που θα προκαλέσει την εκτέλεση του πρώτου τµήµατος κώδικα. Η δεύτερη επιλογή, δηλαδή ο αριθµός 2, αντιπροσωπεύει τη συνθήκη που θα προκαλέσει την εκτέλεση του δεύτερου τµήµατος κώδικα. Αν τα δεδοµένα εισόδου είναι αριθµός ή κείµενο και το Display Flat View δεν είναι τσεκαρισµένο µπορείτε να προσθέσετε επιπλέον επιλογές στον πίνακα του Switch block, όπως για παράδειγµα στην παρακάτω εικόνα. Εικόνα 3.38 Πεδίο ρυθµίσεων Switch Block(Number Value) Το πεδίο(4) παίζει δύο ρόλους. Όταν το block έχει ως είσοδο λογικές τιµές χωρίζει ποιες εντολές θα εκτελεστούν σε µία αληθή είσοδο και ποιες σε µία ψευδή. Όταν στο block εισάγονται αριθµοί µπορείτε να χρησιµοποιήσετε το πεδίο αυτό για να εισάγετε τον αριθµό που θα ενεργοποιήσει µία συγκεκριµένη επιλογή. 50

51 Τα κουµπιά +,- (5) επιτρέπουν να εισάγετε ή να διαγράψετε εναλλακτικές επιλογές. Ενεργοποιούνται µόνο όταν το Flat View δεν έχει επιλεχθεί και τα δεδοµένα εισόδου του µπλοκ είναι αριθµοί ή κείµενο. Το κουµπί * (6), ορίζει µία προεπιλεγµένη επιλογή. Όταν το Switch block δέχεται αριθµούς ή κείµενο και κάποια είσοδος δεν αντιστοιχεί σε αυτές που έχουν ορισθεί, το πρόγραµµα θα τρέξει το τµήµα εκείνο που έχει ορισθεί ως default. ΑΙΣΘΗΤΗΡΕΣ Αν θέλετε η επιλογή του τµήµατος του κώδικα που θα εκτελεστεί να ορίζεται από την είσοδο κάποιου αισθητήρα τότε δεν έχετε παρά να επιλέξετε στο πάνελ ρυθµίσεων του Switch Block στο µενού Control το Sensor. Στη συνέχεια στο µενού Sensor µπορείτε να διαλέξετε τον αισθητήρα που επιθυµείτε να χρησιµοποιήσετε. Με την επιλογή αυτή εµφανίζονται και οι αντίστοιχες ρυθµίσεις και παράµετροι που αντιστοιχούν στον κάθε αισθητήρα. Καθορίζοντας τις παραµέτρους που θέλετε για τους αισθητήρες όπως έχει αναλυθεί παραπάνω (οι µέθοδοι ελέγχου και τα πάνελ κάθε αισθητήρα δεν φέρουν διαφορές ανάµεσα στα διάφορα blocks) µπορείτε πλέον να ελέγχετε ποιό τµήµα του προγράµµατος θα εκτελεσθεί, ανάλογα µε τις διάφορες εισόδους από τους αισθητήρες. Εικόνα 3.39 Πεδίο ρυθµίσεων Switch Block (Sensor) Παράδειγµα της λειτουργίας µε Loop Block Έστω ότι θέλουµε το ροµπότ κινηθεί µπροστά και να εµφανίσει µία εικόνα επιβράβευσης όταν ο αισθητήρας αφής δεν εντοπίζει εµπόδια, ενώ να σταµατά και να εµφανίζει µια εικόνα δυσαρέσκειας σε περίπτωση εµποδίου. Αρχικά θα χρησιµοποιήσουµε ένα Switch block και θα ελέγξουµε µε βάση έναν αισθητήρα αφής. Στην επιλογή του switch block που ο αισθητήρας δεν θα είναι πατηµένος θα βάλουµε ένα Display block µε µία έκφραση επιβράβευσης και ένα move block που θα εκτελεί κίνηση, ενώ στην επιλογή που ο αισθητήρας εντοπίζει εµπόδιο θα έχουµε ένα Display block µε µία έκφραση δυσαρέσκειας και ένα move block σε κατάσταση stop. 51

52 3.5 ΠΑΛΕΤΑ Complete Η επόµενη παλέτα της εφαρµογής, η Complete, οργανώνει τα blocks στις κατηγορίες Common, Action, Sensor, Flow, Data και Advanced Common Blocks Πρόκειται για τα Blocks της προηγούµενης ενότητας και της παλέτας Common Action Blocks Σε αυτή την κατηγορία ανήκουν τα blocks Motor, Sound, Display, Motor* και Lamp*. Τα Sound και Display είναι τα ίδια µε αυτά της κατηγορίας Common. Τα Motor* και Lamp* απευθύνονται στον εγκέφαλο RCX της προηγούµενης έκδοσης του ροµπότ και έχουν όµοιες λειτουργίες µε τα blocks του NXT µε τα αντίστοιχα ονόµατα. MOTOR BLOCK Το Motor Block σας επιτρέπει να ελέγξετε µε ακρίβεια την ταχύτητα ενός κινητήρα. Μπορείτε να αυξήσετε την ταχύτητα ή να την µειώσετε µέχρι να σταµατήσει η κίνηση. Αν δεν έχετε επιλεγµένο το Wait for Completion, το πρόγραµµά σας µπορεί να συνεχίσει στο επόµενο block όταν το Motor Block θέσει κίνηση σε έναν κινητήρα. Εικόνα 3.40 Motor Block Το γράµµα στην επάνω δεξιά γωνία του block(1) δείχνει την θύρα εξόδου στην οποία είναι συνδεδεµένος ο κινητήρας που ελέγχεται από το block. Το εικονίδιο κάτω αριστερά(2) δείχνει την κατεύθυνση του κινητήρα. Το εικονίδιο κάτω στο κέντρο(3) δείχνει την τιµή της ταχύτητας του κινητήρα. Το εικονίδιο κάτω δεξιά(4) δείχνει την επιλογή σας στο πεδίο Duration, δηλαδή την µονάδα µέτρησης που θα χρησιµοποιήσετε για να προσδιορίσετε την έκταση της κίνησης. Στην περιοχή που περικλείεται από το παραλληλόγραµµο(5) µπορείτε να ανοίξετε τις θύρες εισόδου και εξόδου του block ώστε να µπορείτε να ελέγχεται τις διάφορες τιµές δυναµικά. Εικόνα 3.41 Motor Block (stop) 52

53 Το εικονίδιο 1 δείχνει ότι στο πεδίο Direction των ρυθµίσεων έχει επιλεχθεί το stop. Αυτή η επιλογή θα σταµατήσει τον κινητήρα που έχει επιλεχθεί. Το πεδίο ρυθµίσεων του Motor Block είναι το παρακάτω: Εικόνα 3.42 Πεδίο ρυθµίσεων Motor Block Επιλέξτε στην περιοχή Port (1) τον κινητήρα που θέλετε να ελέγξετε. Επιλέξτε στην περιοχή Direction (2) αν ο κινητήρας θα κινηθεί µπροστά,πίσω ή δεν θα κινηθεί καθόλου. Μπορείτε να ελέγξετε µε ακρίβεια την επιτάχυνση (3) του κινητήρα επιλέγοντας επιτάχυνση Ramp Up ή επιβράδυνση Ramp Down. Ένας κινητήρας που είναι σε κατάσταση Ramp Up θα αυξάνει αργά την ταχύτητα του µέχρι να φτάσει στην ταχύτητα που θα έχετε θέσει. Ένας κινητήρας που είναι σε κατάσταση Ramp Down θα µειώνει αργά την ταχύτητά του µέχρι να φτάσει σε µηδενική ταχύτητα. Ένας κινητήρας σε κατάσταση Constant θα ξεκινήσει αµέσως µε την µέγιστη ταχύτητα που έχετε θέσει και θα σταµατήσει απότοµα όταν η κίνηση φτάσει στο τέλος της. Η κυλιόµενη µπάρα στην περιοχή Power (4) και το πεδίο δίπλα σε αυτήν σας επιτρέπουν να θέσετε την επιθυµητή ταχύτητα του κινητήρα (σε κλίµακα 0-100%). Επιλέξτε το πλαίσιο ελέγχου Motor Power (5) εάν θέλετε να ενεργοποιήσετε τον έλεγχο της ισχύος. Ο έλεγχος αυτός θα προσπαθήσει να αντισταθµίσει οποιαδήποτε αντίσταση ή ολίσθηση που θα συναντήσει ο κινητήρας. Θα αυξήσουν την ισχύ κατ 'ανώτατο όριο 100% για να διατηρηθεί ο ίδιος αριθµός περιστροφών ανά δευτερόλεπτο. Χρησιµοποιώντας το µενού Duration (6), µπορείτε να ορίσετε την διάρκεια κίνησης του κινητήρα σε απεριόριστο χρονικό διάστηµα ή για ένα συγκεκριµένο αριθµό περιστροφών, µοιρών, ή δευτερολέπτων. Έχοντας επιλέξει την αναµονή για ολοκλήρωση Wait for completion στην περιοχή Wait (7) του πάνελ ρυθµίσεων ο κινητήρας θα τελειώσει εξ ολοκλήρου την κίνηση του πριν επιτρέψει στο πρόγραµµα να συνεχίσει την εκτέλεσή του. Αν δεν κάνετε αυτήν την επιλογή, µπορούν να εκτελούνται και άλλα blocks καθώς ο κινητήρας εκτελεί την κίνηση του. Για παράδειγµα, αν τοποθετήσετε ένα Sound Block µετά το Motor Block, αυτό θα µπορεί να αναπαράγει έναν ήχο καθώς το ροµπότ εκτελεί την κίνηση του Motor block. 53

54 Επιλέξτε στην περιοχή Next Action (8) αν ο κινητήρας θα σταµατήσει ή θα συνεχίσει µετά την ολοκλήρωση της ενέργειας του. Επιλέξτε το Break, αν θέλετε να σταµατήσει το ροµπότ ακριβώς σε µια συγκεκριµένη θέση και να παραµείνει στη θέση αυτή. Η επιλογή του Break απαιτεί πρόσθετη ενέργεια µπαταρίας, επειδή ο κινητήρας κάνει επιπλέον προσπάθεια για να διατηρηθεί στη θέση του. Το Action είναι µια καλή επιλογή, αν αυτό το motor block ακολουθείται από ένα άλλο block που ελέγχει τον ίδιο κινητήρα. Το πεδίο σχολίων (9) υποδεικνύει κατά πόσες µοίρες ή περιστροφές έχει κινηθεί το ροµπότ. Πιέστε το πλήκτρο Reset για να επανέλθει η ένδειξη στο 0. Για να παίρνετε πληροφορίες από τον κινητήρα βεβαιωθείτε ότι έχετε συνδέσει τον κινητήρα στην θύρα εξόδου που επιλέξατε στο Port του πεδίου ρυθµίσεων. Η τιµή στο πεδίο σχολίων θα εµφανίζεται µε µαύρο χρώµα όταν έχετε επιλέξει κίνηση προς εµπρός, ενώ θα εµφανίζεται µε κόκκινο χρώµα για κινήσεις προς πίσω. Κινητήρας και κατεύθυνσης του ροµπότ: Όταν θέτετε την κατεύθυνση στην περιοχή Direction του πεδίου ρυθµίσεων ενός Move ή Motor Block, ορίζετε την φορά µε την οποία θα στραφεί ο κινητήρας. Αυτή µπορεί να διαφέρει από την κατεύθυνση στην οποία θα κινηθεί τελικά το ροµπότ σας. Ανάλογα µε την δοµή του ροµπότ και τον τρόπο που το έχετε δηµιουργήσει, µπορεί θέτοντας κίνηση προς εµπρός, το ροµπότ να κινείται προς πίσω. Η εικόνα που ακολουθεί δείχνει πώς περιστρέφεται ένας κινητήρας σε µία εξ ορισµού κίνηση προς εµπρός. Εικόνα 3.43 Κινητήρας του ροµπότ SEND MESSAGE BLOCK Το Send Message Block επιτρέπει την αποστολή µηνυµάτων ασύρµατα σε άλλα ροµπότ NXT. Ρυθµίσεις του NXT για ασύρµατη επικοινωνία: Πριν µπορέσετε να στείλετε ή να δεχτείτε ένα µήνυµα ασύρµατα πρέπει να στηθεί ένα σύστηµα ασύρµατης επικοινωνίας ανάµεσα στα εµπλεκόµενα NXT. 54

55 Στο ροµπότ-αποστολέα, που θα επικοινωνήσει µε άλλο ροµπότ, περιηγηθείτε στην κατηγορία Bluetooth και επιλέξτε το Search, που θα ξεκινήσει την αναζήτηση άλλων συσκευών. Όταν η αναζήτηση τελειώσει, επιλέξτε µε ποιόν αριθµό σύνδεσης(1, 2 ή 3) θέλετε να είναι γνωστό το δεύτερο ροµπότπαραλήπτης. Την πρώτη φορά που θα δηµιουργηθεί σύνδεση ανάµεσα σε δύο NXTs, θα εµφανιστεί µία προτροπή να εισάγετε τον κωδικό πρόσβασης και στα δύο ροµπότ και πρέπει να γίνει αποδεκτή και από τους δύο συµµετέχοντες στη σύνδεση. Τώρα όταν πλοηγηθείτε στην κατηγορία Connection στο ροµπόταποστολέα, το ροµπότ-παραλήπτης θα πρέπει να εµφανίζεται µε το όνοµα που έχει επιλεχθεί ως αριθµός σύνδεσης. Στο ροµπότ-παραλήπτη, το ροµπότ-αποστολέας πρέπει να είναι γνωστό µε αριθµό σύνδεσης το 0. Σε αυτό το σηµείο, το ροµπότ-αποστολέας είναι έτοιµο να ξεκινήσει την επικοινωνία µε το ροµπότπαραλήπτη. Αν το ροµπότ-αποστολέας πρέπει να επικοινωνήσει µε πολλούς παραλήπτες(πάνω από τρείς), τότε θα πρέπει να επαναλάβετε την παραπάνω διαδικασία. Είναι απαραίτητο να γίνει αυτή η διαδικασία µόνο σε ένα NXT. Το ροµπότ-παραλήπτης θα ανανεώσει αυτόµατα τη σύνδεση όταν ο αποστολέας καλέσει τον αριθµό σύνδεσής του. Αριθµός σύνδεσης: Ο αριθµός σύνδεσης για κάθε NXT µπορεί να θεωρηθεί σαν διεύθυνση στην ασύρµατη επικοινωνία. Στέλνετε ένα µήνυµα σε συγκεκριµένο NΧΤ υποδεικνύοντας τον αριθµό σύνδεσής του. Αριθµός Γραµµατοκιβωτίου: Κάθε NXT έχει δέκα αριθµούς γραµµατοκιβωτίων όπου εισερχόµενα µηνύµατα µπορούν να κατατίθενται. Κάθε γραµµατοκιβώτιο µπορεί να δέχεται µέχρι πέντε µηνύµατα. Αν ένα γραµµατοκιβώτιο είναι γεµάτο µε πέντε µηνύµατα και καταφτάσει ένα νέο µήνυµα, τότε το παλαιότερο µήνυµα θα διαγραφεί για να µπορέσει να παραληφθεί το νέο. Στέλνοντας Μηνύµατα: Για να στείλετε ένα µήνυµα ασύρµατα µε το ροµπότ (αφού όλα τα NXT έχουν ρυθµιστεί µε τους αριθµούς σύνδεσής τους), πρώτα επιλέξτε τον αριθµό σύνδεσης του ροµπότπαραλήπτη. Στη συνέχεια επιλέξτε τον τύπο του µηνύµατος που θα στείλετε (κείµενο, αριθµό ή λογική τιµή). Πληκτρολογήστε το µήνυµα ή επιλέξτε την αντίστοιχη λογική τιµή και τέλος επιλέξτε τον αριθµό γραµµατοκιβωτίου (όπου το µήνυµα θα αποθηκευτεί) στο ροµπότ-παραλήπτη. Αποδοχή µηνύµατος: Για να αποδεχτεί το NXT ένα µήνυµα ασύρµατα (αφού έχουν γίνει όλες οι απαραίτητες ρυθµίσεις όπως στην αποστολή µηνυµάτων και έχουν ρυθµιστεί όλα τα NXT µε τους αριθµούς σύνδεσής τους), πρώτα προσδιορίστε τον τύπο του εισερχόµενου µηνύµατος (κείµενο, αριθµός ή λογική τιµή). Αν επιθυµείτε να ελέγξετε αν έχει παραληφθεί ένα συγκεκριµένο µήνυµα (και το Receive Message block στέλνει την τιµή true), πληκτρολογήστε ένα δοκιµαστικό κείµενο ή αριθµό µέσα στο πεδίο Compare to, ή επιλέξτε µία λογική τιµή. Αν το εισερχόµενο µήνυµα ταιριάζει µε το δοκιµαστικό µήνυµα, θα παραχθεί µία αληθής λογική τιµή την οποία θα µπορείτε να αποστείλετε σε άλλα blocks µέσω της αντίστοιχης θύρας εξόδου. Τέλος επιλέξτε τον αριθµό του γραµµατοκιβωτίου που επιθυµείτε να αποθηκευτεί το νέο µήνυµα. 55

56 Εικόνα 3.44 Send Message Block Οι αριθµοί στα εικονίδια (1) δείχνουν τον αριθµό σύνδεσης του ροµπότ-παραλήπτη. Ο τύπος του µηνύµατος(κείµενο, αριθµός, λογική τιµή) και το ίδιο το µήνυµα, µπορούν να ορισθούν δυναµικά χρησιµοποιώντας καλώδια δεδοµένων (2). Μέσω των θυρών εξόδου οι πληροφορίες αυτές µπορούν να περάσουν και σε άλλα blocks. Εισάγοντας το Send Message Block στο παράθυρο ανάπτυξης του προγράµµατος εµφανίζεται το πεδίο ρυθµίσεων του στο οποίο µπορείτε να κάνετε τις παρακάτω ρυθµίσεις: Εικόνα 3.45 Πεδίο ρυθµίσεων Send Message Block Στην περιοχή Connection (1) του πεδίου ρυθµίσεων επιλέξτε τον αριθµό σύνδεσης του ροµπότπαραλήπτη. Στην περιοχή Message (2) επιλέξτε από το µενού τον τύπο του µηνύµατος που θα στείλετε. Το µήνυµα µπορεί να είναι κείµενο Text, αριθµός Number, ή λογική τιµή Logic. Αν πρόκειται να στείλετε µήνυµα σε µορφή κειµένου ή αριθµού πληκτρολογήστε το στο κενό πεδίο (3). Αν στείλετε µήνυµα σε µορφή λογικής τιµής επιλέξτε το κατάλληλο radio button (true/false). Στην περιοχή Mailbox (4) του πεδίου ρυθµίσεων επιλέξτε τον αριθµό του γραµµατοκιβωτίου του ροµπότ-αποδέκτη. 56

57 3.5.3 Sensor BLOCKS Σε αυτή την κατηγορία ανήκουν τα Blocks Touch Sensor, Sound Sensor, Light Sensor, Ultrasonic Sensor, NXT Buttons, (Built-in) Rotation Sensor, Timer, ReceiveMessage, Touch* Sensor, Rotation* Sensor, Light* Sensor, Temperature* Sensor. Τα Touch* Sensor, Rotation* Sensor, Light* Sensor, Temperature* Sensor Blocks απευθύνονται στον εγκέφαλο RCX της προηγούµενης έκδοσης του ροµπότ. TOUCH SENSOR BLOCK Το block του αισθητήρα αφής ελέγχει την κατάσταση ενός αισθητήρα αφής σε συγκεκριµένα σηµεία µέσα στο πρόγραµµα. Στέλνει σε άλλα blocks τα αποτελέσµατά του σαν λογικές τιµές (αληθής ή ψευδής) µέσω καλωδίων δεδοµένων. Αν ο αισθητήρας είναι πιεσµένος, το block θα στείλει τη λογική τιµή true, ενώ αν ο αισθητήρας δεν είναι πιεσµένος, το block θα στείλει την τιµή false. Για να σταλθεί η τιµή που έχει πάρει το block πρέπει να συνδεθεί µε κάποιο άλλο block µέσω ενός καλωδίου δεδοµένων. Εικόνα 3.46 Touch Sensor Block Στο σηµείο πάνω δεξιά του Block (1) φαί0νεται σε ποια θύρα εισόδου είναι συνδεδεµένος ο αισθητήρας αφής. Μπορείτε να αλλάξετε την θύρα εισόδου στο πάνελ διαµόρφωσης του block αν χρειάζεται. Το εικονίδιο στο κάτω δεξί µέρος του block (2) δείχνει ποια ενέργεια θα στείλει αληθή τιµή. Το σηµείο εξόδου δεδοµένων (3) θα ανοίξει αυτόµατα µόλις τοποθετήσετε το block στην επιφάνεια ανάπτυξης του προγράµµατος. Από εκεί µπορείτε να συνδέσετε το block µε κάποιο άλλο στο οποίο θα µεταφερθούν τα δεδοµένα του, δηλαδή η τιµή του block ανάλογα µε την κατάστασή του. Επιλέγοντας το Touch Sensor Block µπορείτε να κάνετε ρυθµίσεις µέσα από το πάνελ διαµόρφωσης που εµφανίζεται στο κάτω µέρος της πλατφόρµας. Εικόνα 3.47 Πεδίο ρυθµίσεων Touch Sensor Block 57

58 Στην περιοχή Port (1) επιλέγετε την θύρα στην οποία είναι συνδεδεµένος ο αισθητήρας αφής. Εξ ορισµού είναι επιλεγµένη η πρώτη θύρα, άλλα µπορείτε να την αλλάξετε ανάλογα µε τη διαµόρφωση του ροµπότ. Στην περιοχή Action (2) επιλέγετε µε ποιον τρόπο θέτετε να ενεργοποιηθεί το block του αισθητήρα. Επιλέξτε Bumped αν θέλετε να ενεργοποιηθεί µετά από ένα γρήγορο πάτηµα, pressed αν θέλετε να ενεργοποιηθεί τη στιγµή που πιέζεται ο αισθητήρας και Released αν θέλετε να ενεργοποιηθεί καθώς ο αισθητήρας απελευθερώνεται. Το πεδίο σχολίων (3) σας επιτρέπει να ελέγχεται τον αισθητήρα. Όταν ο αισθητήρας ενεργοποιείται εµφανίζεται ο αριθµός 1. Πιέστε το Reset για να καθαρίσετε το πεδίο µετά το πάτηµα του αισθητήρα. SOUND SENSOR BLOCK Το Sound Sensor Block είναι ένας ανιχνευτής ήχου. Χρησιµοποιώντας καλώδια δεδοµένων µπορεί να στείλει την τρέχουσα ένταση του ήχου ή µία λογική τιµή (true/false) µε βάση το αν η τρέχουσα τιµή ήχου είναι πάνω ή κάτω από ένα καθορισµένο όριο. Εικόνα 3.48 Sound Sensor Block Η τιµή στο πάνω δεξί άκρο του block (1) δείχνει σε ποια θύρα εισόδου είναι συνδεδεµένος ο αισθητήρας ήχου. Η θύρα µπορεί να αλλάξει από το πάνελ διαµόρφωσης του block. Η εικόνα στη κάτω δεξί άκρο του block (2) υποδεικνύει σε ποιο επίπεδο έχει οριστεί η ένταση του ήχου. Όσο περισσότερες είναι οι έγχρωµες µπάρες τόσο υψηλότερα βρίσκεται η ένταση του ήχου. Το σηµείο εξόδου δεδοµένων (3) θα ανοίξει αυτόµατα µόλις τοποθετήσετε το block στην επιφάνεια ανάπτυξης του προγράµµατος. Τουλάχιστον ένα καλώδιο δεδοµένων πρέπει να συνδεθεί από τις θύρες εξόδου του sound sensor block στην θύρα εσόδου κάποιου άλλου block. Επιλέγοντας το Sound Sensor Block µπορείτε να κάνετε ρυθµίσεις µέσα από το πάνελ διαµόρφωσης που εµφανίζεται στο κάτω µέρος της πλατφόρµας. 58

59 Εικόνα 3.49 Πεδίο ρυθµίσεων Sound Sensor Block Στην περιοχή Port (1) επιλέξτε την θύρα εισόδου στην οποία είναι συνδεδεµένος ο αισθητήρας ήχου. Εξ ορισµού έχει επιλεχθεί η δεύτερη θύρα, αλλά µπορείτε να αλλάξετε την επιλογή αυτή ανάλογα µε την κατασκευή του ροµπότ. Χρησιµοποιήστε τη µπάρα ολίσθησης (2) για να ορίσετε µια τιµή για το όριο της έντασης του ήχου που αναφέρθηκε πιο πάνω, ή πληκτρολογήστε την τιµή στο αντίστοιχο πεδίο. Επιλέξτε το radio button στα αριστερά της µπάρας ολίσθησης αν επιθυµείτε να ενεργοποιηθεί το block µε ένταση ήχου υψηλότερη της τιµής που έχετε ορίσει. Επιλέξτε το radio button στα δεξιά της µπάρας ολίσθησης αν επιθυµείτε να ενεργοποιηθεί το block µε ένταση ήχου χαµηλότερη της τιµής που έχετε ορίσει. Μπορείτε επίσης να χρησιµοποιήσετε τις ανισότητες στην επιλογή Sound. Το πεδίο σχολίων (3) δείχνει την τρέχουσα ένταση του ήχου (0-100%). Μπορείτε να το χρησιµοποιείτε για να κάνετε δοκιµές µε διαφορετικά όρια τιµών. LIGHT SENSOR BLOCK Ο αισθητήρας φωτός εντοπίζει το περιβάλλων φως. Χρησιµοποιώντας καλώδια δεδοµένων, στέλνει την τρέχουσα τιµή φωτός και µία λογική τιµή(true/false) µε βάση το αν η τρέχουσα τιµή φωτός είναι πάνω ή κάτω από ένα καθορισµένο όριο. Το όριο αυτό είναι µία συγκεκριµένη τιµή φωτός που δηλώνει την εµφάνιση αλλαγής µίας κατάστασης. Για παράδειγµα, µπορείτε να προγραµµατίσετε το ροµπότ ώστε να κινείται ευθεία µόνο όταν το επίπεδο του φωτός είναι πάνω από 60%. Τότε θα πρέπει να θέσετε το όριο στην τιµή 60. Για να θέσετε το όριο του φωτός χρησιµοποιήστε την µπάρα ολίσθησης στο πάνελ ρυθµίσεων ή πληκτρολογήστε την τιµή του ορίου στο αντίστοιχο πεδίο. Αν στο πάνελ ρυθµίσεων έχετε τσεκάρει την επιλογή Generate Light, ο αισθητήρας φωτός θα ανάψει τη δική του πηγή φωτός και θα προσπαθεί να εντοπίσει αν γίνεται αντανάκλαση αυτού του φωτός. Αυτή η διαδικασία είναι ιδιαίτερα χρήσιµη σε δύσκολες περιπτώσεις φωτισµού, όπως σε ένα πολύ φωτεινό δωµάτιο. 59

60 Εικόνα 3.50 Light Sensor Block Ο αριθµός στην επάνω δεξιά άκρη του block (1) δείχνει σε ποια θύρα εισόδου είναι συνδεδεµένος ο αισθητήρας φωτός. Μπορείτε να αλλάξετε τη θύρα από το πάνελ διαµόρφωσης του block. Το εικονίδιο στην κάτω δεξιά άκρη του block (2) υποδεικνύει σε ποιο επίπεδο έχει ρυθµιστεί να βρίσκεται η τιµή του ορίου του φωτός. ίπλα από το εικονίδιο του επιπέδου του φωτός βρίσκεται το εικονίδιο που δηλώνει αν έχει επιλεχθεί ο αισθητήρας να παράγει το δικό του φως. Η επιλογή αυτή γίνεται από το πάνελ ρυθµίσεων στην επιλογή Generate Light. Οι θύρες εξόδου (4) των δεδοµένων θα ανοίξουν αυτόµατα µε την εισαγωγή του block στο πρόγραµµα. Πρέπει τουλάχιστον ένα καλώδιο δεδοµένων να συνδεθεί µε το block ώστε να µεταφερθεί η ζητούµενη πληροφορία σε κάποιο άλλο block. Στο πάνελ ρυθµίσεων του Light Sensor Block µπορείτε να κάνετε τις παρακάτω ρυθµίσεις: Εικόνα 3.51 Πεδίο ρυθµίσεων Light Sensor Block Στην περιοχή Port (1) επιλέξτε την θύρα εισόδου του ροµπότ στην οποία έχετε συνδέσει τον αισθητήρα. Εξ ορισµού είναι επιλεγµένη η Τρίτη θύρα εισόδου, αλλά µπορείτε να την αλλάξετε ανάλογα µε τη διαµόρφωση του ροµπότ. Χρησιµοποιήστε την µπάρα ολίσθησης (2) για να ορίσετε την τιµή του ορίου του φωτός ή πληκτρολογήστε την στο πεδίο Light. Επιλέξτε το radio button στα αριστερά της µπάρας ολίσθησης αν επιθυµείτε να ενεργοποιηθεί το block µε ποσότητες φωτός υψηλότερες της τιµής που έχετε ορίσει. Επιλέξτε το radio button στα δεξιά της µπάρας ολίσθησης αν επιθυµείτε να ενεργοποιηθεί το block µε ποσότητες φωτός χαµηλότερες της τιµής που έχετε ορίσει. Μπορείτε επίσης να χρησιµοποιήσετε τις ανισότητες στην επιλογή Light. 60

61 Αν τσεκάρετε την επιλογή Generate Light (3) ο αισθητήρας φωτός θα ενεργοποιήσει την πηγή φωτός του και θα προσπαθεί να ανιχνεύσει αν το φως που παράγεται αντανακλάται πίσω σε αυτό. Το πεδίο σχολίων (4) δείχνει την τρέχουσα ποσότητα φωτός(0-100%). Μπορείτε να το χρησιµοποιείτε για να κάνετε δοκιµές µε διαφορετικά όρια τιµών. Βεβαιωθείτε ότι έχετε συνδέσει τον αισθητήρα µε την θύρα εισόδου που έχετε επιλέξει στο Port ώστε να παίρνετε τιµές στο πεδίο αυτό από τον αισθητήρα. ULTRASONIC SENSOR BLOCK Ο αισθητήρας υπερήχων µπορεί να εντοπίσει αντικείµενα σε µέγιστη απόσταση περίπου 100 ιντσών(250 εκατοστών). Με καλώδια δεδοµένων µπορεί να στείλει σε άλλα blocks την τρέχουσα κατάσταση την υπερήχων και µία λογική τιµή (true/false) µε βάση αν η κατάσταση των υπερήχων είναι πάνω ή κάτω από ένα καθορισµένο όριο. Το όριο αυτό είναι µία συγκεκριµένη τιµή που δηλώνει την εµφάνιση αλλαγής µίας κατάστασης. Για παράδειγµα, µπορείτε να προγραµµατίσετε το ροµπότ ώστε να αντιδρά µε κάποιον τρόπο όταν ένα αντικείµενο πλησιάσει σε απόσταση µικρότερη του 70% της συνολικής απόστασης εντοπισµού αντικειµένων. Τότε θα πρέπει να ορίσετε να είναι το όριο η τιµή 70. Για να ορίσετε το όριο αυτό χρησιµοποιήστε την µπάρα ολίσθησης του πεδίου ρυθµίσεων ή πληκτρολογήστε την τιµή στο αντίστοιχο πεδίο. Εικόνα 3.52 Ultrasonic Sensor Block Ο αριθµός στην επάνω δεξιά γωνία του block (1) δείχνει µε ποια θύρα εισόδου είναι συνδεδεµένος ο αισθητήρας. Μπορείτε να αλλάξετε την θύρα στο πεδίο ρυθµίσεων του block. Η εικόνα στην κάτω δεξιά γωνία του block (2) απεικονίζει την απόσταση που έχει ρυθµιστεί ως όριο για τον εντοπισµό αντικειµένων. Όσο περισσότερες είναι οι έγχρωµες µπάρες τόσο πιο µεγάλο είναι το όριο και εποµένων και η απόσταση εντοπισµού των αντικειµένων από το ροµπότ. Οι θύρες εξόδου των δεδοµένων του block (3) θα ανοίξουν αυτόµατα µε την εισαγωγή του στο χώρο εργασίας. Τουλάχιστον ένα καλώδια δεδοµένων πρέπει να φεύγει από το block για να µεταφέρεται πληροφορία σε άλλα blocks. Το όριο της απόστασης εντοπισµού αντικειµένων µπορεί να σταλεί δυναµικά µέσω των θυρών εξόδου. 61

62 Στο πάνελ ρυθµίσεων του Ultrasonic Sensor Block µπορείτε να κάνετε τις παρακάτω ρυθµίσεις: Εικόνα 3.53 Πεδίο ρυθµίσεων Ultrasonic Sensor Block Επιλέξτε στην περιοχή Port (1) την θύρα εισόδου του ροµπότ στην οποία είναι συνδεδεµένος ο αισθητήρας υπερήχων. Εξ ορισµού είναι επιλεγµένη η θύρα 4 για τον συγκεκριµένο αισθητήρα, αλλά µπορείτε να αλλάξετε την επιλογή αυτή ανάλογα µε τη διαµόρφωση του ροµπότ σας. Στην περιοχή Compare (2) µπορείτε να καθορίσετε την τιµή του ορίου της απόστασης για τον εντοπισµό των αντικειµένων. Μπορείτε να χρησιµοποιήσετε είτε τη µπάρα ολίσθησης είτε να πληκτρολογήσετε την σχετική τιµή στο πεδίο Distance(0-250 για εκατοστά και για ίντσες). Επιλέξτε το radio button στα αριστερά της µπάρας ολίσθησης αν επιθυµείτε να ενεργοποιηθεί το block όταν εντοπίσει αντικείµενο σε απόσταση µικρότερη του ορίου που θέσατε. Επιλέξτε το radio button στα δεξιά της µπάρας ολίσθησης αν επιθυµείτε να ενεργοποιηθεί το block όταν εντοπίσει αντικείµενο σε απόσταση µεγαλύτερη του ορίου που θέσατε. Μπορείτε επίσης να χρησιµοποιήσετε τις ανισότητες στην επιλογή Distance. Στην περιοχή Show (3) µπορείτε να επιλέξετε αν οι τιµές θα µετρούνται σε εκατοστά ή ίντσες. Το πεδίο σχολίων (4) δείχνει την τρέχουσα ένδειξη του αισθητήρα(0-250 εκατοστά ή ίντσες). Η ένδειξη 0 δηλώνει την µικρότερη απόσταση που ο αισθητήρας µπορεί να εντοπίσει αντικείµενο. Η ένδειξη 250 για εκατοστά και 100 για ίντσες δηλώνει την µεγαλύτερη απόσταση που ο αισθητήρας µπορεί να εντοπίσει ένα αντικείµενο. Για να έχετε σωστές ενδείξεις σιγουρευτείτε ότι έχετε συνδέσει τον αισθητήρα στην θύρα εισόδου του ροµπότ που έχετε επιλέξει στο πεδίο ρυθµίσεων. NXT BUTTONS BLOCK Το block των πλήκτρων NXT στέλνει την τιµή αλήθειας true µέσω ενός καλωδίου δεδοµένων όταν ένα από τα πλήκτρα του NXT ενεργοποιηθεί. Θα πρέπει να επιλέξετε το πλήκτρο και την ενέργεια που θα το ενεργοποιεί ώστε να σταλθεί η τιµή true. 62

63 Εικόνα 3.54 NXT Buttons Block Τα εικονίδια στο κάτω µέρος του block (1) δείχνουν το πρώτο, το πλήκτρο που έχετε επιλέξει, και το δεύτερο, την ενέργεια που το ενεργοποιεί. Οι θύρες εξόδου δεδοµένων του block (2) θα ανοίξουν αυτόµατα µε την εισαγωγή του στο παράθυρο ανάπτυξης του προγράµµατος. Θα πρέπει να συνδέσετε την έξοδό του µε την είσοδο ενός άλλου block που να δέχεται λογικές τιµές. Μπορείτε να κάνετε τις απαραίτητες ρυθµίσεις στο πάνελ που εµφανίζεται όταν είναι επιλεγµένο το NXT Buttons Block: Εικόνα 3.55 Πεδίο ρυθµίσεων NXT Buttons Block Στην περιοχή Button (1) επιλέξτε ποιό NXT πλήκτρο θα είναι υπεύθυνο για την αποστολή του σήµατος αλήθειας όταν θα ενεργοποιείται. Επιλέξτε Bumped αν θέλετε να ενεργοποιηθεί το πλήκτρο µετά από ένα γρήγορο πάτηµα, Pressed αν θέλετε να ενεργοποιηθεί τη στιγµή που πιέζεται και Released αν θέλετε να ενεργοποιηθεί καθώς απελευθερώνεται. ROTATION SENSOR BLOCK Το Rotation Sensor Block µετράει τον αριθµό των µοιρών (µια ολόκληρη στροφή είναι 360 µοίρες) ή ολόκληρων περιστροφών που κάνει ο κινητήρας του ροµπότ. Μέσω καλωδίων δεδοµένων, το block αυτό, µπορεί να στείλει την τρέχουσα τιµή των µοιρών ή των περιστροφών, καθώς και µία λογική τιµή (true/false) µε βάση το αν ο αριθµός των µοιρών ή περιστροφών είναι πάνω ή κάτω από ένα καθορισµένο όριο. 63

64 Το όριο αυτό είναι µία συγκεκριµένη τιµή που δηλώνει την εµφάνιση αλλαγής µίας κατάστασης. Για παράδειγµα, µπορείτε να προγραµµατίσετε το ροµπότ να σταµατά όταν ο αριθµός των περιστροφών φτάσει τις 10. Τότε το όριο θα είναι ο αριθµός 10. Εικόνα 3.56 Rotation Sensor Block Το γράµµα στην επάνω δεξιά γωνία του block (1) δείχνει την θύρα εξόδου που είναι συνδεδεµένος ο κινητήρας στον οποίο θα γίνονται οι µετρήσεις. Μπορείτε να αλλάξετε την θύρα αυτή στο πάνελ ρυθµίσεων. Το εικονίδιο στην κάτω δεξιά γωνία (2) δείχνει αν το block µετρά περιστροφές ή µοίρες. Οι περιστροφές απεικονίζονται µε συνεχόµενο κυκλικό βέλος, ενώ οι µοίρες µε διακεκοµµένο κυκλικό βέλος. Οι θύρες εξόδου δεδοµένων του block (3) θα ανοίξουν αυτόµατα µε την εισαγωγή του στο παράθυρο ανάπτυξης του προγράµµατος, επιτρέποντας να µεταφέρετε δεδοµένα, όπως ο αριθµός των περιστροφών ή λογικές τιµές ανάλογα µε το όριο που έχει τεθεί, σε άλλα blocks. Επιλέγοντας το Rotation Sensor Block µπορείτε να πραγµατοποιήσετε αλλαγές στις ρυθµίσεις του µέσω του πάνελ ρυθµίσεων που θα εµφανιστεί: Εικόνα 3.57 Πεδίο ρυθµίσεων Rotation Sensor Block Στην περιοχή Port (1) του πεδίου ρυθµίσεων επιλέξτε την θύρα που είναι συνδεδεµένος ο κινητήρας, τον οποίο θα ελέγχει το block. Στην περιοχή Action (2) επιλέξτε είτε να διαβάζει το Rotation Sensor Block την τρέχουσα τιµή περιστροφών ενός κινητήρα, είτε να επαναφέρει την τιµή του αισθητήρα στο 0. Με τα radio buttons στην περιοχή Compare (3) επιλέξτε την κατεύθυνση του κινητήρα που θέλετε να παρακολουθείτε. Είναι σηµαντικό να επιλέξετε την σωστή κατεύθυνση, διαφορετικά το block µπορεί να µην καταφέρει ποτέ να κάνει τις µετρήσεις του. Στο πεδίο 4 επιλέξτε αν επιθυµείτε να µετρήσετε τις µοίρες που θα κάνει ένας κινητήρας ή τις περιστροφές του. 64

65 Στο πεδίο 5 πληκτρολογήστε την τιµή του ορίου που επιθυµείτε και µε τις ανισότητες επιλέξτε αν η αληθής τιµή θα στέλνεται όσο ο αριθµός των µοιρών ή των περιστροφών είναι πάνω ή κάτω από το όριο αυτό. Το πεδίο σχολίων (6) δείχνει την τρέχουσα τιµή των περιστροφών ή των µοιρών που έχει πραγµατοποιήσει ο κινητήρας. Πατώντας το πλήκτρο Reset µπορείτε να επαναφέρετε την τιµή που εµφανίζεται στο 0. Η τιµή στο πεδίο σχολίων θα εµφανίζεται µε µαύρο χρώµα όταν έχετε επιλέξει κίνηση προς εµπρός, ενώ θα εµφανίζεται µε κόκκινο χρώµα για κινήσεις προς πίσω. TIMER BLOCK Όταν το πρόγραµµα µας ξεκινά υπάρχουν τρία χρονόµετρα στο NXT που αρχίζουν αυτόµατα να µετρούν το χρόνο. Με το Timer Block µπορείτε είτε να διαβάζεται τις µετρήσεις ενός χρονοµέτρου, είτε να το µηδενίσετε ώστε να ξεκινήσει από την αρχή την µέτρηση. Μέσω καλωδίων δεδοµένων, το block αυτό µπορεί να αποστείλει την τρέχουσα τιµή του χρονοµέτρου και µία λογική τιµή(true/false) µε βάση το αν η τιµή του χρονοµέτρου είναι πάνω ή κάτω από ένα καθορισµένο όριο. Το όριο αυτό είναι µία συγκεκριµένη τιµή η οποία δηλώνει µια αλλαγή. Για παράδειγµα, µπορείτε να προγραµµατίσετε το ροµπότ να σταµατά όταν το χρονόµετρο περάσει τα 20 δευτερόλεπτα. Τότε το όριο θα είναι η τιµή 20. Για να µεταφερθούν τα δεδοµένα από το block του χρονοµέτρου σε ένα άλλο block, πρέπει να συνδέσετε µία θύρα εξόδου του µε µία θύρα εισόδου του άλλου block. Από το block χρονοµέτρου µπορούν να ξεκινούν καλώδια δεδοµένων που θα µεταφέρουν δύο ειδών πληροφορίες, λογικές τιµές και έναν αριθµό που αντιπροσωπεύει την τρέχουσα τιµή του χρονοµέτρου. Εικόνα 3.58 Timer Block Ο αριθµός στην κάτω δεξιά γωνία του block (1) δείχνει ποιο από τα τρία χρονόµετρα θα παρακολουθείται. Μπορείτε να αλλάξετε αυτόν τον αριθµό από το πάνελ ρυθµίσεων του block. Οι θύρες εξόδου δεδοµένων του block (2) θα ανοίξουν αµέσως µετά την εισαγωγή του block στο παράθυρο ανάπτυξης του προγράµµατος, επιτρέποντάς σας να τραβήξετε ένα λογικό ή ένα αριθµητικό καλώδιο δεδοµένων και να µεταφέρετε την τρέχουσα τιµή του χρονοµέτρου σε άλλα blocks. Μπορείτε επίσης, να εισάγετε το όριο αλλαγής κατάστασης δυναµικά, µε καλώδια δεδοµένων που θα συνδέονται στην αντίστοιχη θύρα εισόδου του block. 65

66 Στο πεδίο ρυθµίσεων του Timer Block µπορούν να γίνουν οι παρακάτω ρυθµίσεις: Εικόνα 3.59 Πεδίο ρυθµίσεων Timer Block Στην περιοχή Timer (1) του πεδίου ρυθµίσεων επιλέξτε ποιο χρονόµετρο επιθυµείτε να παρακολουθείται από το block. Αν στην περιοχή Action επιλέξετε το Read, το Timer Block θα ξεκινήσει την παρακολούθηση, ενώ το χρονόµετρο που ελέγχει θα έχει ήδη ξεκινήσει τη µέτρηση σε κάποιο άλλο σηµείο του προγράµµατος. Αν επιλέξετε το Reset, το block θα µηδενίσει τον χρονόµετρο που έχει επιλεχθεί και θα του προκαλέσει ξεκίνηµα νέας µέτρησης. Στην περιοχή Compare πληκτρολογήστε την τιµή του ορίου αλλαγής κατάστασης στο αντίστοιχο πεδίο. Η µέτρηση θα γίνεται σε δευτερόλεπτα. Με τις ανισότητες επιλέξτε αν η τιµή αλήθειας(true) θα παράγεται από το block όταν το χρονόµετρο είναι πάνω ή κάτω από το όριο που θέσατε. RECEIVE MESSAGE BLOCK Για να αποδεχτεί το ροµπότ ένα µήνυµα, θα πρέπει να θέσετε τον τύπο του µηνύµατος και τον αριθµό γραµµατοκιβωτίου να ταιριάζουν µε αυτά του αποστολέα NXT. Το Receive Message Block µπορεί να έχει ως εξόδους είτε το µήνυµα που έχει παραλάβει, είτε µια λογική τιµή (αν έχετε ως στόχο να συγκρίνετε το εισερχόµενο µήνυµα µε µία δοκιµαστική τιµή). Εικόνα 3.60 Receive Message Block Οι θύρες εξόδου του block (1) ανοίγουν αµέσως µόλις αυτό τοποθετηθεί στο παράθυρο ανάπτυξης του προγράµµατος. Το εισερχόµενο µήνυµα µπορεί να αποσταλεί ως έξοδος του Receive Message block σε ένα άλλο block µέσω µίας από τρείς εξόδους του. Αν το εισερχόµενο µήνυµα είναι κείµενο, µπορεί να σταλεί από την έξοδο T (Text out). Αν το εισερχόµενο µήνυµα είναι αριθµός, µπορεί να σταλεί από την έξοδο # (Number out). Τέλος, αν το εισερχόµενο µήνυµα είναι λογική τιµή, µπορεί να αποσταλεί από την έξοδο x (Logic out). 66

67 Επίσης, µπορείτε να εξάγετε µία λογική τιµή από την έξοδο /x (Yes/No), αν επιθυµείτε να συγκρίνετε το εισερχόµενο µήνυµα µε ένα δοκιµαστικό µήνυµα. Εισάγοντας το Receive Message block στο πρόγραµµα µπορείτε να κάνετε τις ακόλουθες ρυθµίσεις στο πάνελ ρυθµίσεων του: Εικόνα 3.61 Πεδίο ρυθµίσεων Receive Message Block Στο πεδίο Message (1) επιλέξτε τον τύπο του µηνύµατος που θα παραληφθεί (Κείµενο, Αριθµό ή Λογική τιµή). Αν θέλετε να συγκρίνετε το εισερχόµενο µήνυµα µε ένα άλλο δοκιµαστικό, µπορείτε είτε να πληκτρολογήσετε το δοκιµαστικό µήνυµα µέσα στο πεδίο Compare to (2) για µηνύµατα κειµένου ή αριθµητικά, είτε να επιλέξετε µε τα radio buttons µία λογική τιµή αν το µήνυµα µεταφέρει λογική τιµή(true/false). Στην περιοχή Mailbox (3) του πεδίου ρυθµίσεων επιλέξτε τον αριθµό του γραµµατοκιβωτίου που θα αποθηκευτεί το εισερχόµενο µήνυµα Flow Blocks Στην κατηγορία Flow ανήκουν τα Blocks Wait, Loop, Switch και Stop. Τα τρία πρώτα είναι αυτά της κατηγορίας Common. STOP BLOCK To Stop Block σταµατά τη ροή του προγράµµατος, όλους τους κινητήρες που εκτελούν κίνηση, το φωτισµό ή τους ήχους. Εικόνα 3.62 Stop Block Με την εισαγωγή του block στο πρόγραµµα εµφανίζεται το παρακάτω πεδίο ρυθµίσεων στο οποίο δεν δίνεται δυνατότητα επεξεργασίας καµίας παραµέτρου. 67

68 Εικόνα 3.63 Πεδίο Stop Block Data Blocks Στην κατηγορία Data Blocks ανήκουν τα Logic, Math, Compare, Range, Random και Variable Blocks, τα οποία παρουσιάζονται αναλυτικά παρακάτω. LOGIC BLOCK To Logic Block εκτελεί λογικές πράξεις στα δεδοµένα εισόδου του και δίνει την τιµή true ή false στην έξοδό του, ή οποία µπορεί να χρησιµοποιηθεί µέσα στο πρόγραµµα. Οι τιµές εισόδου, που πρέπει να είναι true ή false, µπορούν είτε να αποδοθούν δυναµικά µε καλώδια δεδοµένων, είτε να επιλεχθούν µέσω του πάνελ του block. Το Logic Block δίνει τόσο στις µεταβλητές εισόδου όσο και στις µεταβλητές εξόδου µόνο τις τιµές true και false. Συχνά αυτές οι τιµές γράφονται ως 0 για το false και 1 για το true. Εποµένως µπορείτε να χρησιµοποιήσετε τις τιµές 0 και 1 σαν δεδοµένα εισόδου σε αυτό το block αρκεί να µεταφέρονται από καλώδια δεδοµένων για λογικές τιµές. Οι τέσσερις λογικές πράξεις που εκτελεί το Block σας επιτρέπουν να πραγµατοποιήσετε µια σειρά από συγκρίσεις(and, Or, Xor και Not). Εικόνα 3.64 Logic Block To Logic block έχει δύο θύρες εισόδου και τρείς εξόδου. Οι θύρες εισόδου αναµένεται να έχουν συνδεθεί µε άλλα Blocks µε καλώδια δεδοµένων, αν δεν έχουν αποδοθεί τιµές µέσω του πάνελ ρυθµίσεων του block. 68

69 Οι δύο πρώτες θύρες εξόδου(1), φέρουν τις τιµές των µεταβλητών που συµµετέχουν στην λογική πράξη, ώστε να χρησιµοποιηθούν σε άλλα blocks αν χρειάζεται. Το αποτέλεσµα της λογικής πράξης που θα εκτελέσει το block µεταφέρεται µέσω της τρίτης θύρας εξόδου. Εισάγοντας το Logic Block στο πρόγραµµα εµφανίζεται το παρακάτω πάνελ. Εικόνα 3.65 Πεδίο ρυθµίσεων Logic Block Στα Α και Β µπορείτε να επιλέξετε τις τιµές των µεταβλητών που συµµετέχουν στην πράξη εάν δεν δέχεται το block τα δεδοµένα δυναµικά. Στο µενού Operation επιλέγετε την λογική πράξη που επιθυµείτε να πραγµατοποιηθεί. Οι τέσσερεις πράξεις που διατίθενται είναι οι: -And -Or -Xor και -Not MATH BLOCK Το Math block εκτελεί απλές αριθµητικές πράξεις όπως πρόσθεση, αφαίρεση, πολλαπλασιασµό και διαίρεση. Το δεδοµένα εισόδου, δηλαδή οι αριθµοί που θα χρειαστούν για τις πράξεις, µπορούν είτε να πληκτρολογηθούν στα αντίστοιχα πεδία που βρίσκονται στο πάνελ που εµφανίζεται όταν εισάγετε το block στο πρόγραµµα, είτε να εισαχθούν στο block δυναµικά µε καλώδια δεδοµένων. Εικόνα 3.66 Math Block 69

70 Το Math Block έχει δύο θύρες εισόδου (αριστερά), και τρεις θύρες εξόδου(δεξιά). Οι αριθµοί που πρόκειται να υποστούν την αριθµητική επεξεργασία, όπως αναφέρθηκε νωρίτερα, είτε πληκτρολογούνται στα πεδία τους είτε εισάγονται δυναµικά µε καλώδια δεδοµένων που συνδέονται στις θύρες εισόδου. Το αποτέλεσµα της αριθµητικής πράξης δίνεται στην τρίτη θύρα εξόδου, την οποία µπορείτε να συνδέσετε σε οποιοδήποτε άλλο µέρος του προγράµµατος επιθυµείτε, ώστε να τροφοδοτήσετε κάποιο άλλο block µε το αποτέλεσµα αυτό. Επίσης, οι δύο πρώτες θύρες εξόδου φέρουν τις τιµές των δύο αριθµών που συµµετείχαν στην πράξη, ώστε αν χρειάζεται να χρησιµοποιηθούν και σε άλλα σηµεία. Με την εισαγωγή του Math Block στο πρόγραµµα εµφανίζεται το παρακάτω πάνελ. Εικόνα 3.67 Πεδίο ρυθµίσεων Math Block Στα πεδία Α και Β (1) µπορείτε να πληκτρολογήσετε τους αριθµούς που θα συµµετέχουν στην πράξη. Αν τα δεδοµένα εισάγονται δυναµικά τα πεδία δεν επιτρέπουν την πληκτρολόγηση τιµών. Στο µενού Operation(2) µπορείτε να επιλέξετε ποια πράξη επιθυµείτε να πραγµατοποιηθεί, ανάµεσα σε πρόσθεση, αφαίρεση, πολλαπλασιασµό και διαίρεση. COMPARE BLOCK Το Compare block µπορεί να προσδιορίσει αν ένας αριθµός είναι µεγαλύτερος (>), µικρότερος (<), ή ίσος (=), µε κάποιον άλλο. Οι αριθµοί που συγκρίνονται µπορούν είτε να πληκτρολογηθούν σε ένα πεδίο είτε να µπουν δυναµικά ως δεδοµένα εισόδου στο block από τις πύλες εισόδου. Εικόνα 3.68 Compare Block Το block σύγκρισης διαθέτει δύο θύρες εισόδου, αριστερά και τρεις εξόδου, δεξιά(1). Όταν δεν έχουν πληκτρολογηθεί τιµές για τις εισόδους Α και Β στα πεδία τους, που βρίσκονται στο πάνελ του block, 70

71 αναµένεται οι θύρες εισόδου να παίρνουν τιµές από άλλα blocks του προγράµµατος µέσω καλωδίων δεδοµένων. Το αποτέλεσµα της σύγκρισης δίνεται στην τελευταία θύρα εξόδου, η οποία µπορεί να συνδεθεί µε άλλα blocks του προγράµµατος ώστε να χρησιµοποιηθεί το αποτέλεσµα αυτό οπουδήποτε χρειαστεί, όπως για παράδειγµα σε ένα Switch Block. Οι δύο πρώτες θύρες εξόδου έχουν την τιµή των µεταβλητών Α και Β και µπορούν κι αυτές αντίστοιχα να χρησιµοποιηθούν µέσα στο πρόγραµµα. Με την εισαγωγή του Compare Block στο πρόγραµµα εµφανίζεται το παρακάτω πάνελ ρυθµίσεων: Εικόνα 3.69 Πεδίο ρυθµίσεων Compare Block Στα πεδία Α και Β (1) µπορείτε να πληκτρολογήσετε τις τιµές που επιθυµείτε να συγκρίνετε, αν αυτές δεν εισέρχονται στο block δυναµικά µε ένα καλώδιο δεδοµένων µέσω των θυρών εισόδου δεδοµένων. Αν ισχύει η δεύτερη περίπτωση τα πεδία δεν θα επιτρέπουν την πληκτρολόγηση τιµών. Στο µενού Operation (2) µπορείτε να επιλέξετε το είδος της σύγκρισης. Επιλέγετε µεγαλύτερο από(>) αν θέλετε να ελέγξετε αν το Α είναι µεγαλύτερο του Β, µικρότερο από(<) αν θέλετε να ελέγξετε αν το Α είναι µικρότερο του Β, ίσο µε (=) αν θέλετε να ελέγξετε αν το Α είναι ίσο µε το Β. RANGE BLOCK Το Range Block µπορεί να προσδιορίσει το αν ένας αριθµός βρίσκεται εντός ή εκτός κάποιων ορίων. Τα δεδοµένα εισόδου µπορούν είτε να ορισθούν στο πάνελ που εµφανίζεται µε την εισαγωγή του block στο πρόγραµµα είτε, να µεταφερθούν σε αυτό δυναµικά µε καλώδια δεδοµένων. Τα δεδοµένα εξόδου, δηλαδή µία τιµή true ή false, θα είναι διαθέσιµα µέσω της θύρας εξόδου. Εικόνα 3.70 Range Block 71

72 Το Range Block διαθέτει τρείς πύλες εισόδου και τέσσερις εξόδου(1). Οι Α και Β πύλες εισόδου αντιπροσωπεύουν τα όρια µέσα ή έξω από τα οποία θα ελέγξετε αν βρίσκεται η τιµή της τρίτης εισόδου. Οι τρεις αυτές τιµές µεταφέρονται και στην έξοδο σε περίπτωση που χρειάζονται σε κάποιο σηµείο του κώδικα. Η τέταρτη έξοδος φέρει την τιµή true ή false του ελέγχου που γίνεται. Το πάνελ ρυθµίσεων του block είναι το παρακάτω: Εικόνα 3.71 Πεδίο ρυθµίσεων Range Block Αν η τιµή στην οποία θα γίνει έλεγχος δεν έρχεται δυναµικά στο block µέσω καλωδίων µπορεί να πληκτρολογηθεί στο πεδίο Test Value. Τα άνω και κάτω όρια του επιθυµητού διαστήµατος µπορούν να προσδιοριστούν µέσω της µπάρας κύλισης ή και να τα πληκτρολογήσετε στα πεδία Α και Β του Operation. Το µενού που παρέχεται στο Operation σας επιτρέπει να επιλέξετε αν θα γίνει έλεγχος για το αν η τιµή βρίσκεται εντός ή εκτός κάποιου διαστήµατος. Εντός ορίων έλεγχος: Αν η τιµή βρίσκεται εντός του άνω και κάτω ορίου ή είναι ίση µε ένα από αυτά επιστρέφεται true, διαφορετικά επιστρέφεται false. Εκτός ορίων έλεγχος: Αν η τιµή βρίσκεται εκτός του άνω και κάτω ορίου και δεν είναι ίση µε ένα από αυτά επιστρέφεται true, διαφορετικά επιστρέφεται false. RANDOM BLOCK Το Random Block δηµιουργεί τυχαίους αριθµούς. Μπορείτε να χρησιµοποιήσετε αυτούς τους τυχαίους αριθµούς για να προκαλέσετε συµπεριφορές του ροµπότ που δεν θα έχουν προβλεφθεί. Για παράδειγµα, αν χρησιµοποιήσετε ένα καλώδιο δεδοµένων για να συνδέσετε ένα Random Block µε τη θύρα εισόδου για τη διάρκεια της κίνησης ενός Move Block, το ροµπότ µπορεί να κινηθεί 5 δευτερόλεπτα την πρώτη φορά που θα εκτελέσετε το πρόγραµµα και 10 την επόµενη. Οι τυχαίοι αριθµοί παράγονται ανάµεσα σε ένα ανώτερο και κατώτερο όριο το οποίο µπορείτε να θέσετε εσείς. Αν για παράδειγµα θέλετε να παράγετε αριθµούς ανάµεσα στο 5 και το 10, συµπεριλαµβανοµένων των 5 και 10, θέτετε το κατώτατο όριο ως 5 και το ανώτατο ως 10. Εάν δεν θέλετε να συµπεριλαµβάνονται οι αριθµοί 5 και 10 στις τιµές σας, θέτετε ως όρια, κατώτερο το 6 και ανώτερο το 9. Μπορείτε να θέσετε το κατώτερο και το ανώτερο όριο του πεδίου παραγωγής τιµών είτε χρησιµοποιώντας την κυλιόµενη µπάρα στο πάνελ του block είτε πληκτρολογώντας τις τιµές στα αντίστοιχα πλαίσια. Για να πάρετε δυναµικά τις τιµές των ορίων, συνδέεται ένα καλώδιο δεδοµένων µε τις θύρες εισόδου του block. 72

73 Εικόνα 3.72 Random Block Τα δεδοµένα εξόδου του block είναι ο τυχαίος αριθµός που παράγεται και µπορεί να µεταφερθεί σε οποιοδήποτε σηµείο του προγράµµατος συνδέοντας το µέσω ενός καλωδίου δεδοµένων µε την τρίτη θύρα εξόδου(1) του Random Block. Επίσης µπορείτε να χρησιµοποιήσετε και τις τιµές ων ορίων µέσω των θυρών εξόδου τους Α και Β. Με την εισαγωγή του block στο πρόγραµµα εµφανίζεται στο κάτω µέρος της οθόνης της πλατφόρµας το πάνελ ρυθµίσεών του. Εικόνα 3.73 Πεδίο ρυθµίσεων Random Block Εδώ φαίνονται τα πεδία Α και Β που µπορείτε να πληκτρολογήσετε τα κατώτερα και ανώτερα όριο αντίστοιχα. Μπορείτε να εισάγετε ακόµα και αρνητικές τιµές. VARIABLE BLOCK Σκεφτείτε µία µεταβλητή σαν ένα χώρο που αποθηκεύονται τιµές στη µνήµη του ΝΧΤ. Άλλα blocks του προγράµµατος µπορούν να διαβάσουν τις τιµές αυτές, ή ακόµα και να τις αλλάξουν, συνδέοντας το block µε καλώδια δεδοµένων. Για να δηµιουργήσετε µια µεταβλητή, πρέπει πρώτα να επιλέξετε την Define Variable εντολή στο µενού Edit. Στο παράθυρο διαλόγου δώστε στη νέα µεταβλητή σας ένα σύντοµο και εύκολο στην αποµνηµόνευση όνοµα και ορίστε τον τύπο των δεδοµένων που θα κρατά η µεταβλητή(π.χ. κείµενο, αριθµό, ή λογική τιµή). Στη συνέχεια τραβήξτε ένα block µεταβλητής στο πρόγραµµα και επιλέξτε το όνοµα της µεταβλητής από το πάνελ του Variable block που εµφανίζεται στην οθόνη. Επιλέξτε είτε να "διαβάσετε" από τη µεταβλητή κάποια τιµή, είτε να "γράψετε" σε αυτήν µία. Επιλέγοντας να γράψετε σε µία µεταβλητή θα σας επιτραπεί να αλλάξετε την τιµή της, γράφοντας πάνω στην παλιά τιµή της τη νέα πληροφορία. Για να το κάνετε αυτό, πρέπει να 73

74 συνδέσετε ένα καλώδιο δεδοµένων στην θύρα εισόδου της µεταβλητής, που θα µεταφέρει την νέα τιµή. Μπορείτε να δώσετε στην µεταβλητή µία αρχική µόνιµη τιµή πληκτρολογώντας την τιµή που επιθυµείτε στο ειδικό πεδίο στο πάνελ του block. Αν θέλετε να αλλάξετε τον τύπο δεδοµένων ή το όνοµα της µεταβλητής, αυτό γίνεται πηγαίνοντας πάλι στην Define Variable επιλογή του µενού Edit. Χρησιµοποιώντας Μεταβλητές. Η τιµή µίας µεταβλητής µπορεί να αλλάξει πολλές φορές. Για παράδειγµα, µπορείτε να δηµιουργήσετε µία µεταβλητή που θα κρατά την τιµή ενός αισθητήρα φωτός. Αυτό µπορεί να γίνει αν ορίσετε τη µεταβλητή σας στο πρόγραµµα ως "write" και συνδέσετε στην θύρα εισόδου της ένα καλώδιο δεδοµένων που θα συνδέεται και µε τη θύρα εξόδου ενός αισθητήρα φωτός. Με αυτό τον τρόπο θα καταγράφετε το ποσό του φωτός που εντοπίζει ο αισθητήρας. Αν σε άλλο σηµείο του προγράµµατος θέσετε τη µεταβλητή αυτή ως "read" µπορείτε πάλι συνδέοντας στη θύρα εξόδου της ένα καλώδιο δεδοµένων να µεταφέρετε την τιµή που έχετε καταγράψει σε όποιο σηµείο του προγράµµατος χρειάζεται. Εικόνα 3.74 Variable Block Στη θύρα εξόδου (1) της µεταβλητής πρέπει να συνδέσετε ένα καλώδιο δεδοµένων το οποίο θα καταλήγει στο block που χρειάζεται την τιµή της, ώστε να µπορέσει αυτό να τη διαβάσει. Για να γράψετε µια νέα πληροφορία στη µεταβλητή, πρέπει να συνδέσετε και στην θύρα εισόδου ένα καλώδιο δεδοµένων που θα φέρει την προς εγγραφή τιµή. Με την εισαγωγή του Block στο πρόγραµµα εµφανίζεται το παρακάτω πάνελ στο κάτω µέρος του παραθύρου της εφαρµογής. Εικόνα 3.75 Πεδίο ρυθµίσεων Variable Block Στη λίστα List(1), επιλέγετε το είδος της µεταβλητής που επιθυµείτε και έχετε ήδη δηµιουργήσει µε την επιλογή του Define Variable στο µενού Edit. 74

75 Στην περιοχή Action(2) µπορείτε να επιλέξετε Read,αν θέλετε απλά να διαβάσετε µία τιµή από τη µεταβλητή σας ή Write για να γράψετε και µία νέα πληροφορία σε αυτή, δηλαδή να της δώσετε µία τιµή. Αν ο τύπος της µεταβλητής είναι κείµενο ή αριθµός, µπορείτε εκτός της θύρας εισόδου, να εισάγετε µία τιµή πληκτρολογώντας την στο πεδίο Value(3). Αν η τιµή είναι λογική µπορείτε απλά να επιλέξετε την τιµή true ή false. Αν έχετε συνδέσει την θύρα εισόδου µε καλώδιο δεδοµένων η µεταβλητή θα πάρει την δυναµική τιµή από το καλώδιο και όχι αυτήν που θα έχετε εισάγει στο πεδίο. ιαµοίραση πληροφοριών στο πρόγραµµα και ένα My Block(τµήµα κώδικα που έχετε αποθηκεύσει και χρησιµοποιείτε µέσα σε άλλα προγράµµατα ως Block): Αν θέλετε να µοιράσετε δεδοµένα ανάµεσα στο κυρίως πρόγραµµα και ένα My Block πρέπει να: Ορίσετε µία µεταβλητή µε το ίδιο όνοµα και τύπο τόσο στο κυρίως πρόγραµµα όσο και στο My Block. Να χρησιµοποιήσετε αυτή τη µεταβλητή µέσα σε ένα Variable Block τόσο στο κυρίως πρόγραµµα όσο και στο My Block. Όπου κι αν χρησιµοποιηθεί αυτή η µεταβλητή, σε οποιοδήποτε µέρος του προγράµµατος, θα διαβάζει και θα γράφει δεδοµένα στην ίδια θέση µνήµης. Παράδειγµα της λειτουργίας των Data Blocks Έστω ότι θέλουµε να παραχθεί µία τιµή από το Random block που να βρίσκεται ανάµεσα στα όριο Στη συνέχεια, αφού θέσουµε αυτή την τιµή σε µία µεταβλητή, θα την ελέγξουµε κι αν είναι µεγαλύτερη από 5 το ροµπότ θα εκτελεί κίνηση µπροστά, ενώ αν είναι µικρότερη από 5 θα εκτελεί κίνηση προς πίσω. Χρησιµοποιούµε ένα Random block για την παραγωγή µίας τυχαίας τιµής, θέτουµε την τυχαία τιµή στο Variable Block που έχουµε δηµιουργήσει και µε ένα Logic block κάνουµε τον έλεγχο. Τα αποτελέσµατα του ελέγχου µεταφέρονται σε ένα Switch block όπου εκτελείται η αντίστοιχη κίνηση. 75

76 3.5.6 Advanced Blocks Τέλος, έχουµε την κατηγορία Advanced µε τα Blocks Text, Number To Text, Keep Alive, File Access, Calibrate και Reset Motor. Ακολουθεί η αναλυτική τους παρουσίαση. TEXT BLOCK Το Text Block µπορεί να συνδέσει κείµενα που περιέχουν χαρακτήρες, αριθµούς ή σύµβολα. Τα κείµενα είναι σηµαντικά για τα NXT αφού µόνο αυτά µπορούν να προβληθούν στη οθόνη. Το Block αυτό µπορεί να συνδέσει τρία κοµµάτια κειµένου και να δηµιουργήσει ένα ενιαίο µεγαλύτερο κείµενο. Οι παραγόµενοι από το ροµπότ αριθµοί πρέπει πρώτα να µετατραπούν σε κείµενο και στη συνέχεια µπορούν να χρησιµοποιηθούν και από αυτό το block. Τα τρία κοµµάτια κειµένου µπορούν είτε να πληκτρολογηθούν στα αντίστοιχα πεδία του πάνελ του block είτε να εισαχθούν δυναµικά µέσω καλωδίων δεδοµένων στις θύρες εισόδου του Block. Εικόνα 3.76 Text Block Το Text Block διαθέτει τρείς θύρες εισόδου και τέσσερις εξόδου. Στις θύρες εισόδου αναµένονται τα κοµµάτια του κειµένου που θα συνθέσουν το τελικό κείµενο. Τα κοµµάτια αυτά µπορούν να περάσουν και σε άλλα σηµεία του προγράµµατος µέσω των πρώτων τριών θυρών εξόδου του block. Η τέταρτη θύρα εξόδου φέρει το συνολικό κείµενο. Το πάνελ ρυθµίσεων του Block είναι το παρακάτω: Εικόνα 3.77 Πεδίο ρυθµίσεων Text Block Αν τα κοµµάτια κειµένου δεν περάσουν δυναµικά µε καλώδια στο block αναµένεται να πληκτρολογηθούν στα τρία πεδία Α, Β και C. 76

77 NUMBER TO TEXT BLOCK To Number To Text Block παίρνει έναν αριθµό, όπως για παράδειγµα την ένδειξη ενός αισθητήρα, και τον µετατρέπει σε µορφή κειµένου ώστε να µπορεί αυτή να προβληθεί στην οθόνη του NXT. Ο αριθµός αυτός µπορεί είτε να πληκτρολογηθεί στο πάνελ του block είτε να εισέλθει δυναµικά µέσω ενός καλωδίου δεδοµένων. Οι διάφοροι αριθµοί που παράγονται από το NXT στη διάρκεια του προγράµµατος δεν θεωρούνται ως κείµενο και δεν µπορούν να προβληθούν στην οθόνη του απευθείας γιατί αυτή προβάλει µόνο κείµενο. Εποµένως πρέπει πρώτα να τους µετατρέψετε σε µορφή κειµένου µε το Number To Text block. Όταν µετατρέπετε έναν αριθµό σε κείµενο, µπορείτε στη συνέχεια να τον προσθέσετε σε µία ολόκληρη πρόταση που θα προβληθεί στην οθόνη του NXT. Χρησιµοποιώντας και το Text Block µπορείτε να δηµιουργήσετε προτάσεις όπως : Η ρόδα του κινητήρα έκανε 6 περιστροφές ή Ο αισθητήρας φωτός εντόπισε ποσότητα φωτός:30%. Σε αυτές τις προτάσεις οι αριθµοί 6 και 30 είχαν παραχθεί από το ροµπότ και µετατράπηκαν σε µορφή κειµένου µε το Number To Text Block πριν εισαχθούν στην υπόλοιπη πρόταση. Οι είσοδοι στο Number To Text Block µπορούν είτε να εισέλθουν δυναµικά µε καλώδια δεδοµένων είτε να πληκτρολογηθούν στο πάνελ του block. Το παραγόµενο κείµενο µεταφέρεται από την πύλη εξόδου του block όπου χρειαστεί στο υπόλοιπο πρόγραµµα. Εικόνα 3.78 Number To Text Block Το Number To Text Block διαθέτει µία πύλη εισόδου και δύο εξόδου. Στην πύλη εισόδου αναµένεται η τιµή προς επεξεργασία µέσω ενός καλωδίου δεδοµένων, αν δεν έχει ήδη πληκτρολογηθεί στο πάνελ του block. Η τιµή αυτή φέρεται και σε µία από τις δύο πύλες εξόδου σε περίπτωση που πρέπει να χρησιµοποιηθεί και αλλού. Η άλλη θύρα εξόδου φέρει την τιµή που έχει µετατραπεί σε κείµενο. Το πάνελ του block είναι το παρακάτω: Εικόνα 3.79 Πεδίο ρυθµίσεων Number To Text Block Στο πεδίο Number πληκτρολογείτε τον προς επεξεργασία αριθµό. 77

78 KEEP ALIVE BLOCK Το Keep Alive Block δεν επιτρέπει στο NXT να µπει στην κατάσταση αδράνειας. Προσθέστε αυτό το block στο πρόγραµµα αν πρόκειται να µην πραγµατοποιήσει καµία ενέργεια για µεγαλύτερο χρονικό διάστηµα από αυτό που µπορεί να περιµένει για να περάσει στην κατάσταση αδράνειας. Εικόνα 3.80 Keep Alive Block Το πάνελ του Keep Alive Block είναι το παρακάτω: Εικόνα 3.81 Πεδίο ρυθµίσεων Keep Alive Block Το Keep Alive Block δεν δέχεται καµία παράµετρο. FILE ACCESS BLOCK Με το File Access Block µπορείτε να αποθηκεύσετε πληροφορίες από το ροµπότ σε φακέλους στο NXT. Αφού γράψετε δεδοµένα σε ένα φάκελο, πρέπει να χρησιµοποιήσετε ένα δεύτερο File Access block για να κλείσετε το φάκελο πριν να τον διαβάσετε ή να τον διαγράψετε χρησιµοποιώντας ένα τρίτο File Access block. Για παράδειγµα, για να γράψετε σε ένα φάκελο κάποια δεδοµένα και στη συνέχεια να τα διαβάσετε από τον ίδιο φάκελο, πρέπει να κλείσετε τον φάκελο ανάµεσα σε αυτές τις δύο ενέργειες. Εποµένως θα χρειαστείτε τρία File Access blocks για να το πετύχετε αυτό: µε το πρώτο (µε την επιλογή Write) θα γράψετε τα δεδοµένα σε ένα φάκελο, µε το δεύτερο, που θα είναι τοποθετηµένο κάπου παρακάτω στον κώδικα, θα κλείνετε τον φάκελο που πριν γράψατε τα δεδοµένα, µε το τρίτο File Access block (µε την επιλογή Read) θα διαβάζετε τα δεδοµένα του φακέλου σας. Αυτά τα τρία block µπορούν είτε να βρίσκονται δίπλα το ένα στο άλλο µέσα στο πρόγραµµα είτε να είναι διαχωρισµένα σε διάφορα σηµεία. Η εγγραφή σε ένα φάκελο που ήδη υπάρχει, θα προσθέσει δεδοµένα στο τέλος του φακέλου, δεν πρόκειται να διαγράψει υπάρχοντα δεδοµένα. Αν θέλετε να γράψετε σε ένα φάκελο νέα δεδοµένα παραλείποντας τα παλιά, πρέπει πρώτα να χρησιµοποιήσετε ένα File Access block για να διαγράψετε το φάκελο, και στη συνέχεια µε άλλο ένα να γράψετε δεδοµένα σε νέο φάκελο µε το ίδιο όνοµα. 78

79 Εικόνα 3.82 File Access Block Η εικόνα (1) δείχνει αν το block χρησιµοποιείται για Εγγραφή, Ανάγνωση, Κλείσιµο ή ιαγραφή ενός φακέλου. Το πάνελ ρυθµίσεων του Block είναι το παρακάτω: Εικόνα 3.83 Πεδίο ρυθµίσεων File Access Block Χρησιµοποιήστε το µενού στην περιοχή Action (1) για να ορίσετε αν επιθυµείτε να γράψετε, να διαβάσετε, να κλείσετε ή να διαγράψετε ένα φάκελο. Χρησιµοποιήστε το πεδίο Name και File (2) για να δώσετε ένα όνοµα σε νέο φάκελο ή να ανοίξετε κάποιον που ήδη υπάρχει αντίστοιχα. Επιλέξτε στο πεδίο Type (3) αν ο φάκελος θα περιέχει αριθµητικά δεδοµένα ή κείµενο. CALIBRATION BLOCK Μπορείτε να χρησιµοποιήσετε το Calibration Block για να µετρήσετε την µέγιστη και ελάχιστη τιµή που εντοπίζουν οι αισθητήρες ήχου και φωτός. Θα χρειαστείτε δύο Calibration Blocks για να πάρετε πλήρεις µετρήσεις ενός αισθητήρα. Ένα για να ορίσετε την ελάχιστη τιµή του και ένα για τη µέγιστη. εν χρειάζεται να ορίζετε πάντα και τις δύο τιµές(ελάχιστη και µέγιστη), αφού εάν ορίσετε µόνο τη µία ή default τιµή θα χρησιµοποιηθεί για την άλλη. Ένας τρόπος να µετρήσετε πλήρως τις ενδείξεις ενός αισθητήρα ήχου ή φωτός είναι ο παρακάτω: Χρησιµοποιήστε δύο Calibration blocks στην αρχή του προγράµµατος µε ένα Wait block(ορίστε αναµονή για έναν αισθητήρα αφής) να ακολουθεί το καθένα. Αν για παράδειγµα κάνετε µετρήσεις για έναν αισθητήρα φωτός και έχετε ορίσει το πρώτο Calibration block να µετρά την ελάχιστη τιµή και το δεύτερο τη µέγιστη η διαδικασία που θα συµβεί θα είναι η εξής: Τοποθετήστε το ροµπότ στη σκοτεινότερη περιοχή που θέλετε νε µετρήσετε και πατήστε τον αισθητήρα αφής. Έτσι θα µετρηθεί η ελάχιστη τιµή του αισθητήρα φωτός. 79

80 Στη συνέχεια τοποθετήστε το ροµπότ στην φωτεινότερη περιοχή που θέλετε να µετρήσετε και πατήστε και πάλι τον αισθητήρα αφής. Έτσι θα µετρηθεί η µέγιστη τιµή του αισθητήρα φωτός και το ροµπότ θα συνεχίσει να εκτελεί το υπόλοιπο του προγράµµατος σας. Μπορείτε επίσης να µετρήσετε τις τιµές ενός αισθητήρα τοποθετώντας το Calibration block σε συγκεκριµένες θέσεις του προγράµµατος. Για παράδειγµα, αν το ροµπότ, µε έναν αισθητήρα φωτός, πρόκειται να περάσει κάτω από ένα τραπέζι(σκοτεινότερη περιοχή που θα µετρήσει ο αισθητήρας), µπορείτε να τοποθετήσετε ένα Calibration block (που θα µετρά την ελάχιστη τιµή του αισθητήρα φωτός), σε τέτοια θέση στο πρόγραµµα που θα ενεργοποιείται ακριβώς όταν το ροµπότ περνά κάτω από το τραπέζι. Σηµείωση: Οι µετρήσεις γίνονται ανά αισθητήρα και όχι ανά θύρα εισόδου. ηλαδή, αν χρησιµοποιήσετε το Block για να διαβάσετε την τιµή του αισθητήρα φωτός στην είσοδο 2 και την καταγράψετε ως µέγιστη τιµή, τότε όλοι οι αισθητήρες φωτός θα χρησιµοποιούν αυτή την τιµή ως µέγιστη, ακόµα κι αν δεν χρησιµοποιούν την είσοδο 2. Εικόνα 3.84 Calibration Block Το Calibration Block διαθέτει τρεις θύρες εισόδου και τρεις εξόδου (1) από όπου µια σειρά παραµέτρων µπορούν να ορισθούν δυναµικά. Το πάνελ του Block είναι το παρακάτω: Εικόνα 3.85 Πεδίο ρυθµίσεων Calibration Block Στο πεδίο Port επιλέγετε την είσοδο µε την οποία είναι συνδεδεµένος ο αισθητήρας, τις τιµές του οποίου θέλετε να µετρήσετε. Στο µενού Sensor επιλέγετε το είδος του αισθητήρα που θέλετε να ελέγξετε (ήχου ή φωτός). Στο µενού Action επιλέγετε το αν θέλετε να κάνετε µία νέα µέτρηση ή να διαγράψετε µία προηγούµενη τιµή. 80

81 Τέλος, στο πεδίο Value ορίζετε αν η τιµή που θα µετρηθεί θα τεθεί ως ελάχιστη ή µέγιστη τιµή του αισθητήρα. RESET MOTOR BLOCK Οι κινητήρες του ροµπότ έχουν έναν µηχανισµό αυτόµατης διόρθωσης λαθών που βοηθά το ροµπότ να κινείται µε ακρίβεια. Παρ όλα αυτά ίσως κάποιες φορές θέλετε να ακυρώσετε αυτό το µηχανισµό. Αυτό µπορείτε να το κάνετε µε το Reset Motor Block. Εικόνα 3.86 Reset Motor Block Τα γράµµατα πάνω δεξιά στο block (1) δείχνουν ποιοι κινητήρες θα επηρεαστούν από το block. Το πάνελ που εµφανίζεται µε την εισαγωγή του block στο πρόγραµµα είναι το παρακάτω: Εικόνα 3.87 Πεδίο ρυθµίσεων Reset Motor Block Στο πεδίο Port (1) επιλέγετε τις θύρες που είναι συνδεδεµένοι οι κινητήρες που επιθυµείτε να επηρεαστούν. 81

82 3.6 MY BLOCK Η δυνατότητα δηµιουργίας My Blocks επιτρέπει την επιλογή ενός αριθµού Blocks από το πρόγραµµά σας, την οµαδοποίηση τους και τη δηµιουργία ενός νέου block µε χαρακτηριστικά που έχετε θέσει οι ίδιοι. Για παράδειγµα, ένα My Block που δηµιουργήσατε µπορεί να ονοµαστεί «Κίνηση Ροµπότ» και να περιέχει ένα Move Block, που θα ελέγχει τους κινητήρες του ροµπότ, µαζί µε ένα Sound Block, που θα αναπαράγει έναν ήχο όταν το ροµπότ έχει διανύσει µία ορισµένη απόσταση. Όταν δηµιουργείτε ένα νέο πρόγραµµα χρησιµοποιώντας το ίδιο ροµπότ, µπορείτε απλά να εισάγετε το block «Κίνηση Ροµπότ» από την παλέτα Custom και έτσι δεν θα χρειάζεται να ξαναδηµιουργήσετε αυτό το τµήµα του προγράµµατος, γιατί θα έχετε ήδη αποθηκευµένες όλες τις παραµέτρους σε αυτό το My Block. Με τον καιρό θα µπορέσετε να δηµιουργήσετε βιβλιοθήκη από δικά σας MY Blocks, την οποία θα χρησιµοποιείτε σε άλλα προγράµµατα ή θα διευκολύνετε άλλους προγραµµατιστές τις πλατφόρµας. ηµιουργώντας ένα My Block 1.Πρώτα επιλέξτε έναν αριθµό από blocks που έχουν µια κοινή υπόσταση. Όπως και στο παραπάνω παράδειγµα, µπορείτε να επιλέξετε µία σειρά από blocks που να ελέγχουν την κίνηση του ροµπότ και να τα οµαδοποιήσετε σε ένα My Block. 2.Επιλέξτε τα blocks τοποθετώντας το ποντίκι στην µία γωνία ενός νοητού παραλληλογράµµου που θα περικλύσει όλα τα επιθυµητά blocks που θα συµµετέχουν στη δηµιουργία του My Block. Κρατήστε το αριστερό πλήκτρο του ποντικιού πατηµένο και σύρετε το στη απέναντι γωνία του νοητού παραλληλογράµµου, περικλείοντας τα blocks. Όταν αφήσετε το πλήκτρο του ποντικιού, όλα τα blocks του νέου My Block θα έχουν επιλεγεί. Θυµηθείτε ότι στην επιλογή µέρους ενός block θα συµπεριλαµβάνεται και αυτό στο αποτέλεσµα. Εικόνα 3.88 Επιλογή πολλών Blocks 3. Με τα blocks επιλεγµένα, πηγαίνετε στο µενού Edit στην κορυφή της επιφάνειας του λογισµικού και επιλέξτε τον εντολή Make a New My Block. Στη συνέχεια θα ανοίξει το παρακάτω παράθυρο: 82

83 Εικόνα 3.89 Παράθυρο My Block Builder 4. ώστε στο νέο My Block ένα όνοµα και γράψτε µια σύντοµη περιγραφή του τι κάνει. Για παράδειγµα «Αυτό το block ελέγχει τους κινητήρες ενός ροµπότ και αναπαράγει ένα ήχο όταν το ροµπότ µετακινηθεί κατά ένα µέτρο.». Επιλέξτε το Next για να µεταβείτε στο επόµενο βήµα. Εικόνα 3.90 Σχηµατισµός εικονιδίου νέου My Block 5. Στη συνέχεια σχεδιάστε το εικονίδιο του νέου My Block σας. Χρησιµοποιήστε το ποντίκι για να σύρετε ένα ή δύο εικονίδια µέσα στο σχετικό πλαίσιο. Το block δεξιά του πλαισίου σχεδίασης δείχνει 83

84 πως θα φαίνεται το block µετά την ολοκλήρωση της διαδικασίας. Με τα βέλη του πληκτρολόγιου µπορείτε να ρυθµίσετε τη θέση των εικονιδίων µέσα στο πλαίσιο σχεδίασης. Επιλέξτε το Finish όταν τελειώσετε. Το νέο My Block σας θα είναι διαθέσιµο πλέον στην παλέτα Custom. Εικόνα 3.91 Παλέτα Custom Αλλαγές σε ένα υπάρχων My Block: Αν θέλετε να αλλάξετε τις δυνατότητες ενός My Block, µπορείτε να αλλάξετε τα blocks που περιέχει είτε κάνοντας διπλό κλικ στο My Block, είτε επιλέγοντας την εντολή Edit Selected My Block από το µενού Edit. Αν απλά θέλετε να αλλάξετε την εικόνα ενός My Block, επιλέξτε το και πηγαίνετε στην εντολή Edit My Block Icon από το µενού Edit. ιαχείριση παλέτας Custom: Μπορείτε να προσθέσετε και να διαγράψετε My Blocks από την παλέτα Custom επιλέγοντας την εντολή Manage Custom Palette από το µενού Edit. Για να στείλετε ένα My Block σε κάποιον φίλο σας, φτιάξτε ένα αντίγραφο από το My Block που επιθυµείτε και επισυνάψτε το σε ένα µήνυµα ηλεκτρονικού ταχυδροµείου. Αν λάβετε ένα My Block από ένα φίλο σας, επιλέξτε την εντολή Manage Custom Palette και σύρετε το νέο My Block στον φάκελο των My Blocks. Μπορείτε να δηµιουργήσετε ακόµα και υπο-παλέτες στην παλέτα Custom µε την προσθήκη νέων φακέλων στο φάκελο των Blocks. 84

85 ΚΕΦΑΛΑΙΟ 4:ΦΥΛΛΑ ΕΡΓΑΣΙΑΣ ΚΑΙ ΣΧΕ ΙΑ ΜΑΘΗΜΑΤΟΣ ΓΙΑ ΤΗΝ ΠΛΑΤΦΟΡΜΑ NXT SOFTWARE. Στην παρακάτω ενότητα αναπτύσσονται φύλλα εργασίας και σχέδια µαθήµατος για την εισαγωγή της πλατφόρµας σε µία τάξη σχολείου και την εξοικείωση των µαθητών µε έννοιες προγραµµατισµού µε τη βοήθεια αυτής. Τα φύλλα εργασίας µπορούν να µοιραστούν στα παιδία και ο καθηγητής µε βοηθό τα σχέδια µαθήµατος να ξεκινήσει τις δραστηριότητες. Στο πρώτο φύλλο γίνεται η εισαγωγή στο νέο λογισµικό και η αρχική εξοικείωση των µαθητών µε αυτό. Το επόµενο φύλλο εργασίας αναλύει την έννοια της µεταβλητής στον προγραµµατισµό, µέσα πάντα από το λογισµικό NXT Software. Το τρίτο φύλλο εργασίας έχει ως θέµα την εξοικείωση µε την έννοια της επιλογής. Τα παιδιά µαθαίνουν τη νέα δοµή καθώς και τις δυνατότητες που προσφέρει η πλατφόρµα. Τέλος, η ενότητα ολοκληρώνεται µε το φύλλο εργασίας για την έννοια της επανάληψης. Κάθε φύλλο εργασίας συνοδεύεται από το αντίστοιχο σχέδιο µαθήµατος που µπορεί να χρησιµοποιηθεί ως οδηγός για τους καθηγητές, αφού περιέχει τόσο τους στόχους του µαθήµατος όσο και βήµατα κλειδιά για την ολοκλήρωση του και λύσεις όλων των σχετικών ασκήσεων. 85

86 4.1 ΕΞΟΙΚΕΙΩΣΗ ΜΕ ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΟΥ NXT SOFTWARE Φύλλο εργασίας για την εξοικείωση µε το περιβάλλον του NXT Software 86

87 ΜΑΘΗΜΑ:.. ΘΕΜΑ: Τα πρώτα βήµατα του ροµπότ. (Εξοικείωση µε το περιβάλλον του NXT Software) ΗΜ/ΝΙΑ: _ / _ / 200_ 1.Εισαγωγή στο περιβάλλον του NXT Software Ανοίγουµε την εφαρµογή µας κάνοντας διπλό κλικ στην συντόµευση που βρίσκεται στην επιφάνεια εργασίας ή από τα προγράµµατα στο µενού Έναρξη. Το παράθυρο που εµφανίζεται είναι το παρακάτω: Στο πεδίο Start New Program δίνουµε όνοµα στο πρόγραµµα που πρόκειται να δηµιουργήσουµε. ώστε το όνοµα: ΑΣΚΗΣΗ1 για το πρώτο σας πρόγραµµα και πατήστε το πλήκτρο Go. 87

88 Με αυτό τον τρόπο ανοίγει το κεντρικό παράθυρο της εφαρµογής µας όπου θα γράψουµε το πρόγραµµα µας. Στο αριστερό µέρος βρίσκονται παλέτες που περιέχουν blocks. Τα blocks είναι έτοιµα κοµµάτια κώδικα, σε γραφική µορφή, µε τα οποία συνθέτουµε το πρόγραµµα µας. Υπάρχουν πολλά blocks που προσφέρει η εφαρµογή, αλλά εµείς θα εργαστούµε µε τα blocks στην παλέτα Common. Η λειτουργία των blocks εξαρτάται από τη ρύθµιση των παραµέτρων τους. Στο κάτω µέρος του παράθυρου που έχει ανοίξει, βρίσκεται η περιοχή που αλλάζουν οι παράµετροι σε ένα block που έχουµε επιλέξει. Στην περιοχή µε το πλέγµα, εισάγουµε µε drag and drop τα blocks, ώστε να δηµιουργήσουµε το πρόγραµµα µας. Κάτω και δεξιά στην περιοχή δηµιουργίας του προγράµµατος βρίσκονται τα πλήκτρα που µεταφέρουν το πρόγραµµα µας στο ροµπότ. 88

89 2.Τα BLOCKS στην παλέτα Common. Αφού µάθαµε τα βασικά συστατικά της εφαρµογής προχωρούµε σε µία πρώτη εξοικείωση µε τα blocks της παλέτας Common. Για την επίλυση των παρακάτω δραστηριοτήτων είναι απαραίτητοι 2 ρόλοι σε κάθε οµάδα, ο ρόλος του προγραµµατιστή και ο ρόλος του αναλυτή. Στο βήµα της εξοικείωσης ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται. Ο προγραµµατιστής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή για να ολοκληρωθεί η ενότητα. Στο βήµα των ασκήσεων ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, τόσο µε τις ενέργειες του προγραµµατιστή για την επίλυση της άσκησης όσο και µε τις απαντήσεις του στα ερωτήµατα. Οι ρόλοι πολλές φορές θα εναλλάσσονται, δηλαδή ο αναλυτής θα παίρνει το ρόλο του προγραµµατιστή και ο προγραµµατιστής του αναλυτή, ανάλογα µε τις υποδείξεις της κάθε δραστηριότητας. Παρακάτω γράψτε τα ονόµατα σας: Μέλος Α: Μέλος Β: 89

90 2.1 Μαθαίνοντας στο ροµπότ να περπατά µε το Move Block Τι είναι το Move Block; Ξεκινάµε µε την εξοικείωση µε το move block. Το block αυτό το χρησιµοποιούµε για να κινήσουµε το ροµπότ Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Έστω για παράδειγµα ότι θέλουµε το ροµπότ µας να µετακινηθεί µπροστά, σε ευθεία για 5 δευτερόλεπτα. Για να το πετύχουµε αυτό πρέπει να: Εισάγουµε µε τη λειτουργία drag and drop, στην επιφάνεια δηµιουργίας του προγράµµατος ένα move block από την παλέτα Common. Στην περιοχή παραµέτρων του move block κάνουµε τις εξής ρυθµίσεις: Port: Επιλέγουµε τις θύρες που έχουµε συνδέσει τους κινητήρες στο ροµπότ. Direction: Το ροµπότ µας θέλουµε να κινηθεί µπροστά, εποµένως επιλέγουµε το πρώτο βελάκι. Το δεύτερο προκαλεί κίνηση προς πίσω, ενώ το τρίτο σταµατά την κίνηση του ροµπότ. 90

91 Steering: Θέλουµε η κίνηση να είναι ευθεία, εποµένως δεν αλλάζουµε την προεπιλεγµένη τιµή. Αν θα θέλαµε το ροµπότ να στρίβει, θα τοποθετούσαµε στην επιθυµητή τιµή το δείκτη. Power: ίνουµε την τιµή 20 στην ταχύτητα της κίνησης του ροµπότ. Duration: Θέλουµε το ροµπότ να κινηθεί για 5 δευτερόλεπτα, εποµένως στο δεύτερο µενού επιλέγουµε το Seconds και στο πρώτο πεδίο δίνουµε την τιµή 5. Αφού συνδέσουµε το ροµπότ στον υπολογιστή µας πατάµε το πλήκτρο Download and Run που βρίσκεται κάτω δεξιά στο παράθυρο δηµιουργίας του προγράµµατος. Ακολουθώντας τα παραπάνω βήµατα εκτελέστε τη δραστηριότητα και καταγράψτε τα συµπεράσµατα και την άποψη σας για τα ακόλουθα θέµατα: Συζητήστε µαζί: 1.Κινήθηκε πράγµατι το ροµπότ σε ευθεία για 5 δευτερόλεπτα; 2.Αν στο πεδίο Port ένας συµµαθητής σας δεν έδινε τις σωστές επιλογές, τι πιστεύετε ότι θα γινόταν; 1 2 Ερώτηση: 3.Αν επιθυµούσαµε το ροµπότ να κινηθεί γρηγορότερα, σε ποιο πεδίο θα έπρεπε να αλλάξουµε τιµή και ποια θα ήταν η νέα τιµή που θα δίναµε; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 91

92 Συµπέρασµα οµάδας στην διαφωνία: Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Ας εκτελέσουµε τώρα µία µεγαλύτερη άσκηση. Στο µενού File επιλέξτε το New και στο νέο παράθυρο δηµιουργήστε το παρακάτω πρόγραµµα µε παράθεση move blocks το ένα µετά το άλλο. Έστω ότι θέλουµε το ροµπότ µας να πραγµατοποιήσει την παρακάτω κίνηση: Να προχωρήσει µπροστά για 5 δευτερόλεπτα, στη συνέχεια να στρίψει αριστερά, να προχωρήσει άλλα 5 δευτερόλεπτα, να στρίψει αριστερά αλλά σε µικρότερο βαθµό από την προηγούµενη στροφή και τέλος να προχωρήσει άλλα δύο δευτερόλεπτα. Ερώτηση: Περιγράψτε πόσα move block θα πρέπει να χρησιµοποιήσουµε και τι παραµέτρους να ορίσουµε σε αυτά. Απάντηση Προγραµµατιστή: 92

93 Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Στη συνέχεια φορτώστε την άσκηση στο ροµπότ και ελέγξτε αν πραγµατοποιείται η επιθυµητή κίνηση. 2.2 Πως το ροµπότ αποστηθίζει κινήσεις µε το Record/Play Block Αποθηκεύστε τα προγράµµατα που έχετε δηµιουργήσει επιλέγοντας το save στο µενού File και δώστε τα ονόµατα ΑΣΚΗΣΗ1 και ΑΣΚΗΣΗ1α στο πρώτο και στο δεύτερο αντίστοιχα. Κλείστε τις καρτέλες αυτών των ασκήσεων πατώντας στο µενού File το Close και στη συνέχεια ανοίξτε µία νέα καρτέλα για την δηµιουργία των επόµενων ασκήσεων. ώστε στη νέα καρτέλα το όνοµα ΑΣΚΗΣΗ2. 93

94 2.2.1 Τι κάνει ένα Record/Play Block; Με το block Record/Play µπορούµε να καταγράψουµε κάποιες κινήσεις του ροµπότ και στη συνέχεια αφού τις αποθηκεύσουµε να τις αναπαράγουµε. Στην ουσία αποµνηµονεύεται πόσες φορές έχει κινηθεί ο κάθε κινητήρας και κατά την αναπαραγωγή επαναλαµβάνεται ο αριθµός των κινήσεων Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας δούµε τώρα πως λειτουργεί το Record/Play Block. Αρχικά εισάγουµε ένα Record/Play block στο πρόγραµµα µας. Στη συνέχεια στην περιοχή παραµέτρων του Record/Play block κάνουµε τις παρακάτω ρυθµίσεις: Action: Αρχικά θέλουµε να καταγράψουµε την τετραγωνική κίνηση, άρα επιλέγουµε το Record. Name: ίνουµε ένα όνοµα στην καταγραφή µας. Εδώ καταγράφουµε µία τετραγωνική κίνηση οπότε µπορούµε να την ονοµάσουµε tetragwno. Recording: Εδώ θα πρέπει να τσεκάρουµε τις θύρες στις οποίες έχουµε συνδέσει τους κινητήρες. Time: Εισάγουµε τη διάρκεια της καταγραφής σε δευτερόλεπτα. ίνουµε την τιµή 5. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το, καταγράψτε την τετραγωνική κίνηση και αποθηκεύστε το πρόγραµµα. Στη συνέχεια σε µία νέα καρτέλα εισάγετε και πάλι ένα Record/Play block και αυτή τη φορά επιλέξτε στις παραµέτρους το Play και δώστε το όνοµα tetragwno. Εδώ στην ουσία ζητάµε να εκτελεστεί η καταγραφή µας. 94

95 Φορτώστε το πρόγραµµα στο ροµπότ και εκτελέστε το. Συζητήστε µαζί: 1.Πραγµατοποιείται η τετραγωνική κίνηση που είχατε καταγράψει στο πρώτο Record/Play Block; Ερωτήσεις: 2.Αν επιθυµούσαµε να καταγράψουµε µία µεγαλύτερη κίνηση, ποια παράµετρο θα έπρεπε να αλλάξουµε και τι τιµή να της δώσουµε; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 95

96 Συµπέρασµα οµάδας στην διαφωνία: Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Έστω ότι επιθυµούµε το ροµπότ να εκτελέσει µία τετραγωνική κίνηση καθώς προχωρά, αλλά την κίνηση αυτή, να την έχουµε καταγράψει ώστε να καθορίσουµε ακριβώς τον τρόπο που επιθυµούµε να πραγµατοποιηθεί. Ερώτηση: 1.Πως θα µπορούσαµε να συνδυάσουµε τις ενέργειες της εξοικείωσης σε ένα πρόγραµµα ώστε να καταγράφουµε την κίνηση και το ροµπότ µας να την εκτελέσει καθώς προχωρά; Απάντηση Προγραµµατιστή: 96

97 Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Εκτελέστε την άσκηση στο ροµπότ και ελέγξτε αν πραγµατοποιείται η τετραγωνική κίνηση, όπως την καταγράψατε στην αρχή του προγράµµατος. 97

98 2.3 Το ροµπότ µιλάει και δείχνει µηνύµατα µε τα Sound Block και Display Block Τι είναι τα Sound και Display Blocks; Αν θέλουµε να αναπαράγουµε κάποιον ήχο χρησιµοποιούµε το Sound block. Αν θέλουµε να εµφανίσουµε στην οθόνη του ροµπότ µια εικόνα χρησιµοποιούµε το Display Block Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Από το µενού File ανοίγουµε µε το Open το πρόγραµµα ΑΣΚΗΣΗ1, που έχουµε ήδη δηµιουργήσει. Μετά το move block, εισάγουµε ένα Sound Block. Στην περιοχή παραµέτρων του κάνουµε τις παρακάτω ρυθµίσεις: Action: Επιλέγουµε το Sound File. Control: Θέλουµε να ακούσουµε έναν ήχο, άρα επιλέγουµε το Play. Volume: Ρυθµίζουµε την ένταση του ήχου που θα ακουστεί. File: Επιλέγουµε την αναπαραγωγή του ήχου Forward. 98

99 Ερώτηση: 1.Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και καταγράψτε τις λειτουργίες που εκτελούνται. Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 99

100 Στο προηγούµενο παράδειγµα, πριν το Move Block τοποθετούµε ένα Display Block. Κάνουµε τις παρακάτω ρυθµίσεις στην περιοχή παραµέτρων του: Action: Επιλέγουµε το Image. File: Επιλέγουµε το Forward. Ερώτηση: 1.Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και καταγράψτε τις λειτουργίες που εκτελούνται. Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 100

101 Συµπέρασµα οµάδας στην διαφωνία: Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Έστω τώρα ότι θέλουµε στο παράδειγµα ΑΣΚΗΣΗ1α στην πρώτη στροφή να ακούγεται η κατεύθυνση στην οποία στρίβει το ροµπότ µας(δηλαδή left), ενώ στη δεύτερη να εµφανίζεται στην οθόνη η ένδειξη της αριστερής στροφής. Ερώτηση: 1.Ποια block πρέπει να προσθέσουµε στο παράδειγµά µας και σε ποια σηµεία; Απάντηση Προγραµµατιστή: 101

102 Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Εκτελέστε την άσκηση στο ροµπότ και ελέγξτε αν ακούγονται και εµφανίζονται τα κατάλληλα µηνύµατα στα σωστά σηµεία του προγράµµατος. 102

103 2.4 Το ροµπότ ελέγχει το περιβάλλον µε το Wait Block Ποια είναι η λειτουργία του Wait Block; To Wait block επιτρέπει στο ροµπότ να διαισθανθεί/ελέγξει µία συγκεκριµένη συνθήκη του περιβάλλοντος του πριν συνεχίσει τις ενέργειές του. Επιτρέπει να ορίσουµε κάποιες τιµές σε µεταβλητές των αισθητήρων τις οποίες το ροµπότ θα ελέγχει και ανάλογα θα συνεχίζει ή θα σταµατά την εκτέλεση του προγράµµατος µε βάση τις προϋποθέσεις που έχουµε θέσει. Πριν συνεχίσετε στις ασκήσεις εξοικείωσης, συζητήστε στην τάξη για τους αισθητήρες που διαθέτει το ροµπότ και δοκιµάστε να αποδώσετε τα χαρακτηριστικά του κάθε αισθητήρα µε τη βοήθεια του καθηγητή σας Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ανοίγουµε µία νέα καρτέλα και εισάγουµε δύο move blocks στα οποία δίνουµε την ιδιότητα να κινούνται για πάντα το πρώτο, επιλέγοντας στο πεδίο Duration το Unlimited και για δύο δευτερόλεπτα το δεύτερο. Το πρώτο move block επιλέγουµε να κινείται προς εµπρός, ενώ το δεύτερο προς πίσω. Στη συνέχεια, ανάµεσα στα δύο move blocks τοποθετούµε ένα wait block για έναν αισθητήρα αφής. Στο πεδίο παραµέτρων κάνουµε τις παρακάτω ρυθµίσεις: Port: Επιλέγουµε την θύρα στην οποία έχουµε συνδέσει τον αισθητήρα. Action: Επιλέγουµε το Pressed. 103

104 Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και καταγράψτε: Συζητήστε µαζί: 1.Τι γίνεται όταν πιέζουµε τον αισθητήρα αφής; 2.Ένας µαθητής επέλεξε λάθος θύρα εισόδου στο πεδίο port. Ποιο νοµίζετε ότι θα είναι το αποτέλεσµα; Ερώτηση: 3.Τι θα γίνει αν δεν πιέσουµε ποτέ τον αισθητήρα αφής; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 104

105 Συµπέρασµα οµάδας στην διαφωνία: Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Το ροµπότ κατά τη διάρκεια της κίνησης του συναντά πολλές φορές εµπόδια, όπως αντικείµενα ή τοίχους. Ποια τακτική θα µπορούσαµε να χρησιµοποιήσουµε για την αποφυγή αυτών των εµποδίων; Ερώτηση: 1.Περιγράψτε ένα σύντοµο πρόγραµµα µε το οποίο το ροµπότ θα µπορεί να αποφύγει κάποιο εµπόδιο και να συνεχίσει την κίνηση του. Απάντηση Προγραµµατιστή: 105

106 Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Εκτελέστε την άσκηση στο ροµπότ και ελέγξτε αν πράγµατι συναντώντας εµπόδιο το ροµπότ αλλάζει πορεία κίνησης και το αποφεύγει. 2.5 Επαναλήψεις κινήσεων µε το Loop Block Πότε χρησιµοποιούµε ένα Loop Block; To Loop block χρησιµοποιείται για να επαναλάβουµε τµήµατα κώδικα. Μπορούµε να επιλέξουµε τη συνθήκη που θα τερµατίζει το βρόγχο ανάλογα µε το χρόνο, τον αριθµό επαναλήψεων, µία λογική τιµή ή µε βάση τις τιµές εισόδου από έναν αισθητήρα. Επίσης µπορούµε να ορίσουµε να επαναλαµβάνεται ο βρόγχος για πάντα. 106

107 2.5.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ανοίγουµε το προηγούµενο παράδειγµα ΑΣΚΗΣΗ1α, στο οποίο έχουµε πλέον εισάγει και τα sound και display blocks. Εισάγουµε επίσης στο πρόγραµµα µας ένα Loop block, µέσα στο οποίο τοποθετούµε το πρόγραµµα µας. Η µεταφορά του προγράµµατος µέσα στο block γίνεται επιλέγοντας όλα τα blocks του προγράµµατος και µεταφέροντάς τα µε drag and drop µέσα στο loop block. Στη συνέχεια, στην περιοχή παραµέτρων του Loop Block κάνουµε τις παρακάτω ρυθµίσεις. Control: Επιλέγουµε το count, ώστε η επανάληψη να γίνει σε κάποιο ορισµένο αριθµό. Until: ίνουµε την τιµή 5, που σηµαίνει ότι ο βρόγχος µας θα εκτελεστεί 5 φορές. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε αν πράγµατι η επανάληψη θα εκτελεστεί 5 φορές. 107

108 Ερωτήσεις: 1.Τι θα γίνει αν στο πεδίο Count δώσουµε την τιµή 2; 2.Τι πρέπει να κάνουµε για να επαναληφθεί το πρόγραµµα για 30 δευτερόλεπτα; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ µε την απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 108

109 2.5.3 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Θέλουµε το ροµπότ να εκτελέσει µία τριγωνική κίνηση διανύοντας µετά από κάθε στροφή την ίδια απόσταση. Πώς θα µπορούσαµε να χρησιµοποιήσουµε το Loop Block σε µία τέτοια περίπτωση; Μπορείτε να σκεφτείτε έναν άλλο τρόπο να εκτελεστεί αυτή ή κίνηση; Συγκρίνετε τις δύο µεθόδους και διαπιστώστε: Ερωτήσεις: 1.Σε ποια περίπτωση χρησιµοποιούµε περισσότερα blocks; 2.Ποια περίπτωση θεωρείτε πιο πρακτική; Απάντηση Προγραµµατιστή: 1 2 Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ στην απάντηση. Γιατί:. 109

110 Συµπέρασµα οµάδας στην διαφωνία: Εκτελέστε την άσκηση στο ροµπότ και ελέγξτε αν εκτελείτε στις δύο περιπτώσεις η τριγωνική κίνηση και διαπιστώστε πότε καταβάλατε µεγαλύτερη προσπάθεια κατά την υλοποίηση του κώδικα. 110

111 2.6 Πως διαλέγει το ροµπότ τις ενέργειες του µε το Switch Block Τι είναι το Switch Block; Χρησιµοποιούµε το Switch Block για να επιλέξουµε να εκτελεστεί ένα από δύο τµήµατα κώδικα Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Σε µία νέα καρτέλα εισάγουµε ένα switch block. Στην περιοχή των παραµέτρων του κάνουµε τις ρυθµίσεις: Control: Επιλέγουµε Sensor γιατί θέλουµε ο έλεγχος της επανάληψης να γίνεται µε έναν αισθητήρα. Sensor: ιαλέγουµε έναν Touch Sensor. Port: Επιλέγουµε τη θύρα που έχουµε συνδέσει τον Touch Sensor. Action: Επιλέγουµε το Pressed. Στη συνέχεια, στο πάνω σκέλος του Switch Block εισάγουµε ένα move block για κίνηση µπροστά και ευθεία για 5 δευτερόλεπτα. Στο κάτω σκέλος εισάγουµε ένα move block για κίνηση πίσω και ευθεία για 5 δευτερόλεπτα. 111

112 Με αυτές τις ενέργειες αυτό που πετυχαίνουµε είναι, να κινηθεί το ροµπότ µπροστά για 5 δευτερόλεπτα αν ο αισθητήρας αφής είναι πιεσµένος, ενώ αν είναι ελεύθερος, θα κινηθεί για 5 δευτερόλεπτα µε κατεύθυνση προς πίσω. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Τι γίνεται όταν πατάµε τον αισθητήρα αφής; 2.Εκτελούνται οι σωστές ενέργειες στους κινητήρες ανάλογα µε την περίπτωση; 1 2 Ερωτήσεις: 3.Τι θα γίνει αν επιλέξουµε λάθος θύρα εισόδου στο Switch Block; 4.Πως µπορούµε να χρησιµοποιήσουµε άλλο αισθητήρα; Απάντηση Αναλυτή: 3 4. Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 112

113 Συµπέρασµα οµάδας στην διαφωνία: Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Έστω ότι δίνεται το παρακάτω τµήµα κώδικα: 113

114 Ερώτηση: 1.Πόσες φορές θα εκτελεστεί η επανάληψη; Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Ερώτηση: 2.Ποιοί αισθητήρες χρησιµοποιούνται; Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. 114

115 Συµπέρασµα οµάδας στην διαφωνία: Ερώτηση: 3.Σε ποιές θύρες εξόδου συνδέουµε τους κινητήρες; Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 115

116 Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Ερώτηση: 4.Ένας µαθητής ισχυρίζεται ότι πρέπει να συνδεθεί ο αισθητήρας φωτός στην θύρα εισόδου 2 και ο αισθητήρας αφής στην 1. Έχει δίκαιο; ικαιολογήστε την απάντηση σας. Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 116

117 Ερώτηση: 5.Περιγράψτε τι θα γίνει αν κάποιος πιέσει τον αισθητήρα αφής: Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία:. Ερώτηση: 6.Μπορείτε να σκεφτείτε που θα µπορούσαµε να χρησιµοποιήσουµε το παραπάνω τµήµα κώδικα; Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: 117

118 Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 118

119 3.Συνολική ραστηριότητα Υλοποιήστε ως οµάδα τα παρακάτω βήµατα: Κατανοµή ρόλων: 1 ο και 2 ο Βήµα: Μέλος Α. 3 ο και 4 ο Βήµα: Μέλος Β. 1 ο Βήµα: Χρησιµοποιήστε ένα Record/Play Block και καταγράψτε µία κυκλική κίνηση. ηµιουργήστε ένα πρόγραµµα µε το οποίο το ροµπότ καθώς θα κινείται ευθεία, θα εκτελεί µία κυκλική κίνηση όµοια µε αυτήν που καταγράψατε και θα συνεχίζει την κίνησή του. 2 ο Βήµα: Στο πρόγραµµα που δηµιουργήσατε προσθέστε µετά την κυκλική κίνηση ηχητικό µήνυµα που δηλώνει τη φορά της στροφής και στο τέλος του προγράµµατος βάλτε ένα κείµενο που εµφανίζεται στην οθόνη και δηλώνει την επιτυχή ολοκλήρωση της κίνησης. 3 ο Βήµα: Καθώς το ροµπότ κινείται ευθεία και πριν πραγµατοποιήσει την κυκλική κίνηση προσθέστε ένα block που θα προκαλεί αναµονή 4 δευτερολέπτων. 4 ο Βήµα: Προσθέστε το Block που θα προκαλέσει επανάληψη της παραπάνω κίνησης µέχρι ένα εµπόδιο να πιέσει τον αισθητήρα αφής του ροµπότ. 119

120 4.1.2 Σχέδιο Μαθήµατος για την εξοικείωση µε το περιβάλλον του NXT Software 120

121 ΣΧΕ ΙΟ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑ ΣΧΕ ΙΟΥ ΜΑΘΗΜΑΤΟΣ: Εξοικείωση µε το περιβάλλον του NXT Software ΕΜΠΛΕΚΟΜΕΝΕΣ ΓΝΩΣΤΙΚΕΣ ΠΕΡΙΟΧΕΣ: Μάθηµα Πληροφορικής ΤΑΞΗ: Γ Γυµνασίου ΙΑΡΚΕΙΑ: 3 διδακτικές ώρες. ΣΥΜΒΑΤΟΤΗΤΑ ΜΕ ΤΟ ΕΠΠΣ ΚΑΙ ΑΠΣ: Το θέµα σχετίζεται µε την εκπαιδευτική ροµποτική και είναι συµβατό µε το.ε.π.π.σ και το ΑΠΣ εφόσον αποτελεί βοήθηµα στη διδακτική µαθηµάτων προγραµµατισµού. Οι στόχοι που τίθενται άπτονται του συγκεκριµένου αναλυτικού προγράµµατος των µαθηµάτων προγραµµατισµού. ΟΡΓΑΝΩΣΗ ΤΗΣ Ι ΑΣΚΑΛΙΑΣ ΚΑΙ ΑΠΑΙΤΟΥΜΕΝΗ ΥΛΙΚΟΤΕΧΝΙΚΗ ΥΠΟ ΟΜΗ: Προτείνεται η οργάνωση των µαθητών σε οµάδες 2 ατόµων. Απαιτείται εποµένως ο κατάλληλος αριθµός Η/Υ. Επίσης είναι απαραίτητη η ύπαρξη των τµηµάτων του ροµπότ MINDSTORMS. Το µάθηµα θα πρέπει να διεξαχθεί στο εργαστήριο πληροφορικής. Λογισµικό: NXT Software ΛΟΓΟΙ ΕΠΙΛΟΓΗΣ ΤΟΥ ΛΟΓΙΣΜΙΚΟΥ: NXT Software: Επιλέγουµε να εργαστούν οι µαθητές στο λογισµικό αυτό γιατί προσφέρει ένα εύχρηστο γραφικό περιβάλλον. Οι µαθητές εξοικειώνονται µε έννοιες προγραµµατισµού σε ευχάριστες συνθήκες έχοντας ως στόχο την ολοκλήρωση ασκήσεων και βλέποντας τα αποτελέσµατα στο ροµπότ, γεγονός που τους δίνει επιπλέον κίνητρα. Επίσης, αποτελεί ένα εύκολο σε κατανόηση περιβάλλον ώστε να µην απαιτείται µεγάλος χρόνος στην εκµάθηση των λειτουργιών του. Οι µαθητές µε ενέργειες drag and drop δοµούν προγράµµατα, ρυθµίζουν παραµέτρους και πειραµατίζονται. Έτσι βγάζουν τα ανάλογα συµπεράσµατα και οικοδοµούν τη νέα γνώση. ΜΟΝΤΕΛΟ Ι ΑΣΚΑΛΙΑΣ: Ως µοντέλο διδασκαλίας επιλέγεται το «εποικοδοµητικό» στα πλαίσια του οποίου κυρίαρχο ρόλο παίζουν οι ιδέες των µαθητών. Θεωρεί το µαθητή και τις ιδέες του στο κέντρο της διδακτικής διαδικασίας και περιλαµβάνει ενέργειες που ευνοούν την αυτορρύθµιση και τη µεταγνώση, ευνοεί δηλαδή την ενεργητική µάθηση και εστιάζεται στην εννοιολογική αλλαγή. 121

122 ΣΚΟΠΟΣ: Να εξοικειωθούν τα παιδιά µε το περιβάλλον του NXT Software, να γνωρίσουν τις λειτουργίες και τις δυνατότητες του και να καλλιεργήσουν ερευνητικό και οµαδικό πνεύµα µέσα από συνεργατικές διαδικασίες και ανακαλυπτικές δραστηριότητες. Ι ΑΚΤΙΚΟΙ ΣΤΟΧΟΙ: Γνώσεις: Οι µαθητές θα πρέπει: Να εξοικειωθούν µε το περιβάλλον εργασίας του λογισµικού. Να αναγνωρίζουν τα block καθώς και τη λειτουργία του καθενός. Να είναι σε θέση να ορίζουν τις παραµέτρους σε κάθε Block. Να µπορούν να συνδυάζουν τα Block για την ολοκλήρωση ασκήσεων. εξιότητες: Να αναπτύξουν δεξιότητες χρήσης και αξιοποίησης του λογισµικού NXT Software και γενικότερα του Η/Υ. Να αναπτύξουν δεξιότητες συνεργασίας και επικοινωνίας, καθώς εργάζονται µε το συγκεκριµένο λογισµικό. Στάσεις: Να αναπτύξουν θετική διάθεση απέναντι στον Η/Υ ως περιβάλλον εργασίας και ως εργαλείο άντλησης πληροφοριών. ΠΡΟΑΠΑΙΤΟΥΜΕΝΕΣ ΓΝΩΣΕΙΣ: Οι µαθητές θα πρέπει να έχουν αναπτύξει από προηγούµενα µαθήµατα τις βασικές δεξιότητες χρήσης του Η/Υ. ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΣΧΕ ΙΟΥ Στο διδακτικό σενάριο αυτό θα γίνει µια πρώτη επαφή των µαθητών µε το περιβάλλον του NXT Software. Οι µαθητές θα γνωρίσουν τα blocks της εφαρµογής και θα είναι σε θέση να αναγνωρίζουν τη λειτουργία του καθενός και να ορίζουν παραµέτρους σε αυτά. Τέλος, θα γίνει κατανοητό πως συνδυάζονται τα blocks για την επίτευξη ασκήσεων. Οι διδακτικοί στόχοι που αφορούν τις δεξιότητες και τις στάσεις, αναπτύσσονται καθ όλη τη διάρκεια της διδακτικής διδασκαλίας µέσω συνεργατικών διαδικασιών και διερευνητικών δραστηριοτήτων. 122

123 Για τη διδακτική διαπραγµάτευση των παραπάνω στόχων χρησιµοποιούµε όπως είπαµε το εποικοδοµητικό διδακτικό µοντέλο. Το µάθηµα θα διεξαχθεί στις εξής φάσεις: 1.Ανάδειξη των ιδεών των µαθητών. 2. οκιµασία των ιδεών και καταγραφή των αποτελεσµάτων της. 3. Συζήτηση ιδεών και συµπεράσµατα. 4. Εφαρµογή της νέας γνώσης 5.Ανασκόπηση και σύγκριση µεταξύ των ιδεών των µαθητών και της νέας γνώσης. Ο ρόλος του καθηγητή είναι συµβουλευτικός και καθοδηγητικός. Εµψυχώνει, συµβουλεύει και καθοδηγεί τις οµάδες, προκειµένου να πειραµατιστούν µε το λογισµικό, να συζητήσουν και να συνάγουν συµπεράσµατα. 1.Ανάδειξη των ιδεών των µαθητών. Αναφέρουµε τα ονόµατα των Blocks και ρωτάµε τους µαθητές να υποθέσουν τη λειτουργία τους. Ρωτάµε τους µαθητές αν µπορούν να φανταστούν κάποιες περιπτώσεις που θα ήταν χρήσιµα τα διάφορα blocks. Συζητάµε στην τάξη τα παραδείγµατα που αναφέρονται σε συνδυασµό µε την επίτευξή τους µέσω της πλατφόρµας. Οµαδοποιούµε τις ιδέες τους και γράφουµε στον πίνακα τα παραδείγµατα χωρίς να τα σχολιάσουµε. 2. οκιµασία των ιδεών και καταγραφή των αποτελεσµάτων της. Μοιράζουµε στους µαθητές το Φύλλο εργασίας και τους καλούµενα το διαπραγµατευτούν στην οµάδα τους. Οι αναµενόµενες απαντήσεις στις ασκήσεις είναι οι παρακάτω: Εξοικείωση Το ροµπότ θα πρέπει να κινηθεί ευθεία για 5 δευτερόλεπτα 2.Αν στο Port δεν δώσουµε τις σωστές τιµές το ροµπότ είτε δεν θα κινηθεί καθόλου, είτε θα κάνει περιστροφή και όχι ευθεία κίνηση. 3.Για γρηγορότερη κίνηση αλλάζουµε το πεδίο Power και δίνουµε τιµή µεγαλύτερη του

124 Άσκηση 2.1.3: Θα χρησιµοποιηθούν 5 Move Blocks. Τα παιδιά θα πρέπει να ορίσουν σωστά την κατεύθυνση των blocks στο πεδίο direction και να επιλέξουν τους σωστούς χρόνους στο πεδίο Duration, αφού πρώτα έχουν επιλέξει στο πεδίο αυτό την επιλογή seconds. Εξοικείωση Θα πρέπει να πραγµατοποιείται µία παρόµοια τετραγωνική κίνηση µε αυτήν που κατέγραψαν οι µαθητές. 2.Για καταγραφή µεγαλύτερης κίνησης θα πρέπει να αλλάξουµε την τιµή στο πεδίο Time κατά την καταγραφή της κίνησης. Για µεγαλύτερη κίνηση από αυτής που πραγµατοποιήσαµε θα πρέπει να δώσουµε τιµή µεγαλύτερη του 5. Άσκηση 2.2.3: Με το παραπάνω τµήµα κώδικα αρχικά καταγράφουµε την κίνηση που επιθυµούµε και στη συνέχεια αφήνουµε το ροµπότ να κινηθεί ελεύθερα. Αυτό αφού πραγµατοποιήσει κίνηση λίγων δευτερολέπτων, θα αναπαράγει την κίνηση που καταγράψαµε και θα συνεχίσει την πορεία του. Εξοικείωση Το ροµπότ θα εκτελέσει την ευθεία κίνηση και θα ακουστεί να λέει Forward. 1.Το ροµπότ θα εκτελέσει την ευθεία κίνηση και εµφανιστεί στην οθόνη του ένα βέλος που θα δείχνει την κατεύθυνση. 124

125 Άσκηση 2.3.3: Θα προσθέσουµε ένα Sound και ένα Display Block στα σηµεία που φαίνεται. Πρέπει να προσέξουµε να δώσουµε τις τιµές που ζητούνται στον ήχο και την εικόνα που θα αναπαραχθούν. Παρατηρούµε ότι η ένδειξη της οθόνης που δίνει το Display Block θα παραµείνει στην οθόνη. Εξοικείωση Όταν πιέσουµε τον αισθητήρα αφής το ροµπότ ξεκινά να κινείται προς την αντίθετη κατεύθυνση. 2.Αν δεν γίνει σωστή επιλογή στο Port του Touch sensor το ροµπότ θα κινείται για πάντα ευθεία γιατί δεν θα πάρει ποτέ ερέθισµα από αυτόν τον αισθητήρα, ακόµα κι αν τον πατήσουµε. 3.Αν δεν πιέσουµε ποτέ τον αισθητήρα αφής θα εκτελείται µόνο το πρώτο move block και θα κινείται απεριόριστα το ροµπότ, αφού θα περιµένει από µας ερέθισµα µέσω του αισθητήρα. Άσκηση 2.4.3: 1.Μπορεί να χρησιµοποιηθεί το παραπάνω τµήµα κώδικα. Το ροµπότ κινείται. Όταν συναντά ένα εµπόδιο οπισθοχωρεί για λίγο και στρίβει για να το αποφύγει. Εξοικείωση Παρατηρούµε ότι µετά την πρώτη εκτέλεση η εικόνα στην οθόνη που δίνει το Display Block θα παραµείνει. Για να την αλλάξουµε πρέπει να προσθέσουµε άλλο Display Block. 1.Αν στο Count δώσουµε την τιµή 2 το τµήµα του κώδικα θα επαναληφθεί 2 φορές. 125

126 2.Για να επαναλαµβάνεται το πρόγραµµα για 30 δευτερόλεπτα στο πεδίο control θα επιλέξουµε Time και στο πεδίο Until θα βάλουµε στα δευτερόλεπτα την τιµή 30. Άσκηση 2.5.3: Εδώ για να βοηθηθούν οι µαθητές µπορεί να σχηµατιστεί στο πάτωµα της αίθουσας µε µία κολλητική ταινία η πορεία που θέλουµε να διαγράψει το ροµπότ, δηλαδή ένα ισόπλευρο τρίγωνο, ώστε να είναι σαφείς οι ρυθµίσεις των παραµέτρων και να γίνονται πιο εύκολα οι έλεγχοι. Εναλλακτικά, χωρίς Loop: 1.Περισσότερα blocks χρησιµοποιούνται στη δεύτερη περίπτωση. 2.Στην δεύτερη περίπτωση χωρίς το loop block οι µαθητές καταβάλουν µεγαλύτερη προσπάθεια για τη ρύθµιση των παραµέτρων, οπότε πιο πρακτική είναι η πρώτη. Εξοικείωση Όταν πατάµε τον αισθητήρα το ροµπότ πρέπει να κινείται ευθεία µπροστά. 2.Το ροµπότ κινείται µπροστά για 5 δευτερόλεπτα αν ο αισθητήρας αφής είναι πιεσµένος, ενώ αν είναι ελεύθερος, κινείται για 5 δευτερόλεπτα µε κατεύθυνση προς πίσω. 3.Αν επιλέξουµε λάθος θύρα εισόδου στο Switch block, το ροµπότ θα θεωρεί ότι ο αισθητήρας δεν είναι πατηµένος ακόµα και αν είναι και εποµένως θα εκτελεστεί το δεύτερο σκέλος. 4.Για να χρησιµοποιήσουµε άλλο αισθητήρα αλλάζουµε το πεδίο sensor. 126

127 Άσκηση 2.6.3: 1.Η επανάληψη θα εκτελεστεί άπειρες φορές. 2.Αισθητήρες φωτός και αφής. 3.Θύρες εξόδου C και B. 4. εν έχει δίκαιο, φαίνεται στην εικόνα του προγράµµατος ποια θύρα εισόδου χρησιµοποιεί ο κάθε αισθητήρας. 5.Αν πιεσθεί ο αισθητήρας αφής το ροµπότ θα κινηθεί προς πίσω και θα αλλάξει κατεύθυνση κίνησης. 6.Αυτό το τµήµα κώδικα θα µπορούσε να χρησιµοποιηθεί για την αποφυγή εµποδίων κατά την κίνηση του ροµπότ καθώς και αποφυγή κενών στο επίπεδο κίνησης. Συνολική ραστηριότητα: Το ολοκληρωµένο πρόγραµµα, µε όλα τα βήµατα, για τη συνολική δραστηριότητα φαίνεται παρακάτω: 3.Συζήτηση ιδεών και συµπεράσµατα Οι οµάδες των παιδιών ανακοινώνουν τα αποτελέσµατα του φύλλου εργασίας τους στην τάξη. Συζητούν µεταξύ τους τις απαντήσεις και επιβεβαιώνουν τα σωστά αποτελέσµατα. Τα παιδιά θα πρέπει να διαπιστώσουν ότι πρέπει πάντα να επιλέγονται οι σωστές θύρες εισόδου και εξόδου όπως στις ερωτήσεις: 2 της ενότητας 2.1.2, 3 της ενότητας και 3 στην ενότητα Επίσης θα πρέπει να κατανοήσουν πως γίνονται οι ρυθµίσεις σε πεδία τιµών και να εξοικειωθούν µε τις αναλογίες των τιµών των πεδίων και των ενεργειών που εκτελούνται στο ροµπότ όπως στις ερωτήσεις: 3 της ενότητας 2.1.2, 2 της ενότητας και 1 στην ενότητα Εφαρµογή της νέας γνώσης Επανερχόµαστε στα αρχικά παραδείγµατα της φάσης της ανάδειξης των ιδεών των µαθητών και προσπαθούµε να τα λύσουµε µε τη νέα εµπειρία που έχουν αποκτήσει οι µαθητές. Επαληθεύουµε ή διορθώνουµε τις ιδέες των µαθητών. 5.Ανασκόπηση και σύγκριση µεταξύ των ιδεών των µαθητών και της νέας γνώσης Οι µαθητές συζητούν τις απόψεις τους και συνειδητοποιούν την γνωστική πορεία αλλαγής των αρχικών ιδεών τους. Για παράδειγµα συζητούν αν είχαν κάνει σωστές υποθέσεις για τη λειτουργία των blocks όπως και αν τα παραδείγµατά τους τελικά ήταν εύστοχα και πραγµατοποιήσιµα µέσα στην πλατφόρµα. Έτσι θα αναπτύξουν µεταγνωστικές ικανότητες, οι οποίες θα βοηθήσουν περαιτέρω στην οικοδόµηση της νέας γνώσης. 127

128 Αξιολόγηση επίτευξης των στόχων: Η αξιολόγηση περιλαµβάνει: 1)τη διαµορφωτική αξιολόγηση που θα διεξαχθεί κατά τη διάρκεια της διδασκαλίας µέσω παρατήρησης της συµµετοχής και του ενδιαφέροντος των µαθητών, µέσω των ερωτήσεών τους και γενικότερα µέσω παρατήρησης της εργασίας τους στην οµάδα. 2)την τελική αξιολόγηση στο τέλος της διδασκαλίας ένα φύλλο αξιολόγησης. Ενδεικτικά θα µπορούσε να δοθεί στους µαθητές το παρακάτω φύλλο αξιολόγησης. ΦΥΛΛΟ ΑΞΙΟΛΟΓΗΣΗΣ 1.Αντιστοιχίστε το κάθε Block µε την ονοµασία του: (Record/Play Block, Loop Block, Sound Block, Switch Block, Wait Block, Move Block, Display Block)... Εξηγήστε συνοπτικά τη λειτουργία του Εξηγήστε συνοπτικά τη λειτουργία του

129 Εξηγήστε συνοπτικά τη λειτουργία του Εξηγήστε συνοπτικά τη λειτουργία του Εξηγήστε συνοπτικά τη λειτουργία του

130 ... Εξηγήστε συνοπτικά τη λειτουργία του Εξηγήστε συνοπτικά τη λειτουργία του Γράψτε ένα πρόγραµµα µε το οποίο το ροµπότ θα κινείται ευθεία για 5 δευτερόλεπτα, θα σταµατά µε µία αναµονή για άλλα 5 δευτερόλεπτα και θα συνεχίσει να κινείται ευθεία µέχρι να συναντήσει κάποιο εµπόδιο. 3.Στο παραπάνω πρόγραµµα προσθέστε σε κατάλληλα σηµεία ηχητικά µηνύµατα και µηνύµατα εικόνας που να δηλώνουν την κάθε ενέργεια. 4.Κάντε τις απαραίτητες προσθήκες blocks για να επαναλαµβάνονται οι παραπάνω ενέργειες για πάντα. 130

131 4.2 ΕΞΟΙΚΕΙΩΣΗ ΜΕ ΤΗΝ ΕΝΝΟΙΑ ΤΗΣ ΜΕΤΑΒΛΗΤΗΣ Φύλλο Εργασίας για την εξοικείωση µε την έννοια της µεταβλητής 131

132 ΜΑΘΗΜΑ:.. ΘΕΜΑ: Το ροµπότ παίζει µε τις τιµές.(εξοικείωση µε την έννοια της µεταβλητής.) ΗΜ/ΝΙΑ: _ / _ / 200_ 1.Εξοικείωση µε την έννοια της µεταβλητής. Μια µεταβλητή είναι ένα όνοµα για µία θέση µνήµης στο υπολογιστικό σύστηµα. Για παράδειγµα η θέση µνήµης που συµβολίζεται µε το τετραγωνάκι παίρνει την τιµή Θέση µνήµης Στην παρακάτω θέση µνήµης δώστε την τιµή 5.. Θέση µνήµης Στο NXT Software η µεταβλητές παρουσιάζονται σαν ένα block στο οποίο δίνουµε µία τιµή. Την τιµή αυτή µπορούν να τη χρησιµοποιήσουν και άλλα blocks ενός προγράµµατος µέσω καλωδίων που µεταφέρουν δεδοµένα από και προς τη µεταβλητή. Έστω η παρακάτω µεταβλητή δίνει την ταχύτητα σε ένα move block. 50 < > Ταχύτητα= καλώδιο 50 Variable block Move block 132

133 Αν η παρακάτω µεταβλητή δίνει την ένταση σε ένα Sound block, συµπληρώστε την τιµή της έντασης. 20 Variable block < > καλώδιο Ένταση=.. Sound block Όταν χρησιµοποιούµε µεταβλητές σε προγράµµατα είναι καλό να τους δίνουµε ονόµατα που ανταποκρίνονται στην ιδιότητά τους, ώστε να είναι εύκολο να κατανοήσουµε το ρόλο τους διαβάζοντας το πρόγραµµα. Για παράδειγµα, την παραπάνω µεταβλητή θα µπορούσαµε να την ονοµάσουµε «Ταχύτητα» ταχύτητα 50 Variable block < > καλώδιο Ταχύτητα= 50 Move block Τι όνοµα θα δίνατε στην παρακάτω µεταβλητή:. 20 Variable block < > καλώδιο Ένταση= 20. Sound block Στις µεταβλητές εκτός από τιµή και από όνοµα, θα πρέπει να δίνουµε και µία ιδιότητα, η οποία θα εκφράζει αν η τιµή που κουβαλά η µεταβλητή είναι αριθµός, κείµενο ή λογική τιµή. Τι ιδιότητα πιστεύετε ότι θα έπρεπε να δώσουµε στις µεταβλητές ταχύτητα και ένταση; Στις µεταβλητές πρέπει πάντα να δίνεται αρχική τιµή. Λογικές προτάσεις Μια πρόταση λέγεται λογική όταν µπορεί να χαρακτηριστεί αληθής ή ψευδής. Ένας τέτοιος χαρακτηρισµός µιας πρότασης λέγεται τιµή αλήθειας ή απλά τιµή της πρότασης. 133

134 2. ηµιουργία µεταβλητής στο NXT Software. Για την επίλυση των παρακάτω δραστηριοτήτων είναι απαραίτητοι 2 ρόλοι σε κάθε οµάδα, ο ρόλος του προγραµµατιστή και ο ρόλος του αναλυτή. Στο βήµα της εξοικείωσης ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται. Ο προγραµµατιστής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή για να ολοκληρωθεί η ενότητα. Στο βήµα των ασκήσεων ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, τόσο µε τις ενέργειες του προγραµµατιστή για την επίλυση της άσκησης όσο και µε τις απαντήσεις του στα ερωτήµατα. Οι ρόλοι πολλές φορές θα εναλλάσσονται, δηλαδή ο αναλυτής θα παίρνει το ρόλο του προγραµµατιστή και ο προγραµµατιστής του αναλυτή, ανάλογα µε τις υποδείξεις της κάθε δραστηριότητας. Παρακάτω γράψτε τα ονόµατα σας: Μέλος Α: Μέλος Β: 134

135 2.1 Variable Block, το Block που θυµάται τιµές Πως λειτουργεί το Variable Block Σκεφτείτε το Variable Block σαν ένα χώρο που αποθηκεύονται τιµές στη µνήµη του ΝΧΤ. Άλλα block του προγράµµατος µπορούν να διαβάσουν τις τιµές αυτές, ή ακόµα και να τις αλλάξουν. Για να δηµιουργήσουµε µία µεταβλητή αρχικά επιλέγουµε από το µενού Edit το Define Variables. Κάνοντας την επιλογή αυτή εµφανίζεται το παρακάτω παράθυρο διαλόγου. Πατήστε το πλήκτρο Create, δώστε στο πεδίο Name το όνοµα της µεταβλητής και στο πεδίο Datatype επιλέξτε το Number γιατί θέλουµε η µεταβλητή µας να δέχεται αριθµό Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Θέλουµε να δηµιουργήσουµε µία µεταβλητή και να αποθηκεύσουµε σε αυτήν τον αριθµό των επαναλήψεων που έκανε το ροµπότ µας στο παράδειγµα µε το τρίγωνο του προηγούµενου φύλλου εργασίας. Αφού ανοίξουµε το παράδειγµα µε το τρίγωνο στην εφαρµογή µας τσεκάρουµε στην περιοχή των παραµέτρων του loop block την επιλογή counter, για να χρησιµοποιήσουµε τον αριθµό των επαναλήψεων. 135

136 Στη συνέχεια εισάγουµε από την κατηγορία Data της παλέτας Complete το variable block. Στην περιοχή παραµέτρων του block κάνουµε τις παρακάτω ρυθµίσεις: List: Επιλέγουµε τη µεταβλητή που έχουµε δηµιουργήσει µε το όνοµα epanalipseis. Action: Επιλέγουµε το Write ώστε να µπορούµε να δώσουµε µια τιµή στη µεταβλητή. Τώρα αυτό που µένει είναι να ενώσουµε την έξοδο από το loop block στη είσοδο της µεταβλητής µας. Έτσι αποθηκεύεται ο αριθµός των επαναλήψεων και µπορούµε να τον χρησιµοποιήσουµε αργότερα µέσω της µεταβλητής µας. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και καταγράψτε: Συζητήστε µαζί: 1.Τι τιµή έχει πάρει το Variable Block; 2.Ήταν εύστοχη η ονοµασία του; 1 2 Ερώτηση: 3.Γιατι στον τύπο της µεταβλητής επιλέξαµε το Number; Απάντηση Αναλυτή: 136

137 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Προγραµµατίστε το ροµπότ ώστε να κάνει µία τετραγωνική κίνηση, χρησιµοποιώντας το Loop Block και στη συνέχεια, αποθηκεύστε τον αριθµό των επαναλήψεων σε µία κατάλληλη µεταβλητή. Ερώτηση: 1.Τι τύπο µεταβλητής πρέπει να χρησιµοποιήσουµε; 2.Ποια είναι η τιµή που θα έχει τελικά η µεταβλητή µας; Απάντηση Προγραµµατιστή: 1 137

138 2 Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Εκτελέστε την άσκηση στο ροµπότ και αναφέρετε την τιµή που παίρνει η µεταβλητή σας. 2.2 Το ροµπότ κάνει συγκρίσεις µε το Compare Block Τι κάνει ένα Compare Block; Το Compare block µπορεί να προσδιορίσει αν ένας αριθµός είναι µεγαλύτερος (>), µικρότερος (<), ή ίσος (=), µε κάποιον άλλο. Οι αριθµοί που συγκρίνονται µπορούν είτε να πληκτρολογηθούν σε ένα πεδίο είτε να µπουν δυναµικά ως δεδοµένα εισόδου στο block από τις πύλες εισόδου Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Βοηθός: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) 138

139 Θέλουµε να συγκρίνουµε δύο τιµές και να καταχωρήσουµε το αποτέλεσµα σε µια µεταβλητή. Εισάγουµε στο πρόγραµµα ένα Compare Block. Στην περιοχή παραµέτρων κάνουµε τις παρακάτω ρυθµίσεις: Operation: Επιλέγουµε την τιµή Equals. A: Θέτουµε ίσο µε τον αριθµό 5. Β: Θέτουµε ίσο µε τον αριθµό 10. Στη συνέχεια προσθέτουµε ένα Variable block συνδέουµε την έξοδο του Compare block µε την είσοδό του. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα αποτελέσµατα. Ερώτηση: 1.Τι τύπου πρέπει να είναι η µεταβλητή µας; 2.Ποια λογική τιµή θα περιέχει τελικά; Απάντηση Αναλυτή: 1 2. Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση 139

140 Γιατί:. Συµπέρασµα οµάδας στην διαφωνία:. 2.3 Μαθηµατικές πράξεις µε το Math Block Τι κάνει ένα Math Block; Το Math block εκτελεί απλές αριθµητικές πράξεις όπως πρόσθεση, αφαίρεση, πολλαπλασιασµό και διαίρεση. Το δεδοµένα εισόδου, δηλαδή οι αριθµοί που θα χρειαστούν για τις πράξεις, µπορούν είτε να πληκτρολογηθούν στα αντίστοιχα πεδία που βρίσκονται στο πάνελ που εµφανίζεται όταν εισάγετε το block στο πρόγραµµα, είτε να εισαχθούν στο block δυναµικά µε καλώδια δεδοµένων Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Βοηθός: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Θέλουµε να προσθέσουµε δύο τιµές και να καταχωρήσουµε το αποτέλεσµα σε µία µεταβλητή. Στη συνέχεια, το άθροισµα θα εµφανίζεται στην οθόνη του ροµπότ καθώς αυτό κινείται. Εισάγουµε στο πρόγραµµα ένα Math Block. 140

141 Στην περιοχή παραµέτρων κάνουµε τις παρακάτω ρυθµίσεις: Operation: Επιλέγουµε την τιµή Addition. A: Θέτουµε ίσο µε τον αριθµό 2. Β: Θέτουµε ίσο µε τον αριθµό 1. ηµιουργούµε κατάλληλη µεταβλητή σε ένα Variable Block και του προσδίδουµε την τιµή συνδέοντας την έξοδο του Math µε την είσοδο του Compare block. Συνεχίζουµε εισάγοντας ένα Number To Text Block από την κατηγορία Advanced της Complete παλέτας. Το Block αυτό µετατρέπει τον αριθµό που φέρει το Variable Block σε κείµενο, το οποίο θα µπορεί να εµφανιστεί στην οθόνη του NXT µέσω ενός Display block. Συνδέουµε την έξοδο του variable block µε την είσοδό του Number To Text Block και την έξοδο του Number To Text Block µε ένα Display Block. Εδώ θα πρέπει να προσέξουµε τον τύπο της εισόδου στο Display Block. Αφού είναι κείµενο άρα είναι τύπου Text και εποµένων θα πρέπει να το συνδέσουµε µε την είσοδο για κείµενα του Display block όπως φαίνεται παρακάτω. Τέλος προσθέτουµε ένα Move Block που θα προκαλεί την κίνηση. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε: 141

142 Συζητήστε µαζί: 1.Είναι σωστός ο ισχυρισµός ότι η µεταβλητή είναι τύπου Number; 2.Το όνοµα athroisma είναι σαφές για την συγκεκριµένη µεταβλητή; 1 2 Ερώτηση: 3.Ποια είναι η τελική τιµή της; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 142

143 2.4 Τυχαίες τιµές µε το Random Block Τι κάνει ένα Random Block; Το Random Block δηµιουργεί τυχαίους αριθµούς. Μπορείτε να χρησιµοποιήσετε αυτούς τους τυχαίους αριθµούς για να προκαλέσετε συµπεριφορές του ροµπότ που δεν θα έχουν προβλεφθεί. Για παράδειγµα, αν χρησιµοποιήσετε ένα καλώδιο δεδοµένων για να συνδέσετε ένα Random Block µε τη θύρα εισόδου για τη διάρκεια της κίνησης ενός Move Block, το ροµπότ µπορεί να κινηθεί 5 δευτερόλεπτα την πρώτη φορά που θα εκτελέσετε το πρόγραµµα και 10 την επόµενη Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Βοηθός: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Θα δηµιουργήσουµε ένα πρόγραµµα όµοιο µε της ενότητας µε τη διαφορά ότι αυτή τη φορά στην µεταβλητή θα δώσουµε µία τυχαία τιµή µέσα από ένα πεδίο τιµών που επιλέγουµε εµείς. Εισάγουµε σε µία νέα καρτέλα ένα Random Block. Στην περιοχή παραµέτρων κάνουµε τις παρακάτω ρυθµίσεις: A: Θέτουµε ίσο µε τον αριθµό 0. Β: Θέτουµε ίσο µε τον αριθµό 10. Συνεχίζουµε προσθέτοντας ένα Variable Block µε τον κατάλληλο τύπο και συνδέοντας την έξοδο του Random block µε την είσοδο του. Η έξοδος του όµοια µε την προηγούµενη άσκηση συνδέεται µε ένα Number To Text Block και εν συνεχεία µε ένα Display Block. Τέλος ακολουθεί το Move Block για την πρόκληση της κίνησης. 143

144 Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και διαπιστώστε: Συζητήστε µαζί: 1.Οι ενδείξεις στην οθόνη είναι µέσα σε αυτό το πεδίο τιµών; 2.Πως θα µπορούσαµε να αλλάξουµε το πεδίο τιµών; 1 2 Ερωτήσεις: 3.Ποιος τύπος µεταβλητής είναι ο σωστός; 4.Από πιο πεδίο τιµών θα πάρει τιµή η µεταβλητή µας; Απάντηση Αναλυτή: 3 4. Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 144

145 2.5 Το ροµπότ σκέφτεται λογικά µε το Logic Block Τι κάνει ένα Logic Block; To Logic Block εκτελεί λογικές πράξεις στα δεδοµένα εισόδου του και δίνει την τιµή true ή false στην έξοδό του, ή οποία µπορεί να χρησιµοποιηθεί µέσα στο πρόγραµµα. Οι τιµές εισόδου, που πρέπει να είναι true ή false, µπορούν είτε να αποδοθούν δυναµικά µε καλώδια δεδοµένων, είτε να επιλεχθούν µέσω του πάνελ του block. Ακολουθούν οι κανόνες που καθορίζουν τις βασικές λογικές πράξεις: Άρνηση-NOT Με την εφαρµογή της άρνησης σε µια λογική πρόταση αντιστρέφεται η αλήθεια των τιµών της, δηλαδή το true µετατρέπεται σε false και το false σε true. Η λογική τιµή του Block θα είναι: Σύζευξη-AND Με την πράξη της σύζευξης συνθέτουµε δύο προτάσεις µε τη λέξη «και», οπότε σχηµατίζεται µια νέα πρόταση, η οποία είναι αληθής µόνο όταν και οι δύο αρχικές είναι αληθείς. Η λογική τιµή του Block θα είναι: Η λογική τιµή του Block θα είναι: 145

146 ιάζευξη-or Με την πράξη της διάζευξης συνθέτουµε δύο προτάσεις µε την λέξη «ή», οπότε σχηµατίζεται µία νέα πρόταση, η οποία είναι αληθής όταν τουλάχιστον η µία από τις δύο αρχικές είναι αληθής. Η λογική τιµή του Block θα είναι: Η λογική τιµή του Block θα είναι: Αποκλειστική διάζευξη-xor Με την πράξη της αποκλειστικής διάζευξης συνθέτουµε δύο προτάσεις βάζοντας το διαζευκτικό «είτε» µπροστά σε καθεµία, οπότε σχηµατίζεται µια νέα, η οποία είναι αληθής µόνο όταν η µία από τις αρχικές είναι αληθής και η άλλη ψευδής. Η λογική τιµή του Block θα είναι: Η λογική τιµή του Block θα είναι: Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Βοηθός: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) 146

147 Με τη βοήθεια ενός Logic block θα δώσουµε τιµή σε µία µεταβλητή και αν η τιµή της είναι αληθής το ροµπότ θα εκτελεί ευθεία κίνηση. ιαφορετικά, δηλαδή αν η τιµή της µεταβλητής είναι ψευδής δεν θα κινείται καθόλου. Εισάγουµε σε µία νέα καρτέλα ένα Logic Block. Στην περιοχή παραµέτρων κάνουµε τις παρακάτω ρυθµίσεις: Operation: Επιλέγουµε την τιµή And. A: Θέτουµε ίσο µε τη λογική τιµή true. Β: Θέτουµε ίσο µε τη λογική τιµή true. Στη συνέχεια εισάγουµε ένα Variable block και αφού το θέσουµε στο σωστό τύπο συνδέουµε την είσοδό του µε την έξοδο του Logic block. Εισάγουµε ένα Switch block και του δίνουµε στο πεδίο Control την επιλογή Value και στο πεδίο Type την επιλογή logic. Την έξοδο του Variable block την εισάγουµε στην είσοδο του Switch block. Τέλος εισάγουµε στο σκέλος του Switch block που µας οδηγεί στην τιµή true ένα move block για ευθεία κίνηση, ενώ στο δεύτερο σκέλος εισάγουµε ένα move block µε την ένδειξη stop στο πεδίο Direction. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και διαπιστώστε: Συζητήστε µαζί: 1.Ποια θα είναι η τιµή της µεταβλητής µας; 2.Τι ενέργεια θα εκτελέσει τελικά το ροµπότ;

148 Ερώτηση: 3.Αν στη θέση του And βάλουµε Or, τι τιµή θα έχει η µεταβλητή και τι κίνηση θα εκτελέσει το ροµπότ; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 148

149 Άσκηση συµπερασµάτων για τις ενότητες 2.1 έως 2.5 ίνεται το παρακάτω τµήµα κώδικα: ίνονται επίσης οι παρακάτω περιοχές παραµέτρων: Για το επάνω τµήµα κώδικα µε τη σειρά που εµφανίζονται τα blocks: 149

150 Για το κάνω τµήµα κώδικα µε τη σειρά που εµφανίζονται τα blocks: Μελετήστε το παραπάνω παράδειγµα και απαντήστε στις ακόλουθες ερωτήσεις: Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Βοηθός: Μέλος Β. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) 150

151 Ερωτήσεις: 1.Σε ποιο πεδίο τιµών δίνει τιµές το πρώτο Random block; 2.Τι πράξη εκτελεί το Math block; 3.Τι τύπου µεταβλητή είναι το Variable block µε το όνοµα arithmos1; 4.Τι πράξη εκτελεί το πρώτο Compare block; 5.Τι τύπου είναι το Variable block µε το όνοµα Logiki1; 6.Πότε η µεταβλητή Logiki1 είναι true και πότε false; Θα γίνει ποτέ η τιµή αυτή false; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 151

152 Συµπέρασµα οµάδας στην διαφωνία: Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Βοηθός: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Ερωτήσεις: 7.Σε ποιο πεδίο τιµών δίνει τιµές το δεύτερο Random block; 8.Τι τύπου µεταβλητή είναι το Variable block µε το όνοµα arithmos2 και τι τιµές µπορεί να πάρει; 9.Τι πράξη εκτελεί το δεύτερο Compare block; 10.Τι τύπου είναι το Variable block µε το όνοµα Logiki2 και θα είναι true ή false; 11.Πότε δίνει αληθή και πότε ψευδή τιµή το Logic block; 12.Τι γίνεται αν το logic block δώσει αληθή τι µη και τι αν δώσει ψευδή και ποια περίπτωση θα εκτελεστεί τελικά; 152

153 Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 153

154 Συµπέρασµα οµάδας στην διαφωνία: 154

155 4.2.2 Σχέδιο Μαθήµατος για την εξοικείωση µε την έννοια της µεταβλητής 155

156 ΣΧΕ ΙΟ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑ ΣΧΕ ΙΟΥ ΜΑΘΗΜΑΤΟΣ: Εξοικείωση µε την έννοια της µεταβλητής. ΕΜΠΛΕΚΟΜΕΝΕΣ ΓΝΩΣΤΙΚΕΣ ΠΕΡΙΟΧΕΣ: Μάθηµα Πληροφορικής ΤΑΞΗ: Γ Γυµνασίου ΙΑΡΚΕΙΑ: 2 διδακτικές ώρες. ΟΡΓΑΝΩΣΗ ΤΗΣ Ι ΑΣΚΑΛΙΑΣ ΚΑΙ ΑΠΑΙΤΟΥΜΕΝΗ ΥΛΙΚΟΤΕΧΝΙΚΗ ΥΠΟ ΟΜΗ: Προτείνεται η οργάνωση των µαθητών σε οµάδες 2 ατόµων. Απαιτείται εποµένως ο κατάλληλος αριθµός Η/Υ. Επίσης είναι απαραίτητη η ύπαρξη των τµηµάτων του ροµπότ MINDSTORMS. Το µάθηµα θα πρέπει να διεξαχθεί στο εργαστήριο πληροφορικής. Λογισµικό: NXT Software ΛΟΓΟΙ ΕΠΙΛΟΓΗΣ ΤΟΥ ΛΟΓΙΣΜΙΚΟΥ: NXT Software: Επιλέγουµε να εργαστούν οι µαθητές στο λογισµικό αυτό γιατί προσφέρει ένα εύχρηστο γραφικό περιβάλλον. Οι µαθητές εξοικειώνονται µε έννοιες προγραµµατισµού σε ευχάριστες συνθήκες έχοντας ως στόχο την ολοκλήρωση ασκήσεων και βλέποντας τα αποτελέσµατα στο ροµπότ, γεγονός που τους δίνει επιπλέον κίνητρα. Επίσης, αποτελεί ένα εύκολο σε κατανόηση περιβάλλον ώστε να µην απαιτείται µεγάλος χρόνος στην εκµάθηση των λειτουργιών του. Οι µαθητές µε ενέργειες drag and drop δοµούν προγράµµατα, ρυθµίζουν παραµέτρους και πειραµατίζονται. Έτσι βγάζουν τα ανάλογα συµπεράσµατα και οικοδοµούν τη νέα γνώση. ΣΚΟΠΟΣ: Να εξοικειωθούν τα παιδιά µε την έννοια της µεταβλητής, να κατανοήσουν τον τρόπο που χρησιµοποιείται µέσα σε ένα πρόγραµµα και να καλλιεργήσουν ερευνητικό και οµαδικό πνεύµα µέσα από συνεργατικές διαδικασίες. 156

157 Ι ΑΚΤΙΚΟΙ ΣΤΟΧΟΙ: Γνώσεις: Οι µαθητές θα πρέπει: Να κατανοήσουν τις έννοιες της τιµής του ονόµατος και της ιδιότητας της µεταβλητής. Να εξοικειωθούν µε επιπλέον blocks που βοηθούν στην κατανόηση της µεταβλητής και να ρυθµίζουν τις παραµέτρους τους. Να έχουν την ικανότητα να χρησιµοποιούν τα νέα blocks µέσα σε ένα πρόγραµµα. εξιότητες: Να αναπτύξουν δεξιότητες χρήσης και αξιοποίησης του λογισµικού NXT Software και γενικότερα του Η/Υ. Να αναπτύξουν δεξιότητες συνεργασίας και επικοινωνίας, καθώς εργάζονται µε το συγκεκριµένο λογισµικό. Στάσεις: Να αναπτύξουν θετική διάθεση απέναντι στον Η/Υ ως περιβάλλον εργασίας και ως εργαλείο άντλησης πληροφοριών. ΠΡΟΑΠΑΙΤΟΥΜΕΝΕΣ ΓΝΩΣΕΙΣ: Οι µαθητές θα πρέπει να έχουν αναπτύξει από προηγούµενα µαθήµατα τις βασικές δεξιότητες χρήσης του Η/Υ και του περιβάλλοντος του NXT Software. Επίσης θα πρέπει να έχει γίνει µια αρχική εξοικείωση µε την έννοια των λογικών µεταβλητών από τον καθηγητή. ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΣΧΕ ΙΟΥ Στο διδακτικό σενάριο αυτό θα γίνει µια πρώτη επαφή των µαθητών µε την έννοια της µεταβλητής και των blocks του ΝΧΤ Software που σχετίζονται µε αυτήν. Οι µαθητές θα γνωρίσουν πώς να χρησιµοποιούν τα νέα blocks µέσα σε ένα πρόγραµµα και µέσω αυτών θα δοµήσουν τη γνώση τους για την µεταβλητή. Οι διδακτικοί στόχοι που αφορούν τις δεξιότητες και τις στάσεις, αναπτύσσονται καθ όλη τη διάρκεια της διδακτικής διδασκαλίας µέσω συνεργατικών διαδικασιών και διερευνητικών δραστηριοτήτων. Για τη διδακτική διαπραγµάτευση των παραπάνω στόχων χρησιµοποιούµε το εποικοδοµητικό διδακτικό µοντέλο. Το µάθηµα θα διεξαχθεί στις εξής φάσεις: 1.Ανάδειξη των ιδεών των µαθητών. 2. οκιµασία των ιδεών και καταγραφή των αποτελεσµάτων της. 157

158 3. Συζήτηση ιδεών και συµπεράσµατα. 4. Εφαρµογή της νέας γνώσης. 5.Ανασκόπηση και σύγκριση µεταξύ των ιδεών των µαθητών και της νέας γνώσης. Ο ρόλος του καθηγητή είναι συµβουλευτικός και καθοδηγητικός. Εµψυχώνει, συµβουλεύει και καθοδηγεί τις οµάδες, προκειµένου να πειραµατιστούν µε το λογισµικό, να συζητήσουν και να συνάγουν συµπεράσµατα. 1.Ανάδειξη των ιδεών των µαθητών. Συζητάµε µε τους µαθητές την έννοια της µεταβλητής και απαριθµούµε τις απόψεις τους. Ρωτάµε τους µαθητές αν µπορούν να φανταστούν παραδείγµατα που θα µπορούσε να γίνει χρήση µεταβλητών µέσα σε ένα πρόγραµµα στην πλατφόρµα NXT Software. Συζητάµε στην τάξη πως θα µπορούσαν τα υλοποιηθούν τα παραδείγµατα που έχουν αναφερθεί. Καταγράφουµε τις ιδέες και τα παραδείγµατα των µαθητών χωρίς να τα σχολιάσουµε. 2. οκιµασία των ιδεών και καταγραφή των αποτελεσµάτων της. Μοιράζουµε στους µαθητές το Φύλλο εργασίας και τους καλούµενα το διαπραγµατευτούν στην οµάδα τους. Οι αναµενόµενες απαντήσεις στις ασκήσεις είναι οι παρακάτω: Ενότητα Το Variable Block θα έχει την τιµή 3, αφού ο αριθµός των επαναλήψεων είναι 3. 2.Το όνοµα επαναλήψεις είναι εύστοχο αφού αποτυπώνει αυτό ακριβώς που περιέχει η µεταβλητή. 3.Επιλέξαµε το Number γιατί θέλουµε να αποθηκεύσουµε έναν φυσικό αριθµό, εποµένως είναι ο µόνος σωστός τύπος µεταβλητής. 158

159 Ενότητα Η άσκηση είναι παρόµοια, µόνο που εδώ στις επαναλήψεις του Loop Block θα πρέπει να µπει η τιµή 4 αφού πρόκειται για τετράγωνο. Επίσης η γωνία που θα σχηµατίζει το δεύτερο Move Block θα πρέπει να είναι ορθή. 1.Πρέπει να χρησιµοποιήσουµε Number τύπο, αφού θέλουµε να αποθηκεύσουµε φυσικό αριθµό. 2.Τελικά η µεταβλητή θα έχει τον αριθµό των επαναλήψεων, δηλαδή 4. Ενότητα Θέλουµε να πάρουµε ως απάντηση την τιµή true ή false, εποµένως θα πρέπει η µεταβλητή µας να είναι τύπου Logic. 2. Τελικά θα πάρει την τιµή False, γιατί το 5 δεν είναι ίσο µε το 10. Ενότητα

160 1.Κάνουµε πράξεις ανάµεσα σε φυσικούς αριθµούς, εποµένως το αποτέλεσµα που θέλουµε να αποθηκεύσουµε στη µεταβλητή µας είναι κι αυτό φυσικός αριθµός, άρα σωστά επιλέξαµε το Number τύπο. 2.Εκτελούµε πράξη πρόσθεσης εποµένως το όνοµα athroisma για το αποτέλεσµα αποτελεί ικανοποιητική επιλογή. 3.Προσθέτουµε τους αριθµούς 2 και 1 εποµένως το αποτέλεσµα θα είναι 3 και η τιµή που µεταφέρεται στη µεταβλητή είναι η τιµή 3. Ενότητα Θα πρέπει η ένδειξη στην οθόνη να είναι ένας αριθµός από το 0 έως το Αλλάζουµε το πεδίο τιµών είτε από τη µπάρα, είτε πληκτρολογώντας τιµές στα πεδία των ορίων. 3.Το Random Block παράγει ακέραιους αριθµούς εποµένως ο κατάλληλος τύπος µεταβλητής είναι ο Number. 4.Η τιµή είναι από το κλειστό πεδίο [0-10]. Ενότητα

161 1.Η µεταβλητή µας θα έχει την τιµή true. 2.Η τιµή της µεταβλητής είναι true, εποµένως θα εκτελεστεί το πάνω σκέλος, δηλαδή το ροµπότ θα κινηθεί προς µπροστά. 3.Αν βάλουµε Or η µεταβλητή θα έχει πάλι αληθή τιµή και θα εκτελεστεί το επάνω σκέλος όπως και πριν, δηλαδή η κίνηση µπροστά. Άσκηση συµπερασµάτων για τις ενότητες 2.1 έως 2.5 Απαντήσεις ερωτήσεων: 1.Το πρώτο Random Block θα δώσει τιµές στο πεδίο τιµών [0,10]. 2.Το Math Block εκτελεί πρόσθεση, προσθέτει δηλαδή στην τυχαία τιµή τον αριθµό Η µεταβλητή arithmos1 είναι τύπου Number. 4.Το πρώτο Compare Block ελέγχει αν η τιµή της µεταβλητής arithmos1 είναι µικρότερη του Η µεταβλητή Logiki1 είναι τύπου Logic. 6.Η µεταβλητή Logiki1 γίνεται True όταν η τιµή της µεταβλητής arithmos1 είναι µικτότερη ή ίση του 20 και False όταν η τιµή της µεταβλητής arithmos1 είναι µεγαλύτερη του 20. Το Random Block δίνει τιµές από 0 έως 10, προσθέτουµε και 10 µε το Math Block, άρα η µεταβλητή arithmos1 θα γίνει το πολύ 20 και εποµένως η Logiki1 θα είναι πάντα True. 7.Το δεύτερο Random Block θα δώσει τιµές από το πεδίο τιµών [0,5]. 8.Η µεταβλητή arithmos2 είναι τύπου Number και παίρνει τιµές από 0 έως 5. 9.Το δεύτερο Compare Block ελέγχει αν η τιµή της µεταβλητής arithmos2 είναι µικρότερη από το Η µεταβλητή Logic2 είναι τύπου Logic και θα είναι Τrue αφού το Random Block δίνει πάντα τιµές µικρότερες του Το Logic Block θα είναι True όταν τα Logic1 και Logic2 είναι και τα δύο True. Σε όλες τις άλλες περιπτώσεις θα δίνει τιµή False. 12.Όταν το Logic δώσει αληθή τιµή το ροµπότ κινείται µπροστά, ενώ όταν δώσει ψευδή κινείται προς πίσω. Τα Logic1 και Logic2 είναι αληθή πάντα, άρα το Logic Block θα δώσει True και το ροµπότ θα κινηθεί µπροστά. 3.Συζήτηση ιδεών και συµπεράσµατα Οι οµάδες των παιδιών ανακοινώνουν τα αποτελέσµατα του φύλλου εργασίας στην τάξη. Συζητούν τα αποτελέσµατα, βρίσκουν τις σωστές λύσεις και καταλήγουν στα αποδεκτά αποτελέσµατα. Τα παιδιά θα πρέπει να είναι σε θέση να κατανοούν τις τιµές που παίρνουν οι µεταβλητές όπως στις ερωτήσεις:1 στην ενότητα 2.1.2, 2 στην ενότητα 2.1.3, 2 στην ενότητα 2.2.2, 2 στην ενότητα και 1 στην ενότητα

162 Επίσης, θα πρέπει να είναι σε θέση να δικαιολογήσουν την απόδοση των ιδιοτήτων όπως στις ερωτήσεις: 3 στην ενότητα 2.1.2, 1 στην ενότητα 2.1.3, 1 στην ενότητα 2.2.2, 1 στην ενότητα και 1 στην ενότητα Τέλος, θα πρέπει να κατανοούν πως γίνονται ορισµένες ρυθµίσεις των blocks, όπως στις ερωτήσεις: 4 στην ενότητα και 3 στην ενότητα Εφαρµογή της νέας γνώσης Επανερχόµαστε στις αρχικές ιδέες και τα παραδείγµατα της φάσης της ανάδειξης των ιδεών των µαθητών και προσπαθούµε να τα λύσουµε µε τη νέα εµπειρία που έχουν αποκτήσει. Επαληθεύουµε ή διορθώνουµε τις ιδέες των µαθητών για την έννοια της µεταβλητής. 5.Ανασκόπηση και σύγκριση µεταξύ των ιδεών των µαθητών και της νέας γνώσης Οι µαθητές συζητούν τις απόψεις τους και συνειδητοποιούν την γνωστική πορεία αλλαγής των αρχικών ιδεών τους για την έννοια της µεταβλητής. ιαπιστώνουν αν η αρχική τους ιδέα για την µεταβλητή απέχει πολύ από την γνώση που έχουν λάβει τελικά µέσω την ασκήσεων του φύλλου εργασίας. Εκφράζουν και από µόνοι τους την πορεία της αλλαγής των ιδεών τους. Έτσι θα αναπτύξουν µεταγνωστικές ικανότητες, οι οποίες θα βοηθήσουν περαιτέρω στην οικοδόµηση της νέας γνώσης. 162

163 Αξιολόγηση επίτευξης των στόχων: Η αξιολόγηση περιλαµβάνει: 1)τη διαµορφωτική αξιολόγηση που θα διεξαχθεί κατά τη διάρκεια της διδασκαλίας µέσω παρατήρησης της συµµετοχής και του ενδιαφέροντος των µαθητών, µέσω των ερωτήσεών τους και γενικότερα µέσω παρατήρησης της εργασίας τους στην οµάδα. 2)την τελική αξιολόγηση στο τέλος της διδασκαλίας ένα φύλλο αξιολόγησης. Ενδεικτικά θα µπορούσε να δοθεί στους µαθητές το παρακάτω φύλλο αξιολόγησης. ΦΥΛΛΟ ΑΞΙΟΛΟΓΗΣΗΣ 1.Αντιστοιχίστε το κάθε Block µε την ονοµασία του: (Logic Block, Math Block, Random Block, Variable Block, Compare Block)... Εξηγήστε συνοπτικά τη λειτουργία του Εξηγήστε συνοπτικά τη λειτουργία του

164 ... Εξηγήστε συνοπτικά τη λειτουργία του Εξηγήστε συνοπτικά τη λειτουργία του Εξηγήστε συνοπτικά τη λειτουργία του Ποια είναι τα τρία χαρακτηριστικά που µας ενδιαφέρουν σε µία µεταβλητή; 3.Γράψτε ένα πρόγραµµα µε το οποίο θα δίνεται µια τιµή σε µία µεταβλητή µέσα από το πεδίο (0-10).Η τιµή αυτή θα παρουσιάζεται στην οθόνη του ροµπότ κατά τη διάρκεια της κίνησής του. 164

165 4.Το Compare Block τι τύπου αποτελέσµατα δίνει; Αν θέλουµε να αποθηκεύσουµε το αποτέλεσµα του σε ένα Variable Block τι ρύθµιση κάνουµε στο Datatype; 5.Πως µεταφέρουµε δεδοµένα ανάµεσα στα Blocks; 5+4. Math Block Variable Block True AND True. Logic Block Variable Block 6 < 4. Compare Block Variable Block True OR False. Logic Block Variable Block 5=5. Compare Block Variable Block 165

166 4.2.3 Μαθηµατική λογική- Άλγεβρα Boole Μαθηµατική λογική Ο υπολογιστής, εκτός από αριθµητικές πράξεις, έχει τη δυνατότητα να εκτελεί και συγκρίσεις, δηλαδή να επεξεργάζεται λογικά δεδοµένα. Τα δεδοµένα αυτά µπορεί να είναι απλές ή σύνθετες λογικές προτάσεις. Λογικές προτάσεις Μια πρόταση λέγεται λογική όταν µπορεί να χαρακτηριστεί αληθής ή ψευδής. Ένας τέτοιος χαρακτηρισµός µιας πρότασης λέγεται τιµή αλήθειας ή απλά τιµή της πρότασης. Για παράδειγµα : Ο αριθµός 4 είναι άρτιος αριθµός-αληθής πρόταση. Τη νύχτα λάµπει ο ήλιος- ψευδής πρόταση. Ο αριθµός 3 δεν είναι ζυγός αριθµός- αληθής πρόταση. Στα παραπάνω παραδείγµατα οι δύο πρώτες προτάσεις χαρακτηρίζονται ως απλές λογικές προτάσεις, γιατί ένα τµήµα τους δεν είναι αρκετό για να οριστεί µία νέα λογική πρόταση. Η Τρίτη πρόταση χαρακτηρίζεται σύνθετη, γιατί αν αφαιρεθεί ένα τµήµα της το «δεν»- προκύπτει πάλι λογική πρόταση. Ο αριθµός 3 είναι ζυγός αριθµός- ψευδής πρόταση. Κάθε λογική πρόταση που δεν είναι απλή χαρακτηρίζεται ως σύνθετη. Παραδείγµατα σύνθετων λογικών προτάσεων: Αν ο Κώστας είναι πατέρας του ηµήτρη, τότε ο ηµήτρης είναι γιός του Κώστα. Το 6 διαιρείται ακριβώς από το 3 και το 6 διαιρείται ακριβώς από το 2. Σήµερα θα βρέξει ή δεν θα βρέξει. Ποιες από τις ακόλουθες προτάσεις αποτελούν λογικές προτάσεις. Καληµέρα, τι κάνεις; Αύριο είναι τα γενέθλια µου. Μου δίνεις, σε παρακαλώ, ένα µολύβι! Ο ηµήτρης είναι ο απουσιολόγος της τάξης. Σήµερα την πρώτη ώρα έχουµε πληροφορική. Έλα να δεις ένα ωραίο πρόγραµµα Επεξεργασίας Κειµένου. 166

167 Γενικά, αν µετασχηµατίσουµε µία λογική πρόταση µε τη χρησιµοποίηση της λέξης «δεν» ή αν συνδέσουµε προτάσεις µε τη χρησιµοποίηση των λέξεων «και», «ή». «αν, τότε», δηµιουργούνται νέες προτάσεις. Αυτές οι διαδικασίες σχηµατισµού νέων προτάσεων λέγονται λογικές πράξεις. Άλγεβρα Boole Ο πρώτος που διατύπωσε τους βασικούς κανόνες µε τους οποίους οι λογικές προτάσεις µπορούν να παρουσιαστούν µε µαθηµατικά σύµβολα, ήταν ο Άγγλος µαθηµατικός George Boole στην εργασία του «The Mathematical Analysis Of Logic- Η µαθηµατική ανάλυση της λογικής», το Οι κανόνες αυτοί αποτελούν τµήµα της Άλγεβρας Λογικής- ή Άλγεβρας Boole προς τιµήν του µεγάλου αυτού µαθηµατικού- και χρησιµοποιούνται για να επιλύουµε λογικά προβλήµατα. Στην Άλγεβρα Boole υπάρχουν µόνο δύο είδη προτάσεων, αυτές που είναι αληθείς και αυτές που είναι ψευδείς. ηλαδή οι µεταβλητές που χρησιµοποιούνται στην άλγεβρα αυτή µπορούν να πάρουν µόνο δύο τιµές. Επίσης στην Άλγεβρα Boole ορίζονται και οι λογικές σταθερές. Λογική σταθερά ονοµάζεται µία πρόταση που είναι πάντοτε αληθής ή πάντοτε ψευδής και διαφέρει από τη λογική µεταβλητή, η οποία είναι µια πρόταση που µπορεί να είναι άλλοτε αληθής και άλλοτε ψευδής. Παραδείγµατα: Μετά τον Ιούνιο ακολουθεί ο Ιούλιος- Λογική σταθερά, αληθής, γιατί ισχύει πάντοτε. Η προηγούµενη από την Παρασκευή µέρα ονοµάζεται Σάββατο.- Λογική σταθερά, ψευδής, γιατί δεν ισχύει. Ο µονοψήφιος φυσικός αριθµός Χ είναι µεγαλύτερος από το 6. Λογική µεταβλητή, γιατί άλλοτε είναι αληθής, όταν Χ=7 ή 8 ή 9 και άλλοτε ψευδής, όταν ο Χ παίρνει τις τιµές 0,1,2,3,4,5,6. Συµπληρώστε στο αντίστοιχο πλαίσιο το γράµµα (Σ), αν η πρόταση είναι λογική σταθερά, και το γράµµα (Μ), αν η αντίστοιχη πρόταση είναι λογική µεταβλητή. Η επόµενη ηµέρα της Πέµπτη είναι η Παρασκευή. Το 5 διαιρεί ακριβώς το 8. Η εφαρµογή του λογιστικού φύλλου χρησιµοποιείται για την επεξεργασία κειµένου. Το άθροισµα των αριθµών χ και ψ είναι µεγαλύτερο από το 100. Ο Boole, µετά τις λογικές µεταβλητές και σταθερές, όρισε και τους κανόνες που καθορίζουν τις βασικές λογικές πράξεις. Για να ορίσει τις πράξεις αυτές, χρησιµοποίησε πίνακες στους οποίους περιλαµβάνονται όλοι οι δυνατοί συνδυασµοί των τιµών που µπορούν να πάρουν οι λογικές µεταβλητές καθώς και τα αποτελέσµατα που προκύπτουν από αυτούς τους συνδυασµούς. Στα επόµενα βλέπουµε τις βασικές πράξει της Άλγεβρας Boole. 167

168 Άρνηση-NOT Με την εφαρµογή της άρνησης σε µια λογική πρόταση αντιστρέφεται η αλήθεια των τιµών της, δηλαδή το true µετατρέπεται σε false και το false σε true. Για παράδειγµα: Α Σήµερα θα βρέξει. NOT Α Σήµερα δεν θα βρέξει. Πίνακας αλήθειας Α αληθής ψευδής NOT Α ψευδής αληθής Σύζευξη-AND Με την πράξη της σύζευξης συνθέτουµε δύο προτάσεις µε τη λέξη «και», οπότε σχηµατίζεται µια νέα πρόταση, η οποία είναι αληθής µόνο όταν και οι δύο αρχικές είναι αληθείς. Π.χ. Α Β Α AND Β Το 12 διαιρείται από το 6 Το 4 είναι διαιρέτης του 8 Το 12 διαιρείται από το 6 και το 4 είναι διαιρέτης του 8 Πίνακας αληθείας Α Β Α AND Β αληθής αληθής αληθής αληθής ψευδής ψευδής ψευδής αληθής ψευδής ψευδής ψευδής ψευδής ιάζευξη-or Με την πράξη της διάζευξης συνθέτουµε δύο προτάσεις µε την λέξη «ή», οπότε σχηµατίζεται µία νέα πρόταση, η οποία είναι αληθής όταν τουλάχιστον η µία από τις δύο αρχικές είναι αληθής. Π.χ. Α Β Α OR Β Το 12 διαιρείται από το 6 Το 12 διαιρείται από το 5 Το 12 διαιρείται από το 6 ή το 12 διαιρείται από το 5 168

169 Πίνακας αληθείας Α Β Α OR Β αληθής αληθής αληθής αληθής ψευδής αληθής ψευδής αληθής αληθής ψευδής ψευδής ψευδής Να συµπληρώσετε τον πίνακα αληθείας της λογικής πύλης OR µε τρεις εισόδους: Χ Ψ Ζ Χ OR Ψ OR Ζ Αποκλειστική διάζευξη-xor Με την πράξη της αποκλειστικής διάζευξης συνθέτουµε δύο προτάσεις βάζοντας το διαζευκτικό «είτε» µπροστά σε καθεµία, οπότε σχηµατίζεται µια νέα, η οποία είναι αληθής µόνο όταν η µία από τις αρχικές είναι αληθής και η άλλη ψευδής. Α Β Α XOR Β Το 12 διαιρείται από το 6 Το 12 διαιρείται από το 5 Είτε το 12 διαιρείται από το 6 είτε το 12 διαιρείται από το 5 169

170 Πίνακας αληθείας Α Β Α XOR Β αληθής αληθής ψευδής αληθής ψευδής αληθής ψευδής αληθής αληθής ψευδής ψευδής ψευδής Οι πράξεις σύζευξη, διάζευξη και αποκλειστική διάζευξη, εφαρµόζονται και για περισσότερες από δύο λογικές µεταβλητές. Οι συναρτήσεις που δέχονται ως είσοδο λογικές µεταβλητές και δίνουν ως έξοδο το αποτέλεσµα λογικών πράξεων καλούνται λογικές συναρτήσεις. Ασκήσεις: 1.Πότε µια πρόταση λέγεται: Α)λογική Β)λογική µεταβλητή Γ)λογική σταθερά. 2.Να αναφέρετε τις βασικές λογικές πράξεις. α) β) γ) δ)... 3.Ποια είναι η διαφορά µεταξύ λογικών µεταβλητών και λογικών σταθερών; 4.Να συµπληρωθούν οι παρακάτω πίνακες αλήθειας: Α Β Α AND Β NOT(A AND B) 170

171 A B C B OR C A XOR (B OR C) A B C NOT(A OR B) NOT(A OR B) AND C 171

172 4.3 ΕΞΟΙΚΕΙΩΣΗ ΜΕ ΤΗΝ ΕΝΝΟΙΑ ΤΗΣ ΕΠΙΛΟΓΗΣ Φύλλο εργασίας για την εξοικείωση µε την έννοια της Επιλογής 172

173 ΜΑΘΗΜΑ:.. ΘΕΜΑ: Το ροµπότ διαλέγει τις ενέργειες του. (Εξοικείωση µε την έννοια της Επιλογής.) ΗΜ/ΝΙΑ: _ / _ / 200_ 1.Εξοικείωση µε την έννοια της επιλογής. Όλα τα προβλήµατα δε λύνονται µόνο µε τη διαδοχική εκτέλεση κάποιων συγκεκριµένων εντολών. Πολλές φορές πρέπει να ελεγχθεί µια κατάσταση και ανάλογα να αποφασίσουµε αν θα συνεχίσουµε προς τη µία ή την άλλη κατεύθυνση τις ενέργειες µας. Για παράδειγµα, όταν θέλουµε να περάσουµε από µία διάβαση πρέπει πρώτα να ελέγξουµε το φανάρι για τους πεζούς. Αν το φανάρι είναι πράσινο, µπορούµε να περάσουµε τη διάβαση, διαφορετικά, αν το φανάρι είναι κόκκινο πρέπει να σταµατήσουµε και να περιµένουµε. Εδώ η κατάσταση που πρέπει να ελεγχθεί είναι το χρώµα του φαναριού και οι δύο δυνατές ενέργειες είναι να περάσουµε ή να περιµένουµε. Για την επίλυση των παρακάτω δραστηριοτήτων είναι απαραίτητοι 2 ρόλοι σε κάθε οµάδα, ο ρόλος του προγραµµατιστή και ο ρόλος του αναλυτή. Στο βήµα της εξοικείωσης ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται. Ο προγραµµατιστής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή για να ολοκληρωθεί η ενότητα. Στο βήµα των ασκήσεων ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, τόσο µε τις ενέργειες του προγραµµατιστή για την επίλυση της άσκησης όσο και µε τις απαντήσεις του στα ερωτήµατα. Οι ρόλοι πολλές φορές θα εναλλάσσονται, δηλαδή ο αναλυτής θα παίρνει το ρόλο του προγραµµατιστή και ο προγραµµατιστής του αναλυτή, ανάλογα µε τις υποδείξεις της κάθε δραστηριότητας. Παρακάτω γράψτε τα ονόµατα σας: Μέλος Α: Μέλος Β: 173

174 2. Το ροµπότ διαλέγει ανάµεσα σε δύο καταστάσεις. ( οµή επιλογής) Η δοµή επιλογής χρησιµοποιείται, όταν κατά την εκτέλεση του προγράµµατος θα πρέπει να ελέγξουµε µια κατάσταση και ανάλογα να εκτελέσουµε ή όχι κάποιες εντολές. Για παράδειγµα, θέλουµε να πιούµε ένα ποτήρι γάλα. Ελέγχουµε αν υπάρχει γάλα στο ψυγείο. Αν υπάρχει µπορούµε να συνεχίσουµε την ενέργεια µας και να γεµίσουµε ένα ποτήρι. Αν δεν υπάρχει, θα πρέπει να ακολουθήσουµε µία διαφορετική διαδικασία, θα πρέπει να πάµε να αγοράσουµε ένα µπουκάλι γάλα ώστε στη συνέχεια να µπορέσουµε να γεµίσουµε το ποτήρι µας. Στο NXT Software, η εντολή επιλογής εµφανίζεται µε το Switch Block. ιατυπώνεται µία συνθήκη στην αρχή του Block και ανάλογα µε την απάντηση ακολουθείται η κατάλληλη διαδροµή. Πρέπει να είµαστε προσεκτικοί στη διατύπωση του προγράµµατος, ώστε να είναι φανερό ποιες εντολές πρέπει να εκτελεστούν µόνο εφόσον ισχύει η συνθήκη 2.1 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας µάθουµε τώρα στο ροµπότ µας να ελέγχει αν έχει φτάσει σε αδιέξοδο και να ενεργεί ανάλογα. Αυτό που θα κάνουµε θα είναι να επιτρέψουµε στο ροµπότ να κινηθεί για κάποιο χρονικό διάστηµα. Στη συνέχει θα ελέγχει αν ένας αισθητήρας αφής είναι πιεσµένος, που θα σηµαίνει ότι έχει φτάσει σε κάποιο αδιέξοδο και ακουµπά σε έναν τοίχο. Αν πράγµατι είναι πιεσµένος, θα πρέπει να κινηθεί προς την αντίθετη κατεύθυνση και να στρίψει για να αποφύγει το αδιέξοδο. ιαφορετικά, θα συνεχίσει την ευθεία του κίνηση. Σε µία νέα καρτέλα εισάγουµε ένα move Block και θέτουµε νε κινείται για 5 δευτερόλεπτα ευθεία. Στη συνέχεια εισάγουµε ένα Switch Block και µετά από αυτό άλλο ένα move block που να κινείται για κάποιο χρονικό διάστηµα ευθεία. Στην περιοχή παραµέτρων του Switch Block κάνουµε τις παρακάτω ρυθµίσεις: 174

175 Control: Επιλέγουµε Sensor γιατί θέλουµε ο έλεγχος της επανάληψης να γίνεται µε έναν αισθητήρα. Sensor: ιαλέγουµε έναν Touch Sensor. Port: Επιλέγουµε τη θύρα που έχουµε συνδέσει τον Touch Sensor. Action: Επιλέγουµε το Pressed. Μέσα στο Switch Block εισάγουµε ένα move Block το οποίο θέτουµε νε κινείται προς πίσω για 5 δευτερόλεπτα και µετά από αυτό άλλο ένα που θα στρίβει για 2 δευτερόλεπτα. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Πραγµατοποιείται πράγµατι η ενέργεια που υποθέτουµε; Ερώτηση: 2.Αναφέρετε ποιες εντολές εκτελούνται ανάλογα µε την τιµή της συνθήκης. 3.Ποια είναι η συνθήκη που ελέγχεται σε αυτή την περίπτωση; Απάντηση Αναλυτή:

176 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 2.2 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Έστω τώρα ότι θέλουµε το ροµπότ µας καθώς κινείται ευθεία να ελέγχει αν υπάρχει κάποιο αντικείµενο µπροστά του σε απόσταση 100 εκατοστών. Αν υπάρχει θα οπισθοχωρεί για λίγο πριν συνεχίσει την κίνηση του την κίνηση του. Αν όχι θα συνεχίζει να κινείται ευθεία. Υπόδειξη: Ο αισθητήρας που θα χρησιµοποιήσουµε εδώ είναι ο Ultrasonic Sensor. Αυτό που χρειαζόµαστε είναι να επιλέξουµε σωστή θύρα και να γίνει η ρύθµιση στο πεδίο Compare, που θα δίνουµε την απόσταση στην οποία θέλουµε να ελέγξουµε αν υπάρχει αντικείµενο. 176

177 Ερωτήσεις: 1.Ποιες είναι οι ρυθµίσεις που πρέπει να γίνουν στο πεδίο παραµέτρων του Loop Bock; 2.Ποια είναι η συνθήκη που ελέγχεται από το πρόγραµµα; 3.Ποιες είναι οι δύο ενέργειες ανάλογα µε τη συνθήκη; Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 177

178 Στη συνέχεια φορτώστε την άσκηση στο ροµπότ και ελέγξτε αν πραγµατοποιείται η επιθυµητή κίνηση. Υπάρχει και µία άλλη µορφή της δοµής επιλογής, όπου ελέγχουµε µια κατάσταση και, αν ισχύει µια συνθήκη, εκτελούµε ένα σύνολο εντολών, ενώ αν δεν ισχύει η συνθήκη, εκτελούµε ένα διαφορετικό σύνολο εντολών. Πρέπει να είµαστε πολύ προσεκτικοί στη διατύπωση του προγράµµατος, ώστε να είναι φανερό ποιες εντολές πρέπει να εκτελεστούν ανάλογα µε το αν ισχύει ή όχι η συνθήκη. Για παράδειγµα, θέλουµε να παίξουµε µε ένα φίλο µας. Κοιτάµε από το παράθυρο τον καιρό. Αν δεν βρέχει αποφασίζουµε να παίξουµε στην αυλή µε τη µπάλα. Αν βρέχει αποφασίζουµε να µείνουµε µέσα στο σπίτι και να παίξουµε επιτραπέζιο. Η κατάσταση που ελέγχεται εδώ είναι ο καιρός. Οι δύο δυνατές ενέργειες είναι να παίξουµε έξω µπάλα ή µέσα επιτραπέζιο. 2.3 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος B. Αναλυτής: Μέλος A. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας εκπαιδεύσουµε τώρα το ροµπότ να ελέγχει αν πλησιάζει σε µία απότοµη αλλαγή του επιπέδου της επιφάνειας που κινείται και να ενεργεί ανάλογα. Αυτό που θέλουµε να κάνουµε εδώ στην ουσία είναι να δηµιουργήσουµε ένα πρόγραµµα που θα αποτρέπει το ροµπότ, αν για παράδειγµα κινείται πάνω σε ένα τραπέζι, να πέσει από αυτό. Σε αυτή την περίπτωση θα µπορούσαµε να χρησιµοποιήσουµε έναν αισθητήρα φωτός. Ο αισθητήρας αυτός, παράγει ένα ποσό φωτός, το οποίο χτυπά σε µία επιφάνεια και επιστρέφει κατά ένα ποσοστό πίσω στον αισθητήρα. Μετρώντας το ποσοστό αυτό το ροµπότ µπορεί να καταλάβει αν υπάρχει ένα επίπεδο ή κενό στο χώρο που χτυπά το φως. Αν τοποθετήσουµε τον αισθητήρα φωτός, Light Sensor, έτσι ώστε το φως να έχει κατεύθυνση προς κάτω, τότε µπορεί εύκολα να διαπιστώσει αν υπάρχει επίπεδο ή κενό. Εισάγουµε λοιπόν ένα Switch Block σε ένα νέο φύλλο. Στην περιοχή των παραµέτρων του κάνουµε τις παρακάτω ρυθµίσεις: 178

179 Control: Επιλέγουµε το Sensor. Sensor: Όπως είπαµε, επιλέγουµε το Light Sensor. Port: Τσεκάρουµε την θύρα εισόδου στην οποία τοποθετήσαµε την αισθητήρα φωτός. Compare: Εδώ επιλέγουµε το ποσοστό του φωτός πάνω από το οποίο θα εκτελεστεί µία κίνηση και κάτω από το οποίο θα εκτελεστεί µία άλλη. Επιλέγουµε το 50. Στη συνέχεια, εισάγουµε στο πρώτο σκέλος του Switch Block ένα Move Block που θα προκαλεί ευθεία κίνηση µπροστά, ενώ στο κάτω σκέλος εισάγουµε τρία move blocks. Το πρώτο θα προκαλεί κίνηση προς πίσω, το δεύτερο περιστροφή προς δεξιά ή αριστερά για την αποφυγή του κενού και το τρίτο κίνηση και πάλι στην ευθεία. Με αυτή τη διαδικασία, το ροµπότ θα ελέγξει µία φορά αν υπάρχει κενό µπροστά του και θα εκτελέσει ανάλογα τις αντίστοιχες κινήσεις. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Ποια είναι η συνθήκη ελέγχου; 2.Ποιές είναι οι δύο πιθανές ενέργειες; 3.Περιγράψτε τη λειτουργία του Light Sensor

180 Ερώτηση: 4.Τι θα γίνει αν δεν υπάρχει κενό µπροστά από το ροµπότ; 5.Τι θα γίνει αν υπάρχει κενό µπροστά από το ροµπότ; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:..... Συµπέρασµα οµάδας στην διαφωνία:

181 2.4 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος A. Αναλυτής: Μέλος B. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Ας δούµε τώρα πως θα µπορούσαµε να προκαλέσουµε µία αντίδραση του ροµπότ σε δυνατούς ήχους. Τώρα θα πρέπει να χρησιµοποιήσουµε το Sound Sensor. Θα επιλέξουµε λοιπόν το Sound Sensor στο Switch Block και αφού επιλέξουµε την θύρα που το έχουµε συνδέσει θα ρυθµίσουµε την ένταση του ήχου (έστω 50) πάνω από τον οποίο θα εκτελεσθεί το πάνω σκέλος και κάτω από το οποίο το κάτω σκέλος της επιλογής. Περιγράψτε λοιπόν ένα πρόγραµµα µε το οποίο, αν το ροµπότ ακούσει ένα δυνατό ήχο, όπως για παράδειγµα τη φωνή σας, θα τον λαµβάνει ως πρόσκληση και θα έρχεται ευθεία προς εσάς. Σε αντίθετη περίπτωση δεν θα οπισθοχωρεί και θα εµφανίζεται το µήνυµα «Περιµένω Πρόσκληση» στην οθόνη του. Ερωτήσεις: 1.Ποια είναι η κατάσταση που ελέγχεται από το πρόγραµµα; 2.Ποιες είναι οι δύο πιθανές ενέργειες; 3.Τι γίνεται όταν το ροµπότ ακούει τη φωνή σας; 4.Τι γίνεται όταν δεν ακούει τίποτα; 5.Πόσα Blocks έχετε χρησιµοποιήσει; Απάντηση Προγραµµατιστή:

182 5 Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Στη συνέχεια φορτώστε την άσκηση στο ροµπότ και ελέγξτε αν πραγµατοποιούνται οι επιθυµητές ενέργειες. 3.Το ροµπότ διαλέγει ανάµεσα σε πολλές καταστάσεις. ( οµή πολλαπλής επιλογής) Η δοµή πολλαπλής επιλογής είναι µια παραλλαγή της δοµής επιλογής, όπου υπάρχουν περισσότερες από δύο πιθανές ενέργειες που πρέπει να εκτελεστούν. Στην περίπτωση αυτή ελέγχουµε µία συνθήκη η οποία µπορεί να βρεθεί σε περισσότερες από δύο καταστάσεις και ορίζουµε ένα διαφορετικό σύνολο ενεργειών για κάθε διαφορετική πιθανή κατάσταση. Για παράδειγµα, έχουµε ένα ζάρι και ανάλογα µε το τι θα φέρει κάθε φορά που το ρίχνουµε, κάνουµε αντίστοιχα τόσα βήµατα µπροστά σε ένα παιχνίδι, µέχρι να φτάσουµε στο τέρµα. 182

183 3.1 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας προσπαθήσουµε να φτιάξουµε στο ροµπότ το παιχνίδι µε το ζάρι. Θα παράγεται ένας αριθµός από το ένα µέχρι το έξι και το ροµπότ θα εκτελεί τόσες περιστροφές στους κινητήρες του, όσες και ο αριθµός που θα παράγεται. Αρχικά πρέπει να εισάγουµε σε µία νέα καρτέλα ένα Random Block, το οποίο να παράγει αριθµούς από το 1 έως το 6,που θα αντιπροσωπεύουν τους αριθµούς που θα µπορούσε να φέρει το ζάρι. Στη συνέχεια εισάγουµε ένα Switch Block και κάνουµε τις παρακάτω ρυθµίσεις στην περιοχή των παραµέτρων του: Control: Επιλέγουµε το Value. Type: Επιλέγουµε το Number, γιατί ο έλεγχος θα γίνεται µε βάση αριθµούς. Display: Απεπιλέγουµε το Flat view ώστε να µπορούµε να δώσουµε περισσότερες των δύο επιλογές. Conditions: Πατώντας το + προσθέτουµε καταστάσεις µέχρι να φτάσουµε τις 7, 6 για τις επιλογές µας και µία που θα τη χρησιµοποιούµε για να δηλώσουµε ότι έχει γίνει λάθος. Επιλέγουµε την πρώτη κατάσταση, για παράδειγµα, ως default πατώντας πάνω της το πλήκτρο *. Στη συνέχεια, σε κάθε κατάσταση του Switch Block προσθέτουµε ένα move block και ένα Display Block. 183

184 Στο Move block επιλέγουµε στο Rotation τον αριθµό που αντιστοιχεί στην κάθε περίπτωση. Για παράδειγµα στην περίπτωση 1 βάζουµε τον αριθµό 1 στο rotation του move block και στο display block δίνουµε µέσω κειµένου να εµφανίζεται το 1, ώστε να φαίνεται στην οθόνη η αντίστοιχη περίπτωση. Θα πρέπει εδώ να προσέξουµε την επιπλέον default περίπτωση, που τη χρησιµοποιεί πάντα το Switch Block. Στη δική µας περίπτωση θα βάλουµε το move block να µην κινείται και το display να δείχνει µήνυµα λάθους. Τέλος, δεν πρέπει να ξεχάσουµε να συνδέσουµε την έξοδο από το Random Block και την είσοδο από το Switch Block. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Ποια είναι η κατάσταση που πρέπει να ελέγξουµε κάθε φορά; 2.Ποιες είναι οι πιθανές ενέργειες; 1 2 Ερώτηση: 3.Τι γίνεται αν το Random Block δώσει τιµή 3. Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 184

185 Συµπέρασµα οµάδας στην διαφωνία: 3.2 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) ηµιουργήστε ένα πρόγραµµα στο οποίο θα παράγεται ένας αριθµός από το 1 έως το 3 από ένα Random Block. Ο αριθµός αυτός θα περνάει σε ένα Switch Block. Αν περνάει ο αριθµός 1 το ροµπότ θα εκτελεί κίνηση πάνω σε τροχιά κύκλου. Αν περνάει ο αριθµός 2 το ροµπότ θα εκτελεί κίνηση πάνω σε τροχιά τρίγωνου και τέλος αν περνά ο αριθµός 3 θα εκτελεί κίνηση σε τροχιά τετράγωνου. Κάθε κίνηση θα πρέπει να αναγράφεται και στην οθόνη του ροµπότ. Υπόδειξη: Για τις κινήσεις να χρησιµοποιήσετε Record/Play Blocks. Ερωτήσεις: 1.Ποιά είναι η συνθήκη ελέγχου; 2.Ποιές είναι οι δυνατές ενέργειες; 3.Αν το ροµπότ κάνει κύκλο, ποιά τιµή έχει πάρει το switch block από το random; 4.Πόσες καταστάσεις θα δώσουµε στο Switch Block; 185

186 Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Στη συνέχεια φορτώστε την άσκηση στο ροµπότ και ελέγξτε αν πραγµατοποιούνται οι επιθυµητές ενέργειες. 186

187 4.Συµπερασµατική ραστηριότητα Εργαστείτε µαζί: Βήµα 1 ο ηµιουργήστε πρόγραµµα µε το οποίο το ροµπότ θα αποφεύγει εµπόδιο στην πορεία του όταν το ακουµπά. Βήµα 2 ο Στο προηγούµενο βήµα προσθέστε έναν έλεγχο για την αλλαγή του επιπέδου πάνω στο οποίο κινείται το ροµπότ, ώστε να αποφεύγει τα κενά. Βήµα 3 ο Προσθέστε την ιδιότητα να αποφεύγει εµπόδια και χωρίς να χρειάζεται να τα ακουµπήσει. Βήµα 4 ο ώστε την ικανότητα στο ροµπότ καθώς κινείται να σταµατά σε περίπτωση θορύβου γύρω του. 187

188 4.3.2 Σχέδιο Μαθήµατος για την εξοικείωση µε την έννοια της Επιλογής 188

189 ΣΧΕ ΙΟ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑ ΣΧΕ ΙΟΥ ΜΑΘΗΜΑΤΟΣ: Εξοικείωση µε την έννοια της επιλογής. ΕΜΠΛΕΚΟΜΕΝΕΣ ΓΝΩΣΤΙΚΕΣ ΠΕΡΙΟΧΕΣ: Μάθηµα Πληροφορικής ΤΑΞΗ: Γ Γυµνασίου ΙΑΡΚΕΙΑ: 2 διδακτικές ώρες. ΟΡΓΑΝΩΣΗ ΤΗΣ Ι ΑΣΚΑΛΙΑΣ ΚΑΙ ΑΠΑΙΤΟΥΜΕΝΗ ΥΛΙΚΟΤΕΧΝΙΚΗ ΥΠΟ ΟΜΗ: Προτείνεται η οργάνωση των µαθητών σε οµάδες 2 ατόµων. Απαιτείται εποµένως ο κατάλληλος αριθµός Η/Υ. Επίσης είναι απαραίτητη η ύπαρξη των τµηµάτων του ροµπότ MINDSTORMS. Το µάθηµα θα πρέπει να διεξαχθεί στο εργαστήριο πληροφορικής. Λογισµικό: NXT Software ΛΟΓΟΙ ΕΠΙΛΟΓΗΣ ΤΟΥ ΛΟΓΙΣΜΙΚΟΥ: NXT Software: Επιλέγουµε να εργαστούν οι µαθητές στο λογισµικό αυτό γιατί προσφέρει ένα εύχρηστο γραφικό περιβάλλον. Οι µαθητές εξοικειώνονται µε έννοιες προγραµµατισµού σε ευχάριστες συνθήκες έχοντας ως στόχο την ολοκλήρωση ασκήσεων και βλέποντας τα αποτελέσµατα στο ροµπότ, γεγονός που τους δίνει επιπλέον κίνητρα. Επίσης, αποτελεί ένα εύκολο σε κατανόηση περιβάλλον ώστε να µην απαιτείται µεγάλος χρόνος στην εκµάθηση των λειτουργιών του. Οι µαθητές µε ενέργειες drag and drop δοµούν προγράµµατα, ρυθµίζουν παραµέτρους και πειραµατίζονται. Έτσι βγάζουν τα ανάλογα συµπεράσµατα και οικοδοµούν τη νέα γνώση. ΣΚΟΠΟΣ: Να εξοικειωθούν τα παιδιά µε την έννοια της επιλογής, να κατανοήσουν τον λόγο που χρησιµοποιείται µέσα σε ένα πρόγραµµα και τις διάφορες µορφές της και να καλλιεργήσουν ερευνητικό και οµαδικό πνεύµα µέσα από συνεργατικές διαδικασίες. 189

190 Ι ΑΚΤΙΚΟΙ ΣΤΟΧΟΙ: Γνώσεις: Οι µαθητές θα πρέπει: Να κατανοήσουν σε τι χρειάζεται η δοµή της επιλογής µέσα σε ένα πρόγραµµα. Να γνωρίσουν τις µορφές που εµφανίζεται η επιλογή και να µπορούν να χρησιµοποιούν τη σωστή µορφή σε κάθε περίπτωση. Να εξοικειωθούν µε τη χρήση των αισθητήρων µέσω του Loop Block και να µπορούν να ορίζουν τις παραµέτρους τους. εξιότητες: Να αναπτύξουν δεξιότητες χρήσης και αξιοποίησης του λογισµικού NXT Software και γενικότερα του Η/Υ. Να αναπτύξουν δεξιότητες συνεργασίας και επικοινωνίας, καθώς εργάζονται µε το συγκεκριµένο λογισµικό. Στάσεις: Να αναπτύξουν θετική διάθεση απέναντι στον Η/Υ ως περιβάλλον εργασίας και ως εργαλείο άντλησης πληροφοριών. ΠΡΟΑΠΑΙΤΟΥΜΕΝΕΣ ΓΝΩΣΕΙΣ: Οι µαθητές θα πρέπει να έχουν αναπτύξει από προηγούµενα µαθήµατα τις βασικές δεξιότητες χρήσης του Η/Υ και του περιβάλλοντος του NXT Software. Επίσης θα πρέπει να έχει προηγηθεί η εξοικείωση στη χρήση των µεταβλητών µέσα σε ένα πρόγραµµα. ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΣΧΕ ΙΟΥ Στο διδακτικό σενάριο αυτό θα γίνει µια πρώτη επαφή των µαθητών µε την έννοια της επιλογής και των αισθητήρων του ΝΧΤ Software, οι οποίοι θα παρουσιαστούν µέσω του Loop Block. Οι µαθητές θα διαπιστώσουν τους λόγους που είναι απαραίτητη η δοµή επιλογής σε ένα πρόγραµµα, θα µάθουν τις µορφές στις οποίες αυτή εµφανίζεται και θα γνωρίσουν τρόπους λειτουργίας των αισθητήρων του ροµπότ. Οι διδακτικοί στόχοι που αφορούν τις δεξιότητες και τις στάσεις, αναπτύσσονται καθ όλη τη διάρκεια της διδακτικής διδασκαλίας µέσω συνεργατικών διαδικασιών και διερευνητικών δραστηριοτήτων. 190

191 Για τη διδακτική διαπραγµάτευση των παραπάνω στόχων χρησιµοποιούµε το εποικοδοµητικό διδακτικό µοντέλο. Το µάθηµα θα διεξαχθεί στις εξής φάσεις: 1.Ανάδειξη των ιδεών των µαθητών. 2. οκιµασία των ιδεών και καταγραφή των αποτελεσµάτων της. 3. Συζήτηση ιδεών και συµπεράσµατα. 4. Εφαρµογή της νέας γνώσης. 5.Ανασκόπηση και σύγκριση µεταξύ των ιδεών των µαθητών και της νέας γνώσης. Ο ρόλος του καθηγητή είναι συµβουλευτικός και καθοδηγητικός. Εµψυχώνει, συµβουλεύει και καθοδηγεί τις οµάδες, προκειµένου να πειραµατιστούν µε το λογισµικό, να συζητήσουν και να συνάγουν συµπεράσµατα. 1.Ανάδειξη των ιδεών των µαθητών. Συζητάµε µε τους µαθητές την έννοια της επιλογής και απαριθµούµε τις απόψεις τους. Ρωτάµε τους µαθητές αν µπορούν να φανταστούν παραδείγµατα από την καθηµερινότητα που χρειαζόµαστε την επιλογή. Στη συνέχεια ρωτάµε αν θα µπορούσαν να φανταστούν προβλήµατα µέσα σε ένα πρόγραµµα στην πλατφόρµα NXT Software όπου να είναι απαραίτητη η επιλογή. Συζητάµε στην τάξη πως θα µπορούσαν τα υλοποιηθούν τα παραδείγµατα που έχουν αναφερθεί. Καταγράφουµε τις ιδέες και τα παραδείγµατα των µαθητών χωρίς να τα σχολιάσουµε. 2. οκιµασία των ιδεών και καταγραφή των αποτελεσµάτων της. Μοιράζουµε στους µαθητές το Φύλλο εργασίας και τους καλούµενα το διαπραγµατευτούν στην οµάδα τους. Οι αναµενόµενες απαντήσεις στις ασκήσεις είναι οι παρακάτω: Ενότητα

192 1.Το ροµπότ πρέπει να κινηθεί για 5 δευτερόλεπτα και στη συνέχεια αν ο αισθητήρας είναι πατηµένος να οπισθοχωρήσει για άλλα 5 δευτερόλεπτα και να στρίψει πριν συνεχίσει να κινείται ευθεία. ιαφορετικά, αν δεν πιεσθεί ο αισθητήρας το ροµπότ θα συνεχίσει να κινείται ευθεία. 2.Αν ο αισθητήρας είναι πιεσµένος εκτελείται οπισθοχώρηση και στροφή. Αν ο αισθητήρας δεν είναι πιεσµένος δεν εκτελείται κάτι διαφορετικό, απλά συνεχίζεται η ροή του προγράµµατος. 3.Ελέγχεται η κατάσταση του αισθητήρα αφής. Ενότητα Στο Switch Block, στο πεδίο Control επιλέγουµε Sensor και στο πεδίο Sensor επιλέγουµε Ultrasonic Sensor. Επιλέγουµε τη σωστή θύρα εισόδου στο πεδίο Port. Στο πεδίο Show διαλέγουµε τα εκατοστά και τέλος στην απόσταση ρυθµίζουµε να είναι µικρότερη του Ελέγχεται η τιµή που δίνει ο Ultrasonic αισθητήρας. 3.Οι δύο ενέργειες ανάλογα µε τη συνθήκη είναι: αν υπάρχει αντικείµενο σε απόσταση µικρότερη των 100 εκατοστών οπισθοχωρεί, αν δεν υπάρχει αντικείµενο συνεχίζεται η ροή του προγράµµατος. Ενότητα Η συνθήκη που ελέγχεται από ο πρόγραµµα είναι η ποσότητα φωτός που επιστρέφεται στον αισθητήρα. 2.Το ροµπότ είτε θα προχωρήσει µπροστά, είτε θα οπισθοχωρήσει θα στρίψει και έπειτα θα προχωρήσει µπροστά προς την νέα κατεύθυνση. 192

193 3.Ο αισθητήρας αυτός, παράγει ένα ποσό φωτός, το οποία χτυπά σε µία επιφάνεια και επιστρέφει κατά ένα ποσοστό πίσω στον αισθητήρα. Μετρώντας το ποσοστό αυτό το ροµπότ µπορεί να καταλάβει αν υπάρχει ένα επίπεδο ή κενό στο χώρο που χτυπά το φως. 4. Αν δεν υπάρχει κενό µπροστά από το ροµπότ θα προχωρήσει µπροστά. 5.Αν υπάρχει κενό µπροστά από το ροµπότ θα οπισθοχωρήσει θα στρίψει και έπειτα θα προχωρήσει µπροστά προς την νέα κατεύθυνση. Ενότητα Η κατάσταση που ελέγχεται από το πρόγραµµα είναι η ένταση του ήχου που ακούγεται. 2.Το ροµπότ είτε θα προχωρήσει µπροστά, είτε προς πίσω εµφανίζοντας ένα µήνυµα στην οθόνη του. 3.Όταν το ροµπότ ακούσει φωνή προχωρά µπροστά. 4. Όταν το ροµπότ δεν ακούει κάτι προχωρά προς πίσω εµφανίζοντας ένα µήνυµα στην οθόνη του. 5.Έχουµε χρησιµοποιήσει 4 blocks. Ενότητα Η συνθήκη που ελέγχεται είναι η τιµή που παράγει το Random Block. 2.Πιθανές ενέργειες είναι η περιστροφή των κινητήρων από µία έως έξι φορές καθώς και η εµφάνιση του αντίστοιχου αριθµού. 3.Όταν το Random Block δίνει την τιµή 3, εκτελούνται 3 περιστροφές στους κινητήρες και εµφανίζεται στην οθόνη του ροµπότ ο αριθµός

194 Ενότητα Η συνθήκη που ελέγχεται είναι η τιµή που παράγει το Random Block. 2. υνατές ενέργειες είναι να εκτελέσει το ροµπότ κυκλική, τριγωνική ή τετραγωνική κίνηση και να εµφανιστεί ταυτόχρονα σχετικό µήνυµα στην οθόνη. 3.Αν το ροµπότ κάνει κύκλο, το switch block έχει πάρει από το random την τιµή 1. 4.Στο Switch Block πρέπει να δώσουµε 4 καταστάσεις. Οι 3 είναι για τις δυνατές ενέργειες και µία default που απαιτείται από το block. Συµπερασµατική δραστηριότητα: Ο συνολικός κώδικας, µε όλα τα βήµατα για αυτή την δραστηριότητα φαίνεται παρακάτω: 3.Συζήτηση ιδεών και συµπεράσµατα Οι οµάδες των παιδιών ανακοινώνουν τα αποτελέσµατα του φύλλου εργασίας στην τάξη. Συζητούν τα αποτελέσµατα, βρίσκουν τις σωστές λύσεις και καταλήγουν στα αποδεκτά αποτελέσµατα. Τα παιδιά θα πρέπει να µάθουν να βρίσκουν τις συνθήκες που ελέγχονται σε κάθε δοµή επιλογής όπως στις ερωτήσεις:3 ενότητα 2.1, 2 ενότητα 2.2, 1 ενότητα 2.3, 1 ενότητα 2.4, 1 ενότητα 3.1, 1 ενότητα 3.2. Επίσης θα πρέπει να κατανοούν τις διαφορετικές ενέργειες και πότε αυτές εκτελούνται, όπως στις ερωτήσεις: 2 ενότητα 2.1, 3 ενότητα 2.2, 2, 3 και 4 ενότητα 2.3, 2, 3 και 4 ενότητα 2.4, 2 και 3 ενότητα 3.1, 2 και 3 ενότητα Εφαρµογή της νέας γνώσης Επανερχόµαστε στις αρχικές ιδέες και τα παραδείγµατα της φάσης της ανάδειξης των ιδεών των µαθητών και προσπαθούµε να τα λύσουµε µε τη νέα εµπειρία που έχουν αποκτήσει. Επαληθεύουµε ή διορθώνουµε τις ιδέες των µαθητών για την δοµή της επιλογής. 194

195 5.Ανασκόπηση και σύγκριση µεταξύ των ιδεών των µαθητών και της νέας γνώσης Οι µαθητές συζητούν τις απόψεις τους και συνειδητοποιούν την γνωστική πορεία αλλαγής των αρχικών ιδεών τους για την έννοια της επιλογής. ιαπιστώνουν αν η αρχική τους ιδέα για την επιλογή απέχει πολύ από την γνώση που έχουν λάβει τελικά µέσω την ασκήσεων του φύλλου εργασίας. Εκφράζουν και από µόνοι τους την πορεία της αλλαγής των ιδεών τους. Έτσι θα αναπτύξουν µεταγνωστικές ικανότητες, οι οποίες θα βοηθήσουν περαιτέρω στην οικοδόµηση της νέας γνώσης. 195

196 Αξιολόγηση επίτευξης των στόχων: Η αξιολόγηση περιλαµβάνει: 1)τη διαµορφωτική αξιολόγηση που θα διεξαχθεί κατά τη διάρκεια της διδασκαλίας µέσω παρατήρησης της συµµετοχής και του ενδιαφέροντος των µαθητών, µέσω των ερωτήσεών τους και γενικότερα µέσω παρατήρησης της εργασίας τους στην οµάδα. 2)την τελική αξιολόγηση στο τέλος της διδασκαλίας ένα φύλλο αξιολόγησης. Ενδεικτικά θα µπορούσε να δοθεί στους µαθητές το παρακάτω φύλλο αξιολόγησης. ΦΥΛΛΟ ΑΞΙΟΛΟΓΗΣΗΣ 1.Πότε είναι απαραίτητη η χρήση της επιλογής; 2.Αναφερετε ποιες µορφές επιλογής υπάρχουν και σχολιάστε την καθεµία. Α) Β) Γ) 196

197 3.Ποιους αισθητήρες του ΝΧΤ γνωρίζετε; Α) Β) Γ) ) Μπορείτε να περιγράψετε συνοπτικά τη λειτουργία του καθένα; 4. ίνεται το παράδειγµα από το πρώτο φύλλο εργασίας: Απαντήστε στις παρακάτω ερωτήσεις: 197

198 α)ποια είναι η συνθήκη ελέγχου στο πρώτο Switch Block; β)ποιες είναι οι δυνατές ενέργειες στο πρώτο Switch Block; γ)ποια είναι η συνθήκη ελέγχου στο δεύτερο Switch Block; δ)ποιες είναι οι δυνατές ενέργειες στο δεύτερο Switch Block; ε)τι θα γίνει αν πιεσθεί ο αισθητήρας αφής; στ)τι θα γίνει αν στον αισθητήρα φωτός δεν επιστρέψει µεγάλη ποσότητα φωτός; 198

199 4.4 ΕΞΟΙΚΕΙΩΣΗ ΜΕ ΤΗΝ ΕΝΝΟΙΑ ΤΗΣ ΕΠΑΝΑΛΗΨΗΣ Φύλλο Εργασίας για την εξοικείωση µε την έννοια της Επανάληψης 199

200 ΜΑΘΗΜΑ:.. ΘΕΜΑ: Το ροµπότ επαναλαµβάνει κινήσεις. (Εξοικείωση µε την έννοια της Επανάληψης.) ΗΜ/ΝΙΑ: _ / _ / 200_ 1.Εξοικείωση µε την έννοια της επανάληψης. Πολλές φορές, για να λύσουµε ένα πρόβληµα, χρειάζεται να επαναλάβουµε αρκετές φορές µια ακολουθία βηµάτων. Μάλιστα, σε ορισµένες περιπτώσεις δεν είναι εκ των προτέρων γνωστό για πόσες φορές θα χρειαστεί να επαναλάβουµε αυτά τα βήµατα. Για παράδειγµα, όταν προσπαθούµε να µάθουµε το µάθηµα της ιστορίας, χρειάζεται να το διαβάσουµε περισσότερες από µία φορές µέχρι να είµαστε σίγουροι ότι το έχουµε µάθει. Τις περισσότερες φορές, προκειµένου να συνεχίσουµε την επανάληψη των εντολών, ελέγχουµε µια κατάσταση και ενεργούµε ανάλογα. Η δοµή επανάληψης σε έναν αλγόριθµο µας επιτρέπει να εκτελέσουµε µια οµάδα εντολών πολλές φορές και η επανάληψη σταµατά, όταν πάψει να ισχύει µια συνθήκη. Είναι φανερό ότι η οµάδα εντολών προς επανάληψη µπορεί να εκτελεστεί από καµία µέχρι άπειρες φορές. Η δεύτερη περίπτωση συνήθως δεν είναι επιθυµητή και, αν συµβεί, λέµε ότι το πρόγραµµα «πέφτει σε ατέρµονα βρόχο». Για το λόγο αυτό, στη δηµιουργία µιας δοµής επανάληψης πρέπει να εξασφαλίζουµε ότι η συνθήκη ελέγχου της επανάληψης θα πάψει κάποια στιγµή να ισχύει, ώστε να σταµατήσει η επανάληψη. Για την επίλυση των παρακάτω δραστηριοτήτων είναι απαραίτητοι 2 ρόλοι σε κάθε οµάδα, ο ρόλος του προγραµµατιστή και ο ρόλος του αναλυτή. Στο βήµα της εξοικείωσης ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται. Ο προγραµµατιστής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή για να ολοκληρωθεί η ενότητα. Στο βήµα των ασκήσεων ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, τόσο µε τις ενέργειες του προγραµµατιστή για την επίλυση της άσκησης όσο και µε τις απαντήσεις του στα ερωτήµατα. Οι ρόλοι πολλές φορές θα εναλλάσσονται, δηλαδή ο αναλυτής θα παίρνει το ρόλο του προγραµµατιστή και ο προγραµµατιστής του αναλυτή, ανάλογα µε τις υποδείξεις της κάθε δραστηριότητας. 200

201 Παρακάτω γράψτε τα ονόµατα σας: Μέλος Α: Μέλος Β: Ας θυµηθούµε τώρα λίγο το παράδειγµα µε το Loop Block από το πρώτο φύλλο εργασίας. Εκεί είχαµε πει ότι θέλουµε το ροµπότ να εκτελέσει µία τριγωνική κίνηση διανύοντας µετά από κάθε στροφή την ίδια απόσταση. Πώς θα µπορούσαµε να χρησιµοποιήσουµε το Loop Block σε µία τέτοια περίπτωση; Και είχαµε καταλήξει στο παρακάτω πρόγραµµα: Βλέπουµε εδώ τα δύο move block επαναλαµβάνονται τρεις φορές, για να πραγµατοποιηθεί η κίνηση που θέλουµε. Εποµένως έχουµε το σώµα της επανάληψης που είναι τα δύο move block και επανάληψης που είναι η µέτρηση µέχρι τον αριθµό τρία. την συνθήκη Ας προχωρήσουµε τώρα ανακαλύπτοντας και άλλες συνθήκες επανάληψης που µας προσφέρει το Loop block. 1.1 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Στο φύλλο εργασίας Γ είδαµε πως µπορούµε να εκπαιδεύσουµε το ροµπότ µας να αποφεύγει ένα εµπόδιο. Ας δούµε τώρα έναν καινούριο τρόπο αποφυγής όχι µόνο ενός αλλά και περισσότερων εµποδίων. Από το πρώτο φύλλο εργασίας, ανοίγουµε το παράδειγµα

202 Αυτό το πρόγραµµα όπως είδαµε επιτρέπει στο ροµπότ να αλλάξει κατεύθυνση όταν φτάσει σε ένα αδιέξοδο. Τι γίνεται όµως αν το ροµπότ καθώς κινείται πέσει και σε άλλο αδιέξοδο; Εδώ η λύση δίνεται µε τη χρήση ενός Loop Block. Εισάγουµε λοιπόν στο πρόγραµµά µας ένα Loop Block και µε τη λειτουργία Drag and Drop Τοποθετούµε µέσα του όλο το πρόγραµµα. Στη συνέχεια στην περιοχή παραµέτρων του Loop Block κάνουµε τις παρακάτω ρυθµίσεις: Control: Επιλέγουµε το Forever, ώστε να επαναλαµβάνεται άπειρες φορές αφού θέλουµε να αποφεύγουµε άπειρα εµπόδια. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Πραγµατοποιείται πράγµατι το πρόγραµµα όσες φορές χρειάζεται; Ερώτηση: 2. Ποια είναι εδώ η συνθήκη επανάληψης; 3.Ποιο είναι το σώµα της επανάληψης; Απάντηση Αναλυτή:

203 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 1.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας κάνουµε άλλο ένα παράδειγµα µε ένα Loop Block και τη δηµιουργία ενός σχήµατος. Αυτή τη φορά θα δοκιµάσουµε να φτιάξουµε ένα πεντάγωνο. Όµοια µε τη δηµιουργία του τριγώνου, εισάγουµε σε µία νέα καρτέλα δύο Move Blocks. Το πρώτο κινείται για ορισµένη απόσταση ευθεία και το δεύτερο εκτελεί περιστροφή σε γωνία 70 περίπου µοιρών. Στη συνέχεια προσθέτουµε το Loop Block και αφού τοποθετήσουµε µέσα σε αυτό τα move blocks, κάνουµε τις παρακάτω ρυθµίσεις στην περιοχή παραµέτρων του: 203

204 Control: Επιλέγουµε το count, γιατί θέλουµε ορισµένο αριθµό επαναλήψεων. Until: Εισάγουµε τον αριθµό των επαναλήψεων. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1. Ποια είναι εδώ η συνθήκη επανάληψης; 2.Ποιο είναι το σώµα της επανάληψης; 1 2 Ερώτηση: 3.Πόσες φορές πρέπει να γίνει η επανάληψη; 4.Τερµατίζει η επανάληψη µετά από τον αριθµό επαναλήψεων που έχουµε επιλέξει; Απάντηση Αναλυτή: 3 4 Απάντηση Προγραµµατιστή: Συµφωνώ 204

205 ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 1.3 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Θα δούµε τώρα ένα απλό παράδειγµα για το πώς λειτουργούν οι αισθητήρες σε ένα Loop Block. Θέλουµε για παράδειγµα το ροµπότ µας να κινείται απεριόριστα, µέχρι να ακουµπήσει ένα αντικείµενο και να σταµατήσει. Η απεριόριστη κίνηση επιτυγχάνεται µε ένα Move Block, ρυθµίζοντάς το να κινείται Unlimited. Τώρα βάζουµε και ένα Loop Block στο πρόγραµµα και τοποθετούµε µέσα σε αυτό το move block. Στη συνέχεια, στην περιοχή παραµέτρων του Loop Block κάνουµε τις παρακάτω ρυθµίσεις: 205

206 Control: Επιλέγουµε το Sensor. Sensor: Επιλέγουµε το Touch Sensor. Port: Τσεκάρουµε τη θύρα στην οποία τοποθετήσαµε τον αισθητήρα αφής. Action: Επιλέγουµε Pressed. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Ποια είναι η συνθήκη επανάληψης σε αυτή την περίπτωση; 2. Ποιο είναι το σώµα της επανάληψης; 1 2 Ερώτηση: 3.Τι θα γίνει αν πιέσουµε τον αισθητήρα; Απάντηση Αναλυτή: 3 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 206

207 Συµπέρασµα οµάδας στην διαφωνία: 1.4 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος B. Αναλυτής: Μέλος A. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας µάθουµε τώρα πως λειτουργεί ένα Loop Block µε χρονόµετρο. Αρχικά µε τέσσερα Record/Play Block, καταγράφουµε µία κυκλική, µία τετραγωνική, µία τριγωνική και µία κίνηση σε παραλληλόγραµµο. Όλες τις κινήσεις τις καταγράφουµε µέσα σε 5 δευτερόλεπτα, δηλαδή στο πεδίο Time των Record/Play Blocks βάζουµε την τιµή 5. Αποθηκεύουµε τις ενέργειές µας. Στη συνέχεια ανοίγουµε µία νέα καρτέλα και εισάγουµε ένα Loop Block. Στην περιοχή παραµέτρων του Loop Block κάνουµε τις παρακάτω ρυθµίσεις: Control: Επιλέγουµε το Time. Seconds: Εισάγουµε την τιµή 40. Στη συνέχεια µέσα στο Loop Block εισάγουµε τέσσερα Record/Play blocks επιλέγοντας να εκτελέσουν µε τη σειρά τις παρακάτω ενέργειες: το πρώτο να κάνει κύκλο το δεύτερο να κάνει τετράγωνο το τρίτο να κάνει τρίγωνο και το τέταρτο τα κάνει παραλληλόγραµµο. 207

208 Πραγµατοποιήστε τις ενέργειες αυτές και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Ποια είναι η συνθήκη της επανάληψης; 2.Ποιο είναι το σώµα της επανάληψης; 3.Πόσες φορές θα εκτελεστεί η επανάληψη; Ερωτήσεις: 4.Αν στο πεδίο Until του Loop Block βάλουµε την τιµή 60 πόσες φορές θα εκτελεστεί η επανάληψη; 5.Ποιες κινήσεις εκτελούνται τελικά αν στο πεδίο Until βάλουµε την τιµή 10; 6.Αν θέλουµε η επανάληψη να εκτελεστεί µόνο µία φορά, ποια τιµή πρέπει να βάλουµε στο Until; Απάντηση Αναλυτή:

209 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 1.5 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Το επόµενο βήµα είναι να δούµε πως λειτουργεί η λογική τιµή σε ένα Loop Block. Σε αυτή τη δραστηριότητα θα διδάξουµε στο ροµπότ να ελέγχει αν έχει αρκετό χώρο για να κινηθεί. Το ροµπότ µας θα ελέγχει αν ακουµπάει ένα αντικείµενο, ή αν βρίσκεται µπροστά του ένα αντικείµενο σε απόσταση µικρότερη των 50 εκατοστών. Αν δεν υπάρχει κάτι, το ροµπότ µας θα µπορεί να συνεχίσει να κινείται ελεύθερα. Σε µία νέα καρτέλα εισάγουµε ένα Loop Block. 209

210 Στην περιοχή των παραµέτρων του κάνουµε τις παρακάτω ρυθµίσεις: Control: Επιλέγουµε το Logic Until: Επιλέγουµε το False, ο λόγος θα γίνει φανερός παρακάτω. Στη συνέχεια µέσα στο Loop Block, από την Complete παλέτα και την κατηγορία Sensor, εισάγουµε ένα Touch Sensor Block και ένα Ultrasonic Sensor Block. Στην περιοχή των παραµέτρων τους κάνουµε τις παρακάτω ρυθµίσεις: Port: Επιλέγουµε την θύρα που έχουµε συνδέσει τον αισθητήρα αφής. Action: Επιλέγουµε το pressed. Port: Επιλέγουµε την θύρα που έχουµε συνδέσει τον Ultrasonic sensor. Compare: Επιλέγουµε η απόσταση να είναι µικρότερη των 50 εκατοστών. Show: Επιλέγουµε η µονάδα µέτρησης να είναι σε εκατοστά. Τοποθετούµε µετά ένα Logic Block, στο οποίο, θα εισάγουµε τις τιµές των δύο προηγούµενων Blocks από τις κατάλληλες λογικές θύρες όπως φαίνεται στην εικόνα: 210

211 Στην περιοχή των παραµέτρων του Logic Block κάνουµε τις παρακάτω ρυθµίσεις: Operation: Επιλέγουµε το Or, αφού θέλουµε να ισχύει είτε η µία είτε η άλλη συνθήκη, είτε και οι δύο. Επίσης πρέπει η έξοδος του Logic Block να συνδέεται µε την είσοδο ελέγχου του Loop. Εδώ φαίνεται γιατί επιλέξαµε το False, αφού θέλουµε να συνεχίζεται η επανάληψη όταν το ροµπότ δεν ακουµπά κάτι, ούτε υπάρχει αντικείµενο µπροστά του. Τέλος, τοποθετούµε ένα Move Block που θα κινείται απεριόριστα µέσα στο loop block κι αυτό. Πραγµατοποιήστε τις ενέργειες αυτές και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Ποια είναι η συνθήκη της επανάληψης; 2.Ποιο είναι το σώµα της επανάληψης; 3.Πότε σταµατά να εκτελείτε η επανάληψη;

212 Ερωτήσεις: 4.Τι γίνεται όταν το ροµπότ δεν ακουµπά ένα αντικείµενο αλλά βλέπει κάτι σε απόσταση µικρότερη των 50 εκατοστών; 5.Τι γίνεται όταν το ροµπότ δεν ακουµπά ένα αντικείµενο αλλά βλέπει κάτι σε απόσταση µεγαλύτερη των 50 εκατοστών; 6.Τι θα έπρεπε να κάνουµε αν θέλαµε να ελέγξουµε αν υπάρχει και κενό στο επίπεδο καθώς κινείται το ροµπότ; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 212

213 2. Συµπερασµατική ραστηριότητα ίνεται το παρακάτω πρόγραµµα και οι δύο περιοχές παραµέτρων. Μελετήστε τις εικόνες µε την οµάδα σας και απαντήστε στις ερωτήσεις. 213

214 Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ερωτήσεις: 1.Ποια είναι η συνθήκη επανάληψης στον εξωτερικό βρόγχο; 2.Ποιο είναι το σώµα της επανάληψης στον εξωτερικό βρόγχο; 3.Πότε σταµατά να εκτελείτε ο εξωτερικός βρόγχος; 4.Ποιούς αισθητήρες χρησιµοποιούµε στο πρόγραµµα; 5.Τι γένεται στην πρώτη περίπτωση της επιλογής και πότε πραγµατοποιείται αυτή; 6.Τι πρέπει να κάνουµε αν θέλαµε ο εξωτερικός βρόγχος να εκτελεστεί µόνο δύο φορές; Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: 214

215 Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ερωτήσεις: 7.Ποια είναι η συνθήκη επανάληψης στον εσωτερικό βρόγχο; 8.Ποιο είναι το σώµα της επανάληψης στον εσωτερικό βρόγχο; 9.Πότε σταµατά να εκτελείτε ο εσωτερικός βρόγχος; 10.Ποια blocks χρησιµοποιούµε στο πρόγραµµα; 11.Τι γένεται στην δεύτερη περίπτωση της επιλογής και πότε πραγµατοποιείται αυτή; 12. Τι πρέπει να κάνουµε αν θέλαµε ο εσωτερικός βρόγχος να εκτελεστεί µέχρι να ακούσει το ροµπότ κάποιον ήχο; 215

216 Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 216

217 4.4.2 Σχέδιο Μαθήµατος για την εξοικείωση µε την έννοια της Επανάληψης 217

218 ΣΧΕ ΙΟ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑ ΣΧΕ ΙΟΥ ΜΑΘΗΜΑΤΟΣ: Εξοικείωση µε την έννοια της επανάληψης. ΕΜΠΛΕΚΟΜΕΝΕΣ ΓΝΩΣΤΙΚΕΣ ΠΕΡΙΟΧΕΣ: Μάθηµα Πληροφορικής ΤΑΞΗ: Γ Γυµνασίου ΙΑΡΚΕΙΑ: 2 διδακτικές ώρες. ΟΡΓΑΝΩΣΗ ΤΗΣ Ι ΑΣΚΑΛΙΑΣ ΚΑΙ ΑΠΑΙΤΟΥΜΕΝΗ ΥΛΙΚΟΤΕΧΝΙΚΗ ΥΠΟ ΟΜΗ: Προτείνεται η οργάνωση των µαθητών σε οµάδες 2 ατόµων. Απαιτείται εποµένως ο κατάλληλος αριθµός Η/Υ. Επίσης είναι απαραίτητη η ύπαρξη των τµηµάτων του ροµπότ MINDSTORMS. Το µάθηµα θα πρέπει να διεξαχθεί στο εργαστήριο πληροφορικής. Λογισµικό: NXT Software ΛΟΓΟΙ ΕΠΙΛΟΓΗΣ ΤΟΥ ΛΟΓΙΣΜΙΚΟΥ: NXT Software: Επιλέγουµε να εργαστούν οι µαθητές στο λογισµικό αυτό γιατί προσφέρει ένα εύχρηστο γραφικό περιβάλλον. Οι µαθητές εξοικειώνονται µε έννοιες προγραµµατισµού σε ευχάριστες συνθήκες έχοντας ως στόχο την ολοκλήρωση ασκήσεων και βλέποντας τα αποτελέσµατα στο ροµπότ, γεγονός που τους δίνει επιπλέον κίνητρα. Επίσης, αποτελεί ένα εύκολο σε κατανόηση περιβάλλον ώστε να µην απαιτείται µεγάλος χρόνος στην εκµάθηση των λειτουργιών του. Οι µαθητές µε ενέργειες drag and drop δοµούν προγράµµατα, ρυθµίζουν παραµέτρους και πειραµατίζονται. Έτσι βγάζουν τα ανάλογα συµπεράσµατα και οικοδοµούν τη νέα γνώση. ΣΚΟΠΟΣ: Να εξοικειωθούν τα παιδιά µε την έννοια της επιλογής, να κατανοήσουν τον λόγο που χρησιµοποιείται µέσα σε ένα πρόγραµµα και τις διάφορες µορφές της και να καλλιεργήσουν ερευνητικό και οµαδικό πνεύµα µέσα από συνεργατικές διαδικασίες. 218

219 Ι ΑΚΤΙΚΟΙ ΣΤΟΧΟΙ: Γνώσεις: Οι µαθητές θα πρέπει: Να κατανοήσουν το ρόλο της δοµή της επανάληψης µέσα σε ένα πρόγραµµα. Να είναι σε θέση να αναγνωρίζουν το σώµα της επανάληψης και την συνθήκη ελέγχου. Να εξοικειωθούν µε τη χρήση διάφορων συνθηκών επανάληψης που προσφέρει το loop block. εξιότητες: Να αναπτύξουν δεξιότητες χρήσης και αξιοποίησης του λογισµικού NXT Software και γενικότερα του Η/Υ. Να αναπτύξουν δεξιότητες συνεργασίας και επικοινωνίας, καθώς εργάζονται µε το συγκεκριµένο λογισµικό. Στάσεις: Να αναπτύξουν θετική διάθεση απέναντι στον Η/Υ ως περιβάλλον εργασίας και ως εργαλείο άντλησης πληροφοριών. ΠΡΟΑΠΑΙΤΟΥΜΕΝΕΣ ΓΝΩΣΕΙΣ: Οι µαθητές θα πρέπει να έχουν αναπτύξει από προηγούµενα µαθήµατα τις βασικές δεξιότητες χρήσης του Η/Υ και του περιβάλλοντος του NXT Software. Επίσης θα πρέπει να έχει προηγηθεί η εξοικείωση στη χρήση των µεταβλητών µέσα σε ένα πρόγραµµα καθώς και των αισθητήρων του ροµπότ. ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΣΧΕ ΙΟΥ Στο διδακτικό σενάριο αυτό θα γίνει µια πρώτη επαφή των µαθητών µε την έννοια της επανάληψης. Οι µαθητές θα διαπιστώσουν τους λόγους που είναι απαραίτητη η δοµή αυτή σε ένα πρόγραµµα, θα µάθουν να βρίσκουν το σώµα της επανάληψης και τη συνθήκη ελέγχου και θα γνωρίσουν τις εναλλακτικές λύσης που δίνει το Loop Block για τη συνθήκη. Οι διδακτικοί στόχοι που αφορούν τις δεξιότητες και τις στάσεις, αναπτύσσονται καθ όλη τη διάρκεια της διδακτικής διδασκαλίας µέσω συνεργατικών διαδικασιών και διερευνητικών δραστηριοτήτων. Για τη διδακτική διαπραγµάτευση των παραπάνω στόχων χρησιµοποιούµε το εποικοδοµητικό διδακτικό µοντέλο. Το µάθηµα θα διεξαχθεί στις εξής φάσεις: 1.Ανάδειξη των ιδεών των µαθητών. 2. οκιµασία των ιδεών και καταγραφή των αποτελεσµάτων της. 3. Συζήτηση ιδεών και συµπεράσµατα. 4. Εφαρµογή της νέας γνώσης. 219

220 5.Ανασκόπηση και σύγκριση µεταξύ των ιδεών των µαθητών και της νέας γνώσης. Ο ρόλος του καθηγητή είναι συµβουλευτικός και καθοδηγητικός. Εµψυχώνει, συµβουλεύει και καθοδηγεί τις οµάδες, προκειµένου να πειραµατιστούν µε το λογισµικό, να συζητήσουν και να συνάγουν συµπεράσµατα. 1.Ανάδειξη των ιδεών των µαθητών. Συζητάµε µε τους µαθητές την έννοια της επανάληψης και απαριθµούµε τις απόψεις τους. Ρωτάµε τους µαθητές αν µπορούν να φανταστούν παραδείγµατα από την καθηµερινότητα που χρειαζόµαστε την επανάληψης. Στη συνέχεια ρωτάµε αν θα µπορούσαν να φανταστούν προβλήµατα µέσα σε ένα πρόγραµµα στην πλατφόρµα NXT Software όπου να είναι απαραίτητη η επανάληψης. Συζητάµε στην τάξη πως θα µπορούσαν τα υλοποιηθούν τα παραδείγµατα που έχουν αναφερθεί. Καταγράφουµε τις ιδέες και τα παραδείγµατα των µαθητών χωρίς να τα σχολιάσουµε. 2. οκιµασία των ιδεών και καταγραφή των αποτελεσµάτων της. Μοιράζουµε στους µαθητές το Φύλλο εργασίας και τους καλούµενα το διαπραγµατευτούν στην οµάδα τους. Οι αναµενόµενες απαντήσεις στις ασκήσεις είναι οι παρακάτω: Ενότητα Το πρόγραµµα πραγµατοποιείται για πάντα µέχρι οι µαθητές να επιλέξουν να το σταµατήσουν. 2.Το πρόγραµµα εκτελείται άπειρες φορές εποµένως αυτό που ελέγχει το ροµπότ είναι να θα δώσουν οι µαθητές εντολή τερµατισµού. 3.Το σώµα της επανάληψης είναι η αποφυγή ενός εµποδίου, δηλαδή τα 4 blocks µέσα στο Loop Block. Ενότητα 1.2 Για να διευκολυνθούν οι µαθητές µπορεί ο καθηγητής να σχηµατίσει µε µία κολλητική ταινία ένα πεντάγωνο, ώστε να κάνουν τις ανάλογες ρυθµίσεις και δοκιµές και να σχηµατίσουν τις σωστές γωνίες. 220

221 1.Συνθήκη ελέγχου είναι να µετρηθούν 5 επαναλήψεις. 2.Το σώµα της επανάληψης είναι τα δύο Move Blocks. 3.Η επανάληψη πρέπει να γίνει 5 φορές αφού θέλουµε να σχηµατίσουµε πεντάγωνο. 4.Μετά την Πέµπτη επανάληψη πρέπει ο βρόγχος να τερµατιστεί. Ενότητα Η συνθήκη ελέγχου είναι η κατάσταση του αισθητήρα αφής. 2.Σώµα της επανάληψης είναι το move block. 3.Όταν πιέσουµε τον αισθητήρα το ροµπότ θα σταµατήσει να κινείται. Ενότητα Η συνθήκη της επανάληψης είναι η ολοκλήρωση του χρονικού διαστήµατος που έχουµε θέσει. 2.Το σώµα της επανάληψης είναι τα 4 Record/Play Blocks. 3.Κάθε Record/Play Block διαρκεί 5 δευτερόλεπτα, εποµένως η µία επανάληψη διαρκεί 20 δευτερόλεπτα. Θέσαµε χρόνο επανάληψης 40 δευτερόλεπτα, άρα ολόκληρο το πρόγραµµα θα εκτελεσθεί δύο φορές. 4.Αν θέσουµε την επανάληψη για 60 δευτερόλεπτα, το πρόγραµµα θα εκτελεστεί 3 φορές. 5.Αν θέσουµε την επανάληψη για 10 δευτερόλεπτα θα εκτελεσθούν µόνο τα δύο πρώτα Blocks. 6.Μία επανάληψη διαρκεί 20 δευτερόλεπτα, εποµένως στο πεδίο Until πρέπει να βάλουµε την τιµή

222 Ενότητα Η συνθήκη επανάληψης είναι η αλήθεια του Logic block. 2.Το σώµα της επανάληψης είναι τα τέσσερα blocks µέσα στο Loop Block. 3.Η επανάληψη σταµατά να εκτελείται όταν το logic block δίνει τιµή false. 4. Όταν το ροµπότ δεν ακουµπά ένα αντικείµενο αλλά βλέπει κάτι σε απόσταση µικρότερη των 50 εκατοστών σταµατά να κινείται, γιατί το logic block δίνει τιµή false. 5. Όταν το ροµπότ δεν ακουµπά ένα αντικείµενο αλλά βλέπει κάτι σε απόσταση µεγαλύτερη των 50 εκατοστών συνεχίζει την κίνησή του γιατί το logic block δίνει τιµή true. 6.Για να ελέγξουµε αν υπάρχει και κενό στο επίπεδο καθώς κινείται το ροµπότ θα έπρεπε να κάνουµε τις παρακάτω αλλαγές: Συµπερασµατική ραστηριότητα Οι απαντήσεις στις ερωτήσεις την δραστηριότητας είναι οι παρακάτω: 1.Η συνθήκη επανάληψης στον εξωτερικό βρόγχο είναι να επαναλαµβάνεται για πάντα. 2.Το σώµα της επανάληψης στο εξωτερικό Loop Block είναι ολόκληρο το Switch Block µε τις δύο περιπτώσεις του. 3.Ο εξωτερικός βρόγχος δεν σταµατά να εκτελείται ποτέ, σταµατά µόνο αν διακόψουµε εµείς το πρόγραµµα. 4.Χρησιµοποιούµε τους αισθητήρες αφής και υπερήχων. 5.Στην πρώτη περίπτωση του Switch Block, το ροµπότ κινείται µέχρι να πιεσθεί ο αισθητήρας αφής. Η περίπτωση αυτή εκτελείται όταν ο Ultrasonic Sensor δίνει τιµή µικρότερη του

223 6.Αν θέλουµε ο εξωτερικός βρόγχος να εκτελεσθεί µόνο δύο φορές πηγαίνουµε στο πεδίο ρυθµίσεών του και επιλέγουµε Count στο πεδίο Control και στο πεδίο Until δίνουµε την τιµή 2. 7.Η συνθήκη επανάληψης στον εσωτερικό βρόγχο είναι η τιµή του αισθητήρα υπερήχων να βρίσκεται κάτω από ένα ορισµένο όριο, την τιµή Στον εσωτερικό βρόγχο το σώµα της επανάληψης είναι το Move Block. 9.Ο εσωτερικός βρόγχος σταµατά να εκτελείται όταν ο αισθητήρας υπερήχων δώσει τιµές µεγαλύτερη του Στο πρόγραµµα χρησιµοποιούµε Loop Switch, Move και Wait Blocks. 11.Στη δεύτερη περίπτωση της επιλογής εκτελείται το εσωτερικό Loop Block και το ροµπότ κινείται µέχρι ο Ultrasonic Sensor να δώσει τιµή µεγαλύτερη του 50. Το δεύτερο σκέλος εκτελείται όταν ο αισθητήρας υπερήχων δίνει τιµή µεγαλύτερη του Για να εκτελεστεί ο εσωτερικός βρόγχος µέχρι να ακούσει το ροµπότ κάποιον ήχο, θα πρέπει στο πεδίο ρυθµίσεων του εσωτερικού Loop Block να επιλέξουµε Sound Sensor στο πεδίο Sensor. 3.Συζήτηση ιδεών και συµπεράσµατα Οι οµάδες των παιδιών ανακοινώνουν τα αποτελέσµατα του φύλλου εργασίας στην τάξη. Συζητούν τα αποτελέσµατα, βρίσκουν τις σωστές λύσεις και καταλήγουν στα αποδεκτά αποτελέσµατα. Τα παιδιά θα πρέπει να µάθουν να αναγνωρίζουν τη συνθήκη επανάληψης όπως στις ερωτήσεις: 2 της ενότητας 1.1, 1 της ενότητας 1.2, 1 της ενότητας 1.3, 1 της ενότητας 1.4, 1 της ενότητας 1.5, 1 και 7 της ενότητας 2. Επίσης, θα πρέπει να ξεχωρίζουν το σώµα της επανάληψης όπως στις ερωτήσεις: 3 της ενότητας 1.1, 2 της ενότητας 1.2, 2 της ενότητας 1.3, 2 της ενότητας 1.4, 1 της ενότητας 1.5, 2 και 8 της ενότητας 2. Θα πρέπει ακόµα να αναγνωρίζουν πότε σταµατά µία επανάληψη και πόσες φορές εκτελείται, όπως στις ερωτήσεις: 3 και 4 της ενότητας 1.2, και 6 της ενότητας 1.4, 3 της ενότητας 1.5, και 12 της ενότητας 2 4.Εφαρµογή της νέας γνώσης Επανερχόµαστε στις αρχικές ιδέες και τα παραδείγµατα της φάσης της ανάδειξης των ιδεών των µαθητών και προσπαθούµε να τα λύσουµε µε τη νέα εµπειρία που έχουν αποκτήσει. Επαληθεύουµε ή διορθώνουµε τις ιδέες των µαθητών για την δοµή της επανάληψης. 5.Ανασκόπηση και σύγκριση µεταξύ των ιδεών των µαθητών και της νέας γνώσης Οι µαθητές συζητούν τις απόψεις τους και συνειδητοποιούν την γνωστική πορεία αλλαγής των αρχικών ιδεών τους για την έννοια της επανάληψης. ιαπιστώνουν αν η αρχική τους ιδέα για την επιλογή απέχει πολύ από την γνώση που έχουν λάβει τελικά µέσω την ασκήσεων του φύλλου εργασίας. Εκφράζουν και από µόνοι τους την πορεία της αλλαγής των ιδεών τους. Έτσι θα αναπτύξουν µεταγνωστικές ικανότητες, οι οποίες θα βοηθήσουν περαιτέρω στην οικοδόµηση της νέας γνώσης. 223

224 Αξιολόγηση επίτευξης των στόχων: Η αξιολόγηση περιλαµβάνει: 1)τη διαµορφωτική αξιολόγηση που θα διεξαχθεί κατά τη διάρκεια της διδασκαλίας µέσω παρατήρησης της συµµετοχής και του ενδιαφέροντος των µαθητών, µέσω των ερωτήσεών τους και γενικότερα µέσω παρατήρησης της εργασίας τους στην οµάδα. 2)την τελική αξιολόγηση στο τέλος της διδασκαλίας ένα φύλλο αξιολόγησης. Ενδεικτικά θα µπορούσε να δοθεί στους µαθητές το παρακάτω φύλλο αξιολόγησης. ΦΥΛΛΟ ΑΞΙΟΛΟΓΗΣΗΣ 1.Πότε είναι απαραίτητη η χρήση της επανάληψης; 2.Τι είναι η συνθήκη επανάληψης; 3.Τι είναι το σώµα της επανάληψης; 224

225 4.Ποιες είναι οι συνθήκες επανάληψης που προσφέρει το Loop Block; Γράψτε τι ελέγχει η κάθε µία. Α Β Γ Ε 5.Από την τελική δραστηριότητα του φύλλου εργασίας: 225

226 Περιγράψτε αναλυτικά τις ενέργειες που θα κάνει το ροµπότ πριν εκτελέσετε το πρόγραµµα. Στη συνέχεια κάντε την επαλήθευση φορτώνοντας το πρόγραµµα στο ροµπότ και ελέγχοντας τα αποτελέσµατα της εκτέλεσης. 226

227 ΚΕΦΑΛΑΙΟ 5:ΣΥΜΠΕΡΑΣΜΑΤΑ 5.1 Μαθήµατα Ροµποτικής Στην εργασία αυτή έγινε στις πρώτες ενότητες µια σύντοµη παρουσίαση των ιδιοτήτων και της εξέλιξης του ροµπότ Lego καθώς και των προσφερόµενων λογισµικών για τον προγραµµατισµό του. Στις επόµενες ενότητες έγινε αναλυτική παρουσίαση του λογισµικού NXT Software και όλων των δυνατοτήτων του και δηµιουργήθηκαν φύλλα εργασίας και σχέδια µαθήµατος για τον τρόπο που µπορεί να αξιοποιηθεί το λογισµικό αυτό σε µία τάξη µε στόχο την εξοικείωση των µαθητών µε τον προγραµµατισµό. Η εργασία ολοκληρώνεται µε την εφαρµογή µέρους των φύλλων εργασίας σε µαθητές ώστε να διαπιστωθεί η αποτελεσµατικότητά τους και η στάση των µαθητών στα θέµατα που παρουσιάζονται. Αρχικά, επιλέχθηκαν από όλα τα υπάρχοντα φύλλα εργασίας τα σηµαντικότερα θέµατα και οι αντιπροσωπευτικότερες ασκήσεις για τον σχηµατισµό ενός τελικού φύλλου. Το τελικό αυτό φύλλο είναι χωρισµένο σε τέσσερεις ενότητες αντίστοιχες µε τα θέµατα των φύλλων εργασίας, για την εξοικείωση µε το περιβάλλον του λογισµικού, την έννοια της µεταβλητής, της επανάληψης και της επιλογής. Ακολουθεί και το τελικό φύλλο εργασίας την ίδια τακτική για το χωρισµό των παιδιών σε οµάδες και την απόδοση ρόλων σε κάθε µέλος της οµάδας. Για την ολοκλήρωση των µαθηµάτων ροµποτικής χρειάστηκαν 3 συναντήσεις µε τους µαθητές. Στην πρώτη συνάντηση ολοκληρώθηκε η εξοικείωση µε το περιβάλλον του λογισµικού και τα πρώτα βασικά Blocks που χρησιµοποιούνται στην ανάπτυξη ενός προγράµµατος. Στη δεύτερη συνάντηση αναλύθηκαν οι έννοιες της µεταβλητής και της επανάληψης και τέλος στην τελευταία συνάντηση έγινε η εξοικείωση µε την έννοια της επιλογής. Η κάθε συνάντηση διήρκησε µιάµιση µε δύο ώρες. 5.2 Αναλυτική παρουσίαση των µαθηµάτων Πρώτο µάθηµα: Το πρώτο µάθηµα όπως προαναφέρθηκε είχε στόχο την εξοικείωση των µαθητών µε το περιβάλλον του λογισµικού. Στο δεύτερο µάθηµα τα παιδιά γνώρισαν τις έννοιες της µεταβλητής και της επανάληψης στον προγραµµατισµό και στο τρίτο και τελευταίο µάθηµα έγινε η εξοικείωση µε την έννοια της επιλογής. Αρχικά, από το πρώτο µάθηµα, µοιράστηκε στα παιδιά το τελικό φύλλο εργασίας το οποίο παρουσιάζεται παρακάτω: 227

228 ραστηριότητα Εξοικείωσης µε το Περιβάλλον NXT Software Μαθαίνουµε να παίζουµε µε το ροµπότ της Lego Για την επίλυση των παρακάτω δραστηριοτήτων πρέπει να δηµιουργηθεί µία οµάδα δύο ατόµων. Στην οµάδα θα υπάρχουν δύο ρόλοι, ο ρόλος του προγραµµατιστή και ο ρόλος του αναλυτή. Στο βήµα της εξοικείωσης ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται. Ο προγραµµατιστής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή για να ολοκληρωθεί η ενότητα. Στο βήµα των ασκήσεων ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, τόσο µε τις ενέργειες του προγραµµατιστή για την επίλυση της άσκησης όσο και µε τις απαντήσεις του στα ερωτήµατα. Οι ρόλοι πολλές φορές θα εναλλάσσονται, δηλαδή ο αναλυτής θα παίρνει το ρόλο του προγραµµατιστή και ο προγραµµατιστής του αναλυτή, ανάλογα µε τις υποδείξεις της κάθε δραστηριότητας. Παρακάτω γράψτε τα ονόµατα σας: Μέλος Α: Μέλος Β: 228

229 Α. Τα πρώτα βήµατα της εξοικείωσης-μαθαίνουµε τα βασικά Blocks 1. Μαθαίνοντας στο ροµπότ να περπατά µε το Move Block Ανοίγουµε την εφαρµογή σύµφωνα µε τις υποδείξεις του καθηγητή και συνεχίζουµε µε τα πρώτα βήµατα του ροµπότ µας. 1.1 Τι είναι το Move Block; Ξεκινάµε µε την εξοικείωση µε το move block. Το block αυτό το χρησιµοποιούµε για να κινήσουµε το ροµπότ. 1.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Έστω για παράδειγµα ότι θέλουµε το ροµπότ µας να µετακινηθεί µπροστά, σε ευθεία για 5 δευτερόλεπτα. Για να το πετύχουµε αυτό πρέπει να: Εισάγουµε µε τη λειτουργία drag and drop, στην επιφάνεια δηµιουργίας του προγράµµατος ένα move block από την παλέτα Common. Στην περιοχή παραµέτρων του move block κάνουµε τις εξής ρυθµίσεις: Port: Επιλέγουµε τις θύρες που έχουµε συνδέσει τους κινητήρες στο ροµπότ. Direction: Το ροµπότ µας θέλουµε να κινηθεί µπροστά, εποµένως επιλέγουµε το πρώτο βελάκι. Το δεύτερο προκαλεί κίνηση προς πίσω, ενώ το τρίτο σταµατά την κίνηση του ροµπότ. Steering: Θέλουµε η κίνηση να είναι ευθεία, εποµένως δεν αλλάζουµε την προεπιλεγµένη τιµή. Αν θα θέλαµε το ροµπότ να στρίβει, θα τοποθετούσαµε στην επιθυµητή τιµή το δείκτη. Power: ίνουµε την τιµή 20 στην ταχύτητα της κίνησης του ροµπότ. 229

230 Duration: Θέλουµε το ροµπότ να κινηθεί για 5 δευτερόλεπτα, εποµένως στο δεύτερο µενού επιλέγουµε το Seconds και στο πρώτο πεδίο δίνουµε την τιµή 5. Αφού συνδέσουµε το ροµπότ στον υπολογιστή µας πατάµε το πλήκτρο Download and Run που βρίσκεται κάτω δεξιά στο παράθυρο δηµιουργίας του προγράµµατος. Ακολουθώντας τα παραπάνω βήµατα εκτελέστε τη δραστηριότητα και καταγράψτε τα συµπεράσµατα και την άποψη σας για τα ακόλουθα θέµατα: Συζητήστε µαζί: 1.Κινήθηκε πράγµατι το ροµπότ σε ευθεία για 5 δευτερόλεπτα; 2.Αν στο πεδίο Port ένας συµµαθητής σας δεν έδινε τις σωστές επιλογές, τι πιστεύετε ότι θα γινόταν; 1 2 Ερώτηση: 3.Αν επιθυµούσαµε το ροµπότ να κινηθεί γρηγορότερα, σε ποιο πεδίο θα έπρεπε να αλλάξουµε τιµή και ποια θα ήταν η νέα τιµή που θα δίναµε; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: 230

231 Συµφωνώ ιαφωνώ στην απάντηση Γιατί: Συµπέρασµα οµάδας στην διαφωνία: 1.3 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Ας εκτελέσουµε τώρα µία µεγαλύτερη άσκηση. Στο µενού File επιλέξτε το New και στο νέο παράθυρο δηµιουργήστε το παρακάτω πρόγραµµα µε παράθεση move blocks το ένα µετά το άλλο. Έστω ότι θέλουµε το ροµπότ µας να πραγµατοποιήσει την παρακάτω κίνηση: Να προχωρήσει µπροστά για 5 δευτερόλεπτα, στη συνέχεια να στρίψει αριστερά, να προχωρήσει άλλα 5 δευτερόλεπτα, να στρίψει αριστερά αλλά σε µικρότερο βαθµό από την προηγούµενη στροφή και τέλος να προχωρήσει άλλα δύο δευτερόλεπτα. 231

232 Ερώτηση: Περιγράψτε πόσα move block θα πρέπει να χρησιµοποιήσουµε και τι παραµέτρους να ορίσουµε σε αυτά. Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί: Συµπέρασµα οµάδας στην διαφωνία: Στη συνέχεια φορτώστε την άσκηση στο ροµπότ και ελέγξτε αν πραγµατοποιείται η επιθυµητή κίνηση. 232

233 2.Πως το ροµπότ αποστηθίζει κινήσεις µε το Record/Play Block Αποθηκεύστε τα προγράµµατα που έχετε δηµιουργήσει επιλέγοντας το save στο µενού File και δώστε τα ονόµατα ΑΣΚΗΣΗ1 και ΑΣΚΗΣΗ1α στο πρώτο και στο δεύτερο αντίστοιχα. Κλείστε τις καρτέλες αυτών των ασκήσεων πατώντας στο µενού File το Close και στη συνέχεια ανοίξτε µία νέα καρτέλα για την δηµιουργία των επόµενων ασκήσεων. ώστε στη νέα καρτέλα το όνοµα ΑΣΚΗΣΗ Τι κάνει ένα Record/Play Block; Με το block Record/Play µπορούµε να καταγράψουµε κάποιες κινήσεις του ροµπότ και στη συνέχεια αφού τις αποθηκεύσουµε να τις αναπαράγουµε. Στην ουσία αποµνηµονεύεται πόσες φορές έχει κινηθεί ο κάθε κινητήρας και κατά την αναπαραγωγή επαναλαµβάνεται ο αριθµός των κινήσεων. 2.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας δούµε τώρα πως λειτουργεί το Record/Play Block. Αρχικά εισάγουµε ένα Record/Play block στο πρόγραµµα µας. Στη συνέχεια στην περιοχή παραµέτρων του Record/Play block κάνουµε τις παρακάτω ρυθµίσεις: Action: Αρχικά θέλουµε να καταγράψουµε την τετραγωνική κίνηση, άρα επιλέγουµε το Record. Name: ίνουµε ένα όνοµα στην καταγραφή µας. Εδώ καταγράφουµε µία τετραγωνική κίνηση οπότε µπορούµε να την ονοµάσουµε tetragwno. Recording: Εδώ θα πρέπει να τσεκάρουµε τις θύρες στις οποίες έχουµε συνδέσει τους κινητήρες. Time: Εισάγουµε τη διάρκεια της καταγραφής σε δευτερόλεπτα. ίνουµε την τιµή

234 Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και καταγράψτε την τετραγωνική κίνηση. Στη συνέχεια σε µία νέα καρτέλα εισάγετε και πάλι ένα Record/Play block και αυτή τη φορά επιλέξτε στις παραµέτρους το Play και δώστε το όνοµα tetragwno. Εδώ στην ουσία ζητάµε να εκτελεστεί η καταγραφή µας. Φορτώστε το πρόγραµµα στο ροµπότ και εκτελέστε το. Συζητήστε µαζί: 1.Πραγµατοποιείται η τετραγωνική κίνηση που είχατε καταγράψει στο πρώτο Record/Play Block; Ερωτήσεις: 2.Αν επιθυµούσαµε να καταγράψουµε µία µεγαλύτερη κίνηση, ποια παράµετρο θα έπρεπε να αλλάξουµε και τι τιµή να της δώσουµε; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: 234

235 Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 2.3 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Έστω ότι επιθυµούµε το ροµπότ να εκτελέσει µία τετραγωνική κίνηση καθώς προχωρά, αλλά την κίνηση αυτή, να την έχουµε καταγράψει ώστε να καθορίσουµε ακριβώς τον τρόπο που επιθυµούµε να πραγµατοποιηθεί. 235

236 Ερώτηση: 1.Πως θα µπορούσαµε να συνδυάσουµε τις ενέργειες της εξοικείωσης σε ένα πρόγραµµα ώστε να καταγράφουµε την κίνηση και το ροµπότ µας να την εκτελέσει καθώς προχωρά; Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί: Συµπέρασµα οµάδας στην διαφωνία: Εκτελέστε την άσκηση στο ροµπότ και ελέγξτε αν πραγµατοποιείται η τετραγωνική κίνηση, όπως την καταγράψατε στην αρχή του προγράµµατος. 236

237 3. Το ροµπότ µιλάει και δείχνει µηνύµατα µε τα Sound Block και Display Block 3.1 Τι είναι τα Sound και Display Blocks; Αν θέλουµε να αναπαράγουµε κάποιον ήχο χρησιµοποιούµε το Sound block. Αν θέλουµε να εµφανίσουµε στην οθόνη του ροµπότ µια εικόνα χρησιµοποιούµε το Display Block. 3.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Από το µενού File ανοίγουµε µε το Open το πρόγραµµα ΑΣΚΗΣΗ1, που έχουµε ήδη δηµιουργήσει. Μετά το move block, εισάγουµε ένα Sound Block. Στην περιοχή παραµέτρων του κάνουµε τις παρακάτω ρυθµίσεις: Action: Επιλέγουµε το Sound File. Control: Θέλουµε να ακούσουµε έναν ήχο, άρα επιλέγουµε το Play. Volume: Ρυθµίζουµε την ένταση του ήχου που θα ακουστεί. File: Επιλέγουµε την αναπαραγωγή του ήχου Forward. Ερώτηση: 1.Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και καταγράψτε τις λειτουργίες που εκτελούνται. Απάντηση Αναλυτή: 237

238 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί: Συµπέρασµα οµάδας στην διαφωνία: Στο προηγούµενο παράδειγµα, πριν το Move Block τοποθετούµε ένα Display Block. Κάνουµε τις παρακάτω ρυθµίσεις στην περιοχή παραµέτρων του: 238

239 Action: Επιλέγουµε το Image. File: Επιλέγουµε το Forward. Ερώτηση: 1.Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και καταγράψτε τις λειτουργίες που εκτελούνται. Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί: Συµπέρασµα οµάδας στην διαφωνία: 239

240 3.3 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Έστω τώρα ότι θέλουµε στο παράδειγµα ΑΣΚΗΣΗ1α στην πρώτη στροφή να ακούγεται η κατεύθυνση στην οποία στρίβει το ροµπότ µας(δηλαδή left), ενώ στη δεύτερη να εµφανίζεται στην οθόνη η ένδειξη της αριστερής στροφής. Ερώτηση: 1.Ποια block πρέπει να προσθέσουµε στο παράδειγµά µας και σε ποια σηµεία; Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ 240

241 ιαφωνώ Γιατί: Συµπέρασµα οµάδας στην διαφωνία: Εκτελέστε την άσκηση στο ροµπότ και ελέγξτε αν ακούγονται και εµφανίζονται τα κατάλληλα µηνύµατα στα σωστά σηµεία του προγράµµατος. 4. Το ροµπότ ελέγχει το περιβάλλον µε το Wait Block 4.1 Ποια είναι η λειτουργία του Wait Block; To Wait block επιτρέπει στο ροµπότ να διαισθανθεί/ελέγξει µία συγκεκριµένη συνθήκη του περιβάλλοντος του πριν συνεχίσει τις ενέργειές του. Επιτρέπει να ορίσουµε κάποιες τιµές σε µεταβλητές των αισθητήρων τις οποίες το ροµπότ θα ελέγχει και ανάλογα θα συνεχίζει ή θα σταµατά την εκτέλεση του προγράµµατος µε βάση τις προϋποθέσεις που έχουµε θέσει. Πριν συνεχίσετε στις ασκήσεις εξοικείωσης, συζητήστε στην τάξη για τους αισθητήρες που διαθέτει το ροµπότ και δοκιµάστε να αποδώσετε τα χαρακτηριστικά του κάθε αισθητήρα µε τη βοήθεια του καθηγητή σας. 4.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) 241

242 Ανοίγουµε µία νέα καρτέλα και εισάγουµε δύο move blocks στα οποία δίνουµε την ιδιότητα να κινούνται για πάντα το πρώτο, επιλέγοντας στο πεδίο Duration το Unlimited και για δύο δευτερόλεπτα το δεύτερο. Το πρώτο move block επιλέγουµε να κινείται προς εµπρός, ενώ το δεύτερο προς πίσω. Στη συνέχεια, ανάµεσα στα δύο move blocks τοποθετούµε ένα wait block για έναν αισθητήρα αφής. Στο πεδίο παραµέτρων κάνουµε τις παρακάτω ρυθµίσεις: Port: Επιλέγουµε την θύρα στην οποία έχουµε συνδέσει τον αισθητήρα. Action: Επιλέγουµε το Pressed. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και καταγράψτε: Συζητήστε µαζί: 1.Τι γίνεται όταν πιέζουµε τον αισθητήρα αφής; 2.Ένας µαθητής επέλεξε λάθος θύρα εισόδου στο πεδίο port. Ποιο νοµίζετε ότι θα είναι το αποτέλεσµα;

243 Ερώτηση: 3.Τι θα γίνει αν δεν πιέσουµε ποτέ τον αισθητήρα αφής; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί: Συµπέρασµα οµάδας στην διαφωνία: 243

244 4.3 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Το ροµπότ κατά τη διάρκεια της κίνησης του συναντά πολλές φορές εµπόδια, όπως αντικείµενα ή τοίχους. Ποια τακτική θα µπορούσαµε να χρησιµοποιήσουµε για την αποφυγή αυτών των εµποδίων; Ερώτηση: 1.Περιγράψτε ένα σύντοµο πρόγραµµα µε το οποίο το ροµπότ θα µπορεί να αποφύγει κάποιο εµπόδιο και να συνεχίσει την κίνηση του. Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί: 244

245 Συµπέρασµα οµάδας στην διαφωνία: Εκτελέστε την άσκηση στο ροµπότ και ελέγξτε αν πράγµατι συναντώντας εµπόδιο το ροµπότ αλλάζει πορεία κίνησης και το αποφεύγει. 5 Επαναλήψεις κινήσεων µε το Loop Block 5.1 Πότε χρησιµοποιούµε ένα Loop Block; To Loop block χρησιµοποιείται για να επαναλάβουµε τµήµατα κώδικα. Μπορούµε να επιλέξουµε τη συνθήκη που θα τερµατίζει το βρόγχο ανάλογα µε το χρόνο, τον αριθµό επαναλήψεων, µία λογική τιµή ή µε βάση τις τιµές εισόδου από έναν αισθητήρα. Επίσης µπορούµε να ορίσουµε να επαναλαµβάνεται ο βρόγχος για πάντα. 5.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ανοίγουµε το προηγούµενο παράδειγµα ΑΣΚΗΣΗ1α, στο οποίο έχουµε πλέον εισάγει και τα sound και display blocks. Εισάγουµε επίσης στο πρόγραµµα µας ένα Loop block, µέσα στο οποίο τοποθετούµε το πρόγραµµα µας. Η µεταφορά του προγράµµατος µέσα στο block γίνεται επιλέγοντας όλα τα blocks του προγράµµατος και µεταφέροντας τα µε drag and drop µέσα στο loop block. 245

246 Στη συνέχεια, στην περιοχή παραµέτρων του Loop Block κάνουµε τις παρακάτω ρυθµίσεις. Control: Επιλέγουµε το count, ώστε η επανάληψη να γίνει σε κάποιο ορισµένο αριθµό. Until: ίνουµε την τιµή 5, που σηµαίνει ότι ο βρόγχος µας θα εκτελεστεί 5 φορές. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε αν πράγµατι η επανάληψη θα εκτελεστεί 5 φορές. Ερωτήσεις: 1.Τι θα γίνει αν στο πεδίο Count δώσουµε την τιµή 2; 2.Τι πρέπει να κάνουµε για να επαναληφθεί το πρόγραµµα για 30 δευτερόλεπτα; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: 246

247 Συµφωνώ ιαφωνώ µε την απάντηση Γιατί: Συµπέρασµα οµάδας στην διαφωνία: 5.3 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Θέλουµε το ροµπότ να εκτελέσει µία τριγωνική κίνηση διανύοντας µετά από κάθε στροφή την ίδια απόσταση. Πώς θα µπορούσαµε να χρησιµοποιήσουµε το Loop Block σε µία τέτοια περίπτωση; Μπορείτε να σκεφτείτε έναν άλλο τρόπο να εκτελεστεί αυτή ή κίνηση; Συγκρίνετε τις δύο µεθόδους και διαπιστώστε: 247

248 Ερωτήσεις: 1.Σε ποια περίπτωση χρησιµοποιούµε περισσότερα blocks; 2.Ποια περίπτωση θεωρείτε πιο πρακτική; Απάντηση Προγραµµατιστή: 1 2 Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ στην απάντηση. Γιατί:.. Συµπέρασµα οµάδας στην διαφωνία: Εκτελέστε την άσκηση στο ροµπότ και ελέγξτε αν εκτελείτε στις δύο περιπτώσεις η τριγωνική κίνηση και διαπιστώστε πότε καταβάλατε µεγαλύτερη προσπάθεια κατά την υλοποίηση του κώδικα. 248

249 6. Πως διαλέγει το ροµπότ τις ενέργειες του µε το Switch Block 6.1 Τι είναι το Switch Block; Χρησιµοποιούµε το Switch Block για να επιλέξουµε να εκτελεστεί ένα από δύο τµήµατα κώδικα. 6.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Αναλυτής: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Σε µία νέα καρτέλα εισάγουµε ένα switch block. Στην περιοχή των παραµέτρων του κάνουµε τις ρυθµίσεις: Control: Επιλέγουµε Sensor γιατί θέλουµε ο έλεγχος της επανάληψης να γίνεται µε έναν αισθητήρα. Sensor: ιαλέγουµε έναν Touch Sensor. Port: Επιλέγουµε τη θύρα που έχουµε συνδέσει τον Touch Sensor. Action: Επιλέγουµε το Pressed. Στη συνέχεια, στο πάνω σκέλος του Switch Block εισάγουµε ένα move block για κίνηση µπροστά και ευθεία για 5 δευτερόλεπτα. Στο κάτω σκέλος εισάγουµε ένα move block για κίνηση πίσω και ευθεία για 5 δευτερόλεπτα. Με αυτές τις ενέργειες αυτό που πετυχαίνουµε είναι, να κινηθεί το ροµπότ µπροστά για 5 δευτερόλεπτα αν ο αισθητήρας αφής είναι πιεσµένος, ενώ αν είναι ελεύθερος, θα κινηθεί για 5 δευτερόλεπτα µε κατεύθυνση προς πίσω. 249

250 Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Τι γίνεται όταν πατάµε τον αισθητήρα αφής; 2.Εκτελούνται οι σωστές ενέργειες στους κινητήρες ανάλογα µε την περίπτωση; 1 2 Ερωτήσεις: 3.Τι θα γίνει αν επιλέξουµε λάθος θύρα εισόδου στο Switch Block; 4.Πως µπορούµε να χρησιµοποιήσουµε άλλο αισθητήρα; Απάντηση Αναλυτή: 3 4 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:

251 Συµπέρασµα οµάδας στην διαφωνία: Β. Εξοικείωση µε την έννοια της µεταβλητής.- Μαθαίνουµε να εκχωρούµε και να χρησιµοποιούµε τιµές. 1.Εξοικείωση µε την έννοια της µεταβλητής. Μια µεταβλητή είναι ένα όνοµα για µία θέση µνήµης στο υπολογιστικό σύστηµα. Για παράδειγµα η θέση µνήµης που συµβολίζεται µε το τετραγωνάκι παίρνει την τιµή 10. Θέση µνήµης 10 Στην παρακάτω θέση µνήµης δώστε την τιµή 5. Θέση µνήµης. Στο NXT Software η µεταβλητές παρουσιάζονται σαν ένα block στο οποίο δίνουµε µία τιµή. Την τιµή αυτή µπορούν να τη χρησιµοποιήσουν και άλλα blocks ενός προγράµµατος µέσω καλωδίων που µεταφέρουν δεδοµένα από και προς τη µεταβλητή. 251

252 Έστω η παρακάτω µεταβλητή δίνει την ταχύτητα σε ένα move block. 50 Ταχύτητα= < > 50 Καλώδιο Variable block Move block Αν η παρακάτω µεταβλητή δίνει την ένταση σε ένα Sound block, συµπληρώστε την τιµή της έντασης. Ένταση= 20 Variable block < > καλώδιο.. Sound block Όταν χρησιµοποιούµε µεταβλητές σε προγράµµατα είναι καλό να τους δίνουµε ονόµατα που ανταποκρίνονται στην ιδιότητά τους, ώστε να είναι εύκολο να κατανοήσουµε το ρόλο τους διαβάζοντας το πρόγραµµα. Για παράδειγµα την παραπάνω µεταβλητή θα µπορούσαµε να την ονοµάσουµε «Ταχύτητα» ταχύτητα Ταχύτητα= 50 Variable block < > καλώδιο 50 Move block 252

253 Τι όνοµα θα δίνατε στην παρακάτω µεταβλητή:. 20 < > Ένταση= 20. Καλώδιο Variable block Sound block Στις µεταβλητές εκτός από τιµή και από όνοµα θα πρέπει να δίνουµε και µία ιδιότητα η οποία θα εκφράζει αν η τιµή που κουβαλά η µεταβλητή είναι αριθµός, κείµενο ή λογική τιµή. Τι ιδιότητα πιστεύετε ότι θα έπρεπε να δώσουµε στις µεταβλητές ταχύτητα και ένταση; Στις µεταβλητές πρέπει πάντα να δίνεται αρχική τιµή. Λογικές προτάσεις Μια πρόταση λέγεται λογική όταν µπορεί να χαρακτηριστεί αληθής ή ψευδής. Ένας τέτοιος χαρακτηρισµός µιας πρότασης λέγεται τιµή αλήθειας ή απλά τιµή της πρότασης. 1. Variable Block, το Block που θυµάται τιµές. 1.1 Πως λειτουργεί το Variable Block Σκεφτείτε το Variable Block σαν ένα χώρο που αποθηκεύονται τιµές στη µνήµη του ΝΧΤ. Άλλα block του προγράµµατος µπορούν να διαβάσουν τις τιµές αυτές, ή ακόµα και να τις αλλάξουν. Για να δηµιουργήσουµε µία µεταβλητή αρχικά επιλέγουµε από το µενού Edit το Define Variables. Κάνοντας την επιλογή αυτή εµφανίζεται το παρακάτω παράθυρο διαλόγου. 253

254 Πατήστε το πλήκτρο Create, δώστε στο πεδίο Name το όνοµα της µεταβλητής και στο πεδίο Datatype επιλέξτε το Number γιατί θέλουµε η µεταβλητή µας να δέχεται αριθµό. 1.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Θέλουµε να δηµιουργήσουµε µία µεταβλητή και να αποθηκεύσουµε σε αυτήν τον αριθµό των επαναλήψεων που έκανε το ροµπότ µας στο παράδειγµα µε το τρίγωνο του προηγούµενου φύλλου εργασίας. Αφού ανοίξουµε το παράδειγµα µε το τρίγωνο στην εφαρµογή µας τσεκάρουµε στην περιοχή των παραµέτρων του loop block την επιλογή counter, για να χρησιµοποιήσουµε τον αριθµό των επαναλήψεων. Στη συνέχεια εισάγετε από την κατηγορία Data της παλέτας Complete το variable block. Στην περιοχή παραµέτρων του block κάνουµε τις παρακάτω ρυθµίσεις: List: Επιλέγουµε τη µεταβλητή που έχουµε δηµιουργήσει µε το όνοµα epanalipseis. 254

255 Action: Επιλέγουµε το Write ώστε να µπορούµε να δώσουµε µια τιµή στη µεταβλητή. Τώρα αυτό που µένει είναι να ενώσουµε την έξοδο από το loop block στη είσοδο της µεταβλητής µας. Έτσι αποθηκεύεται ο αριθµός των επαναλήψεων και µπορούµε να τον χρησιµοποιήσουµε αργότερα µέσω της µεταβλητής µας. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και καταγράψτε: Συζητήστε µαζί: 1.Τι τιµή έχει πάρει το Variable Block; 2.Ήταν εύστοχη η ονοµασία του; 1 2 Ερώτηση: 3.Γιατι στον τύπο της µεταβλητής επιλέξαµε το Number; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. 255

256 Συµπέρασµα οµάδας στην διαφωνία: 2. Μαθηµατικέ πράξεις µε το Math Block 2.1 Τι κάνει ένα Math Block; Το Math block εκτελεί απλές αριθµητικές πράξεις όπως πρόσθεση, αφαίρεση, πολλαπλασιασµό και διαίρεση. Το δεδοµένα εισόδου, δηλαδή οι αριθµοί που θα χρειαστούν για τις πράξεις, µπορούν είτε να πληκτρολογηθούν στα αντίστοιχα πεδία που βρίσκονται στο πάνελ που εµφανίζεται όταν εισάγετε το block στο πρόγραµµα, είτε να εισαχθούν στο block δυναµικά µε καλώδια δεδοµένων. 2.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Β. Βοηθός: Μέλος Α. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Θέλουµε να προσθέσουµε δύο τιµές και να καταχωρήσουµε το αποτέλεσµα σε µία µεταβλητή. Στη συνέχεια, το άθροισµα θα εµφανίζεται στην οθόνη του ροµπότ καθώς αυτό κινείται. Εισάγουµε στο πρόγραµµα ένα Math Block. Στην περιοχή παραµέτρων κάνουµε τις παρακάτω ρυθµίσεις: 256

257 Operation: Επιλέγουµε την τιµή Addition. A: Θέτουµε ίσο µε τον αριθµό 2. Β: Θέτουµε ίσο µε τον αριθµό 1. ηµιουργούµε κατάλληλη µεταβλητή σε ένα Variable Block και του προσδίδουµε την τιµή συνδέοντας την έξοδο του Math µε την είσοδο του Compare block. Συνεχίζουµε εισάγοντας ένα Number To Text Block από την κατηγορία Advanced της Complete παλέτας. Το Block αυτό µετατρέπει τον αριθµό που φέρει το Variable Block σε κείµενο, το οποίο θα µπορεί να εµφανιστεί στην οθόνη του NXT µέσω ενός Display block. Συνδέουµε την έξοδο του variable block µε την είσοδό του Number To Text Block και την έξοδο του Number To Text Block µε ένα Display Block. Εδώ θα πρέπει να προσέξουµε τον τύπο της εισόδου στο Display Block. Αφού είναι κείµενο άρα είναι τύπου Text και εποµένων θα πρέπει να το συνδέσουµε µε την είσοδο για κείµενα του Display block όπως φαίνεται παρακάτω. Τέλος προσθέτουµε ένα Move Block που θα προκαλεί την κίνηση. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε: Συζητήστε µαζί: 1.Είναι σωστός ο ισχυρισµός ότι η µεταβλητή είναι τύπου Number; 2.Το όνοµα athroisma είναι σαφές για την συγκεκριµένη µεταβλητή; 1 257

258 2 Ερώτηση: 3.Ποια είναι η τελική τιµή της; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 258

259 3. Τυχαίες τιµές µε το Random Block 3.1 Τι κάνει ένα Random Block; Το Random Block δηµιουργεί τυχαίους αριθµούς. Μπορείτε να χρησιµοποιήσετε αυτούς τους τυχαίους αριθµούς για να προκαλέσετε συµπεριφορές του ροµπότ που δεν θα έχουν προβλεφθεί. Για παράδειγµα, αν χρησιµοποιήσετε ένα καλώδιο δεδοµένων για να συνδέσετε ένα Random Block µε τη θύρα εισόδου για τη διάρκεια της κίνησης ενός Move Block, το ροµπότ µπορεί να κινηθεί 5 δευτερόλεπτα την πρώτη φορά που θα εκτελέσετε το πρόγραµµα και 10 την επόµενη. 3.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Βοηθός: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Θα δηµιουργήσουµε ένα πρόγραµµα όµοιο µε της προηγούµενης ενότητας µε τη διαφορά ότι αυτή τη φορά στην µεταβλητή θα δώσουµε µία τυχαία τιµή µέσα από ένα πεδίο τιµών που επιλέγουµε εµείς. Εισάγουµε σε µία νέα καρτέλα ένα Random Block. Στην περιοχή παραµέτρων κάνουµε τις παρακάτω ρυθµίσεις: A: Θέτουµε ίσο µε τον αριθµό 0. Β: Θέτουµε ίσο µε τον αριθµό 10. Συνεχίζουµε προσθέτοντας ένα Variable Block µε τον κατάλληλο τύπο και συνδέοντας την έξοδο του Random block µε την είσοδο του. Η έξοδος του όµοια µε την προηγούµενη άσκηση συνδέεται µε ένα Number To Text Block και εν συνεχεία µε ένα Display Block. Τέλος ακολουθεί το Move Block για την πρόκληση της κίνησης. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και διαπιστώστε: 259

260 Συζητήστε µαζί: 1.Οι ενδείξεις στην οθόνη είναι µέσα σε αυτό το πεδίο τιµών; 2.Πως θα µπορούσαµε να αλλάξουµε το πεδίο τιµών; 1 2. Ερωτήσεις: 3.Ποιος τύπος µεταβλητής είναι ο σωστός; 4.Από πιο πεδίο τιµών θα πάρει τιµή η µεταβλητή µας; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί: 260

261 Συµπέρασµα οµάδας στην διαφωνία:.. Γ. Εξοικείωση µε την έννοια της επανάληψης.- Μαθαίνουµε στο ροµπότ να επαναλαµβάνει ενέργειες. 1. Η έννοια της επανάληψης Πολλές φορές, για να λύσουµε ένα πρόβληµα, χρειάζεται να επαναλάβουµε αρκετές φορές µια ακολουθία βηµάτων. Μάλιστα, σε ορισµένες περιπτώσεις δεν είναι εκ των προτέρων γνωστό για πόσες φορές θα χρειαστεί να επαναλάβουµε αυτά τα βήµατα. Για παράδειγµα, όταν προσπαθούµε να µάθουµε το µάθηµα της ιστορίας, χρειάζεται να το διαβάσουµε περισσότερες από µία φορές µέχρι να είµαστε σίγουροι ότι το έχουµε µάθει. Τις περισσότερες φορές, προκειµένου να συνεχίσουµε την επανάληψη των εντολών, ελέγχουµε µια κατάσταση και ενεργούµε ανάλογα. Η δοµή επανάληψης σε έναν αλγόριθµο µας επιτρέπει να εκτελέσουµε µια οµάδα εντολών πολλές φορές και η επανάληψη σταµατά, όταν πάψει να ισχύει µια συνθήκη. Είναι φανερό ότι η οµάδα εντολών προς επανάληψη µπορεί να εκτελεστεί από καµία µέχρι άπειρες φορές. Η δεύτερη περίπτωση συνήθως δεν είναι επιθυµητή και, αν συµβεί, λέµε ότι το πρόγραµµα «πέφτει σε ατέρµονα βρόχο». Για το λόγο αυτό, στη δηµιουργία µιας δοµής επανάληψης πρέπει να εξασφαλίζουµε ότι η συνθήκη ελέγχου της επανάληψης θα πάψει κάποια στιγµή να ισχύει, ώστε να σταµατήσει η επανάληψη. 261

262 Ας θυµηθούµε τώρα λίγο το παράδειγµα µε το Loop Block από το πρώτο φύλλο εργασίας. Εκεί είχαµε πει ότι θέλουµε το ροµπότ να εκτελέσει µία τριγωνική κίνηση διανύοντας µετά από κάθε στροφή την ίδια απόσταση. Πώς θα µπορούσαµε να χρησιµοποιήσουµε το Loop Block σε µία τέτοια περίπτωση; Και είχαµε καταλήξει στο παρακάτω πρόγραµµα: Βλέπουµε εδώ τα δύο move block επαναλαµβάνονται τρεις φορές, για να πραγµατοποιηθεί η κίνηση που θέλουµε. Εποµένως έχουµε το σώµα της επανάληψης που είναι τα δύο move block και την συνθήκη επανάληψης που είναι η µέτρηση µέχρι τον αριθµό τρία. Ας προχωρήσουµε τώρα ανακαλύπτοντας και άλλες συνθήκες επανάληψης που µας προσφέρει το Loop block. 1.1 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Είδαµε πως µπορούµε να εκπαιδεύσουµε το ροµπότ µας να αποφεύγει ένα εµπόδιο. Ας δούµε τώρα έναν καινούριο τρόπο αποφυγής όχι µόνο ενός αλλά και περισσότερων εµποδίων. Από το πρώτο φύλλο εργασίας, ανοίγουµε το παράδειγµα µε το εµπόδιο. Αυτό το πρόγραµµα όπως είδαµε επιτρέπει στο ροµπότ να αλλάξει κατεύθυνση όταν φτάσει σε ένα αδιέξοδο. Τι γίνεται όµως αν το ροµπότ καθώς κινείται πέσει και σε άλλο αδιέξοδο; Εδώ η λύση δίνεται µε τη χρήση ενός Loop Block. Εισάγουµε λοιπόν στο πρόγραµµά µας ένα Loop Block και µε τη λειτουργία Drag and Drop Τοποθετούµε µέσα του όλο το πρόγραµµα. 262

263 Στη συνέχεια στην περιοχή παραµέτρων του Loop Block κάνουµε τις παρακάτω ρυθµίσεις: Control: Επιλέγουµε το Forever, ώστε να επαναλαµβάνεται άπειρες φορές αφού θέλουµε να αποφεύγουµε άπειρα εµπόδια. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Πραγµατοποιείται πράγµατι το πρόγραµµα όσες φορές χρειάζεται;.. Ερώτηση: 2. Ποια είναι εδώ η συνθήκη επανάληψης; 3.Ποιο είναι το σώµα της επανάληψης; Απάντηση Αναλυτή:

264 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 1.2 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος B. Αναλυτής: Μέλος A. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Θα δούµε τώρα ένα απλό παράδειγµα για το πώς λειτουργούν οι αισθητήρες σε ένα Loop Block. Θέλουµε για παράδειγµα το ροµπότ µας να κινείται απεριόριστα, µέχρι να ακουµπήσει ένα αντικείµενο και να σταµατήσει. Η απεριόριστη κίνηση επιτυγχάνεται µε ένα Move Block, ρυθµίζοντάς το να κινείται Unlimited. Τώρα βάζουµε και ένα Loop Block στο πρόγραµµα και τοποθετούµε µέσα σε αυτό το move block. Στη συνέχεια, στην περιοχή παραµέτρων του Loop Block κάνουµε τις παρακάτω ρυθµίσεις: 264

265 Control: Επιλέγουµε το Sensor. Sensor: Επιλέγουµε το Touch Sensor. Port: Τσεκάρουµε τη θύρα στην οποία τοποθετήσαµε τον αισθητήρα αφής. Action: Επιλέγουµε Pressed. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Ποια είναι η συνθήκη επανάληψης σε αυτή την περίπτωση; 2. Ποιο είναι το σώµα της επανάληψης; 1 2 Ερώτηση: 3.Τι θα γίνει αν πιέσουµε τον αισθητήρα; Απάντηση Αναλυτή: 3 265

266 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 1.3 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος A. Αναλυτής: Μέλος B. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας µάθουµε τώρα πως λειτουργεί ένα Loop Block µε χρονόµετρο. Αρχικά µε τέσσερα Record/Play Block, καταγράφουµε µία κυκλική, µία τετραγωνική, µία τριγωνική και µία κίνηση σε παραλληλόγραµµο. Όλες τις κινήσεις τις καταγράφουµε µέσα σε 5 δευτερόλεπτα, δηλαδή στο πεδίο Time των Record/Play Blocks βάζουµε την τιµή 5. Αποθηκεύουµε τις ενέργειές µας. Στη συνέχεια ανοίγουµε µία νέα καρτέλα και εισάγουµε ένα Loop Block. Στην περιοχή παραµέτρων του Loop Block κάνουµε τις παρακάτω ρυθµίσεις: 266

267 Control: Επιλέγουµε το Time. Seconds: Εισάγουµε την τιµή 40. Στη συνέχεια µέσα στο Loop Block εισάγουµε τέσσερα Record/Play blocks επιλέγοντας να εκτελέσουν µε τη σειρά τις παρακάτω ενέργειες: το πρώτο να κάνει κύκλο το δεύτερο να κάνει τετράγωνο το τρίτο να κάνει τρίγωνο και το τέταρτο τα κάνει παραλληλόγραµµο. Πραγµατοποιήστε τις ενέργειες αυτές και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Ποια είναι η συνθήκη της επανάληψης; 2.Ποιο είναι το σώµα της επανάληψης; 3.Πόσες φορές θα εκτελεστεί η επανάληψη;

268 Ερωτήσεις: 4.Αν στο πεδίο Until του Loop Block βάλουµε την τιµή 60 πόσες φορές θα εκτελεστεί η επανάληψη; 5.Ποιες κινήσεις εκτελούνται τελικά αν στο πεδίο Until βάλουµε την τιµή 10; 6.Αν θέλουµε η επανάληψη να εκτελεστεί µόνο µία φορά, ποια τιµή πρέπει να βάλουµε στο Until; Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 268

269 . Εξοικείωση µε την έννοια της επιλογής.- Το ροµπότ διαλέγει ενέργειες. Όλα τα προβλήµατα δε λύνονται µόνο µε τη διαδοχική εκτέλεση κάποιων συγκεκριµένων εντολών. Πολλές φορές πρέπει να ελεγχθεί µια κατάσταση και ανάλογα να αποφασίσουµε αν θα συνεχίσουµε προς τη µία ή την άλλη κατεύθυνση τις ενέργειες µας. Για παράδειγµα, όταν θέλουµε να περάσουµε από µία διάβαση πρέπει πρώτα να ελέγξουµε το φανάρι για τους πεζούς. Αν το φανάρι είναι πράσινο, µπορούµε να περάσουµε τη διάβαση, διαφορετικά, αν το φανάρι είναι κόκκινο πρέπει να σταµατήσουµε και να περιµένουµε. Εδώ η κατάσταση που πρέπει να ελεγχθεί είναι το χρώµα του φαναριού και οι δύο δυνατές ενέργειες είναι να περάσουµε ή να περιµένουµε. 1. Το ροµπότ διαλέγει ανάµεσα σε δύο καταστάσεις. ( οµή επιλογής) Η δοµή επιλογής χρησιµοποιείται, όταν κατά την εκτέλεση του προγράµµατος θα πρέπει να ελέγξουµε µια κατάσταση και ανάλογα να εκτελέσουµε ή όχι κάποιες εντολές. Για παράδειγµα, θέλουµε να πιούµε ένα ποτήρι γάλα. Ελέγχουµε αν υπάρχει γάλα στο ψυγείο. Αν υπάρχει µπορούµε να συνεχίσουµε την ενέργεια µας και να γεµίσουµε ένα ποτήρι. Αν δεν υπάρχει, θα πρέπει να ακολουθήσουµε µία διαφορετική διαδικασία, θα πρέπει να πάµε να αγοράσουµε ένα µπουκάλι γάλα ώστε στη συνέχεια να µπορέσουµε να γεµίσουµε το ποτήρι µας. Στο NXT Software, η εντολή επιλογής εµφανίζεται µε το Switch Block. ιατυπώνεται µία συνθήκη στην αρχή του Block και ανάλογα µε την απάντηση ακολουθείται η κατάλληλη διαδροµή. Πρέπει να είµαστε προσεκτικοί στη διατύπωση του προγράµµατος, ώστε να είναι φανερό ποιες εντολές πρέπει να εκτελεστούν µόνο εφόσον ισχύει η συνθήκη 1.1 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος Α. Αναλυτής: Μέλος Β. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας µάθουµε τώρα στο ροµπότ µας να ελέγχει αν έχει φτάσει σε αδιέξοδο και να ενεργεί ανάλογα. Αυτό που θα κάνουµε θα είναι να επιτρέψουµε στο ροµπότ να κινηθεί για κάποιο χρονικό διάστηµα. Στη συνέχεια θα ελέγχει αν ένας αισθητήρας αφής είναι πιεσµένος, που θα σηµαίνει ότι έχει φτάσει σε κάποιο 269

270 αδιέξοδο και ακουµπά σε έναν τοίχο. Αν πράγµατι είναι πιεσµένος, θα πρέπει να κινηθεί προς την αντίθετη κατεύθυνση και να στρίψει για να αποφύγει το αδιέξοδο. ιαφορετικά, θα συνεχίσει την ευθεία του κίνηση. Σε µία νέα καρτέλα εισάγουµε ένα move Block και θέτουµε νε κινείται για 5 δευτερόλεπτα ευθεία. Στη συνέχεια εισάγουµε ένα Switch Block και µετά από αυτό άλλο ένα move block που να κινείται για κάποιο χρονικό διάστηµα ευθεία. Στην περιοχή παραµέτρων του Switch Block κάνουµε τις παρακάτω ρυθµίσεις: Control: Επιλέγουµε Sensor γιατί θέλουµε ο έλεγχος της επανάληψης να γίνεται µε έναν αισθητήρα. Sensor: ιαλέγουµε έναν Touch Sensor. Port: Επιλέγουµε τη θύρα που έχουµε συνδέσει τον Touch Sensor. Action: Επιλέγουµε το Pressed. Μέσα στο Switch Block εισάγουµε ένα move Block το οποίο θέτουµε νε κινείται προς πίσω για 5 δευτερόλεπτα και µετά από αυτό άλλο ένα που θα στρίβει για 2 δευτερόλεπτα. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Ερώτηση: 1.Αναφέρετε ποιες εντολές εκτελούνται ανάλογα µε την τιµή της συνθήκης. 2.Ποια είναι η συνθήκη που ελέγχεται σε αυτή την περίπτωση; Απάντηση Αναλυτή:

271 Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί: Συµπέρασµα οµάδας στην διαφωνία: Υπάρχει και µία άλλη µορφή της δοµής επιλογής, όπου ελέγχουµε µια κατάσταση και, αν ισχύει µια συνθήκη, εκτελούµε ένα σύνολο εντολών, ενώ αν δεν ισχύει η συνθήκη, εκτελούµε ένα διαφορετικό σύνολο εντολών. Πρέπει να είµαστε πολύ προσεκτικοί στη διατύπωση του προγράµµατος, ώστε να είναι φανερό ποιες εντολές πρέπει να εκτελεστούν ανάλογα µε το αν ισχύει ή όχι η συνθήκη. Για παράδειγµα, θέλουµε να παίξουµε µε ένα φίλο µας. Κοιτάµε από το παράθυρο τον καιρό. Αν δεν βρέχει αποφασίζουµε να παίξουµε στην αυλή µε τη µπάλα. Αν βρέχει αποφασίζουµε να µείνουµε µέσα στο σπίτι και να παίξουµε επιτραπέζιο. Η κατάσταση που ελέγχεται εδώ είναι ο καιρός. Οι δύο δυνατές ενέργειες είναι να παίξουµε έξω µπάλα ή µέσα επιτραπέζιο. 271

272 1.2 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος A. Αναλυτής: Μέλος B. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) Ας δούµε τώρα πως θα µπορούσαµε να προκαλέσουµε µία αντίδραση του ροµπότ σε δυνατούς ήχους. Τώρα θα πρέπει να χρησιµοποιήσουµε το Sound Sensor. Θα επιλέξουµε λοιπόν το Sound Sensor στο Switch Block και αφού επιλέξουµε την θύρα που το έχουµε συνδέσει θα ρυθµίσουµε την ένταση του ήχου (έστω 50) πάνω από τον οποίο θα εκτελεσθεί το πάνω σκέλος και κάτω από το οποίο το κάτω σκέλος της επιλογής. Περιγράψτε λοιπόν ένα πρόγραµµα µε το οποίο, αν το ροµπότ ακούσει ένα δυνατό ήχο, όπως για παράδειγµα τη φωνή σας, θα τον λαµβάνει ως πρόσκληση και θα έρχεται ευθεία προς εσάς. Σε αντίθετη περίπτωση δεν θα οπισθοχωρεί και θα εµφανίζεται το µήνυµα «Περιµένω Πρόσκληση» στην οθόνη του. Ερωτήσεις: 1.Ποια είναι η κατάσταση που ελέγχεται από το πρόγραµµα; 2.Ποιες είναι οι δύο πιθανές ενέργειες; 3.Τι γίνεται όταν το ροµπότ ακούει τη φωνή σας; 4.Τι γίνεται όταν δεν ακούει τίποτα; 5.Πόσα Blocks έχετε χρησιµοποιήσει; Απάντηση Προγραµµατιστή:

273 4 5 Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Στη συνέχεια φορτώστε την άσκηση στο ροµπότ και ελέγξτε αν πραγµατοποιούνται οι επιθυµητές ενέργειες. 273

274 2.Το ροµπότ διαλέγει ανάµεσα σε πολλές καταστάσεις. ( οµή πολλαπλής επιλογής) Η δοµή πολλαπλής επιλογής είναι µια παραλλαγή της δοµής επιλογής, όπου υπάρχουν περισσότερες από δύο πιθανές ενέργειες που πρέπει να εκτελεστούν. Στην περίπτωση αυτή ελέγχουµε µία συνθήκη η οποία µπορεί να βρεθεί σε περισσότερες από δύο καταστάσεις και ορίζουµε ένα διαφορετικό σύνολο ενεργειών για κάθε διαφορετική πιθανή κατάσταση. Για παράδειγµα, έχουµε ένα ζάρι και ανάλογα µε το τι θα φέρει κάθε φορά που το ρίχνουµε, κάνουµε αντίστοιχα τόσα βήµατα µπροστά σε ένα παιχνίδι, µέχρι να φτάσουµε στο τέρµα. 2.1 Εξοικείωση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος B. Αναλυτής: Μέλος A. (Ο προγραµµατιστής θα εκτελεί τα βήµατα της εξοικείωσης και θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο, µε τις απαντήσεις του αναλυτή. Ο αναλυτής θα απαντά τις ερωτήσεις που θέτονται.) Ας προσπαθήσουµε να φτιάξουµε στο ροµπότ το παιχνίδι µε το ζάρι. Θα παράγεται ένας αριθµός από το ένα µέχρι το έξι και το ροµπότ θα εκτελεί τόσες περιστροφές στους κινητήρες του, όσες και ο αριθµός που θα παράγεται. Αρχικά πρέπει να εισάγουµε σε µία νέα καρτέλα ένα Random Block, το οποίο να παράγει αριθµούς από το 1 έως το 6,που θα αντιπροσωπεύουν τους αριθµούς που θα µπορούσε να φέρει το ζάρι. Στη συνέχεια εισάγουµε ένα Switch Block και κάνουµε τις παρακάτω ρυθµίσεις στην περιοχή των παραµέτρων του: Control: Επιλέγουµε το Value. Type: Επιλέγουµε το Number, γιατί ο έλεγχος θα γίνεται µε βάση αριθµούς. Display: Απεπιλέγουµε το Flat view ώστε να µπορούµε να δώσουµε περισσότερες των δύο επιλογές. Conditions: Πατώντας το + προσθέτουµε καταστάσεις µέχρι να φτάσουµε τις 7, 6 για τις επιλογές µας και µία που θα τη χρησιµοποιούµε για να δηλώσουµε ότι έχει γίνει λάθος. 274

275 Επιλέγουµε την πρώτη κατάσταση, για παράδειγµα, ως default πατώντας πάνω της το πλήκτρο *. Στη συνέχεια, σε κάθε κατάσταση του Switch Block προσθέτουµε ένα move block και ένα Display Block. Στο Move block επιλέγουµε στο Rotation τον αριθµό που αντιστοιχεί στην κάθε περίπτωση. Για παράδειγµα στην περίπτωση 1 βάζουµε τον αριθµό 1 στο rotation του move block και στο display block δίνουµε µέσω κειµένου να εµφανίζεται το 1, ώστε να φαίνεται στην οθόνη η αντίστοιχη περίπτωση. Θα πρέπει εδώ να προσέξουµε την επιπλέον default περίπτωση, που τη χρησιµοποιεί πάντα το Switch Block. Στη δική µας περίπτωση θα βάλουµε το move block να µην κινείται και το display να δείχνει µήνυµα λάθους. Τέλος δεν πρέπει να ξεχάσουµε να συνδέσουµε την έξοδο από το Random Block και την είσοδο από το Switch Block. Πραγµατοποιήστε τις παραπάνω ενέργειες και αφού φορτώσετε το πρόγραµµα στο ροµπότ, εκτελέστε το και ελέγξτε τα παρακάτω: Συζητήστε µαζί: 1.Ποια είναι η κατάσταση που πρέπει να ελέγξουµε κάθε φορά; 2.Ποιες είναι οι πιθανές ενέργειες;

276 Ερώτηση: 3.Τι γίνεται αν το Random Block δώσει τιµή 3. Απάντηση Αναλυτή: Απάντηση Προγραµµατιστή: Συµφωνώ ιαφωνώ στην απάντηση Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: 2.2 Άσκηση Κατανοµή ρόλων: Προγραµµατιστής: Μέλος A. Αναλυτής: Μέλος B. (Ο προγραµµατιστής θα επιλύει την άσκηση και ο αναλυτής θα συµβάλει στην ολοκλήρωσή της µε ιδέες και παρεµβάσεις. Στο τέλος ο αναλυτής θα πρέπει να συµφωνεί ή να διαφωνεί, αιτιολογώντας το λόγο.) 276

277 ηµιουργήστε ένα πρόγραµµα στο οποίο θα παράγεται ένας αριθµός από το 1 έως το 3 από ένα Random Block. Ο αριθµός αυτός θα περνάει σε ένα Switch Block. Αν περνάει ο αριθµός 1 το ροµπότ θα εκτελεί κίνηση πάνω σε τροχιά κύκλου. Αν περνάει ο αριθµός 2 το ροµπότ θα εκτελεί κίνηση πάνω σε τροχιά τρίγωνου και τέλος αν περνά ο αριθµός 3 θα εκτελεί κίνηση σε τροχιά τετράγωνου. Κάθε κίνηση θα πρέπει να αναγράφεται και στην οθόνη του ροµπότ. Υπόδειξη: Για τις κινήσεις να χρησιµοποιήσετε Record/Play Blocks. Ερωτήσεις: 1.Ποια είναι η συνθήκη ελέγχου; 2.Ποιές είναι οι δυνατές ενέργειες; 3.Αν το ροµπότ κάνει κύκλο, ποια τιµή έχει πάρει το switch block από το random; 4.Πόσες καταστάσεις θα δώσουµε στο Switch Block; Απάντηση Προγραµµατιστή: Απάντηση Αναλυτή: Συµφωνώ ιαφωνώ 277

278 Γιατί:. Συµπέρασµα οµάδας στην διαφωνία: Στη συνέχεια φορτώστε την άσκηση στο ροµπότ και ελέγξτε αν πραγµατοποιούνται οι επιθυµητές ενέργειες. 278

279 Εδώ θα πρέπει να αναφερθεί ότι τα παιδία δεν είχαν καµία προηγούµενη εµπειρία µε το λογισµικό ή το ροµπότ, εποµένως πριν ξεκινήσουµε το πρώτο µάθηµα προηγήθηκε µια αναλυτική παρουσίαση του υλικού του ροµπότ. Παρουσιάσθηκαν στους µαθητές τα τµήµατα του hardware, οι θύρες εισόδου και εξόδου του NXT καθώς και οι αισθητήρες. Στη συνέχεια, ανοίξαµε το λογισµικό για να εξηγήσουµε στα παιδία πώς επικοινωνεί το ροµπότ µε τους προγραµµατιστές µέσω του υπολογιστή. Ακολούθησε µια σύντοµη περιήγηση στις δυνατότητες του λογισµικού NXT Software και επεξήγηση του τι είναι τα blocks. Αφού πλέον οι µαθητές κατανόησαν τα πρώτα βασικά στοιχεία περάσαµε στο φύλλο εργασίας. Σύµφωνα µε τις υποδείξεις του φύλλου εργασίας τα παιδιά έγιναν µία οµάδα στην οποία ο κάθε ένας είχε το ρόλο του. Το επόµενο βήµα ήταν η αρχή της διεξαγωγής των δραστηριοτήτων και της επίλυσης των ασκήσεων. Οι µαθητές έδειξαν να κατανοούν αµέσως τις λειτουργίες των Blocks της βασικής παλέτας και έδειχναν προθυµία στο να ορίσουν τις παραµέτρους των Blocks. Πολλές φορές συζητούσαν µεταξύ τους για θέµατα όπως την ταχύτητα που θα µπορούσαν να βάλουν σε ένα Move Block ή την διάρκεια της κίνησης. Επίσης, κατά τη διάρκεια των ασκήσεων, έπαιζαν κάνοντας παραλλαγές σε κάθε άσκηση, όπως για παράδειγµα σε µηνύµατα που εµφανίζονταν στην οθόνη του ΝΧΤ ή στην διάρκεια κινήσεων, γεγονός που οδηγούσε σε καλύτερη εµπέδωση των δυνατοτήτων των Blocks. Κατά την παρουσίαση του Wait Block ένας µαθητής είχε την απορία για το πώς θα µπορούσαν να χρησιµοποιηθούν άλλοι αισθητήρες και έτσι επαναλάβαµε την άσκηση µε διαφορετικό αισθητήρα ώστε να γίνει κατανοητή τη λειτουργία του Block. Όµοιες ενέργειες έγιναν και στο Switch Block για καλύτερη κατανόηση των αισθητήρων. εύτερο µάθηµα: Στο δεύτερο µάθηµα συνεχίσαµε τις ασκήσεις του φύλλου εργασίας, αφού πρώτα έγινε µια γρήγορη επανάληψη των Blocks της παλέτας Common. Αυτή τη φορά ως θέµα είχαµε την έννοια της µεταβλητής και της επανάληψης στον προγραµµατισµό. Οι µαθητές γνώριζαν την µεταβλητή µέσα από τα µαθηµατικά αλλά δεν ήξεραν πως µπορεί αυτή να χρησιµοποιηθεί σε έναν υπολογιστή. Αφού αναλύσαµε το θεωρητικό κοµµάτι της µεταβλητής τα παιδιά εξέφρασαν την απορία γιατί εµείς τη χρειαζόµαστε. Έτσι περάσαµε στις δραστηριότητες ώστε να γίνει φανερός ο ρόλος της σε ένα πρόγραµµα. Μέσα από την πρώτη δραστηριότητα παρουσιάστηκε ο τρόπος που δηµιουργούµε µία µεταβλητή στο συγκεκριµένο λογισµικό και αναλύθηκαν οι τρεις διαφορετικοί τύποι που µπορεί να έχει αυτή. Επίσης, παρουσιάστηκε η λειτουργία των καλωδίων δεδοµένων για το πέρασµα τιµών από και προς τις µεταβλητές σε άλλα Blocks, όπως και οι θύρες εισόδου και εξόδου των Block, έννοιες πολύ χρήσιµες και στις επόµενες δραστηριότητες. Στη συνέχεια, περάσαµε στη δραστηριότητα µε το Math Block. Οι µαθητές χωρίς δυσκολία δηµιούργησαν µία κατάλληλη µεταβλητή, όρισαν τις παραµέτρους του Math Block και του Move Block και χρησιµοποίησαν τα καλώδια δεδοµένων. Σε αυτό το σηµείο έπρεπε να γίνει η παρουσίαση του Number To Text Block, το οποίο µετατρέπει έναν αριθµό σε κείµενο για την εµφάνισή του στην οθόνη του NXT. Τα παιδιά ρώτησαν αν τελικά στην οθόνη θα φαίνεται ο αριθµός 3 ή θα παρουσιάζεται 279

280 γραπτώς (δηλαδή ως Τρία) και όταν άκουσαν ότι στην οθόνη θα φαίνεται ο χαρακτήρας «3» είχαν την απορία ποια αλλαγή κάνει τελικά το Number To Text. Έτσι χρησιµοποιήσαµε το παράδειγµα των αριθµών όταν βρίσκονται σε ένα τηλεφωνικό νούµερο, όπου παρουσιάζονται ως χαρακτήρες και όταν εκφράζουν µία ποσότητα, όπως για παράδειγµα 3 ευρώ, όπου πρόκειται για αριθµό-ποσότητα. ιευκρινίσαµε ότι ο αριθµός που δίνει η µεταβλητή είναι ποσότητα και το Number To Text τον µετατρέπει σε χαρακτήρα γιατί στην οθόνη του NΧΤ εµφανίζονται µόνο χαρακτήρες. Ένα λάθος που έκαναν τα παιδία σε αυτή τη δραστηριότητα ήταν να µην αλλάξουν τη ρύθµιση του Display Block ώστε να δείχνει κείµενο. Βλέποντας την θύρα εισόδου του Display (Θύρα για κείµενο) στην οποία στείλαµε την έξοδο του Number To Text κατάλαβαν τι αλλαγή έπρεπε να γίνει. Αφού εκτελέσαµε όλη τη δραστηριότητα τα παιδία είχαν την απορία, αν µπορούµε να χρησιµοποιήσουµε την τιµή της µεταβλητής για να ορίσουµε την ταχύτητα του Move Block. Αµέσως δείξαµε τον τρόπο που γίνεται η σύνδεση στις θύρες εισόδου του Move Block για να περάσει η τιµή της µεταβλητής όχι µόνο στην ταχύτητα, αλλά αν το επιθυµούµε και στη διάρκεια της κίνησης. Προσέξαµε στο σηµείο αυτό η θύρα εξόδου από την οποία πήραµε την τιµή της µεταβλητής, να δίνει αριθµό σε µορφή ποσότητας και όχι χαρακτήρα. Εκτελέσαµε την ίδια δραστηριότητα αρκετές φορές ακόµα, αλλάζοντας τις τιµές του Math Block και τις πράξεις που αυτό εκτελούσε και κάθε φορά βλέπαµε την αλλαγή στην ταχύτητα ή στη διάρκεια της κίνησης. Με την επανάληψη αυτών των ασκήσεων θέλαµε να γίνει απόλυτα σαφής στους µαθητές ο βασικός αυτός ρόλος της µεταβλητής, δηλαδή η απόδοση τιµήν από και προς αυτήν. Στην επόµενη δραστηριότητα αφού παρουσιάστηκε το Random Block, οι µαθητές υλοποίησαν µόνοι τους τα βήµατα, που ήταν όµοια µε την προηγούµενη δραστηριότητα ώστε να προσεχθούν τα ίδια σηµεία και να γίνει απόλυτα κατανοητή η διαδικασία. Όπως την δραστηριότητα µε το Math Block, έτσι κι αυτή, την επαναλάβαµε 2-3 φορές αλλάζοντας κάθε φορά τα όρια του Random Block και στέλνοντας την τιµή της µεταβλητής εκτός από την οθόνη στην ταχύτητα και τη διάρκεια της κίνησης του Move Block. Αφού ολοκληρώσαµε µε τις µεταβλητές, περάσαµε στην έννοια της επανάληψης. Για να κατανοήσουν τα παιδία τη χρησιµότητα της επανάληψης αναφέραµε παραδείγµατα από την καθηµερινή ζωή και ζητήσαµε και από αυτά να βρουν µερικά. Τα παραδείγµατα των παιδιών είχαν να κάνουν µε την επανάληψη της ντρίπλας στο µπάσκετ για να φτάσουν στο καλάθι και να σουτάρουν. Στη συνέχεια, περάσαµε στην υπενθύµιση της άσκησης από το πρώτο µάθηµα που έγινε µια πρώτη γνωριµία µε το Loop Block ώστε να γίνει και εισαγωγή των εννοιών της συνθήκης επανάληψης και του σώµατος της επανάληψης. Οι µαθητές βλέποντας πάλι το πεδίο ρυθµίσεων του Loop Block είχαν την απορία για την χρήση του πεδίου count. Η απορία λύθηκε αµέσως µε την υπενθύµιση της µεταβλητής και του τρόπου που έπαιρνε αυτή τιµή από το Loop Block όταν είχαν τσεκάρει το count. Κατά τη διάρκεια της δεύτερης άσκησης ένα από τα παιδία είχε την απορία τι γίνεται αν στο Move Block επιλέξουµε και τις τρεις θύρες εξόδου. Του ζητήσαµε να δοκιµάσει για να δει το αποτέλεσµα και διαπίστωσε ότι αυτό δεν έχει νόηµα από τη στιγµή που δεν υπάρχει τρίτος κινητήρας. Εξηγήσαµε ότι για τον έλεγχο και της τρίτης θύρας, αν υπήρχε κι άλλος κινητήρας πρέπει να χρησιµοποιηθεί ξεχωριστά ένα Motor Block. Επίσης, στη δεύτερη άσκηση κάναµε και πάλι παραλλαγές µε τους αισθητήρες και 280

281 επανάληψη της εκτέλεσής της ζητώντας από τους µαθητές να αναφέρουν που θα ήταν χρήσιµος ο κάθε αισθητήρας. Στην Τρίτη και τελευταία άσκηση της ενότητας της επανάληψης, ξεκινήσαµε µε τα βήµατα που παρουσιάζονται και έγινε καταγραφή των κινήσεων. Όταν φτάσαµε στο σηµείο της αναπαραγωγής των κινήσεων οι µαθητές είχαν στο µυαλό τους να ελέγξουν τις θύρες των αισθητήρων. Αναφέρθηκε όµως και πάλι η λειτουργία του Record/Play Block, το οποίο εκτελεί την κίνηση ακριβώς όπως την κατέγραψε. Σε αυτή την ενότητα τα παιδιά δεν έδειξαν ιδιαίτερη δυσκολία στο να βρίσκουν κάθε φορά ποια ήταν η συνθήκη επανάληψης και το σώµα της επανάληψης. Τρίτο µάθηµα: Στο τρίτο και τελευταίο µάθηµα, αναπτύχθηκε η έννοια της επιλογής. Όπως και στις άλλες ενότητες ξεκινήσαµε δίνοντας παραδείγµατα από την καθηµερινή ζωή για την χρησιµότητα της επιλογής. Αφού διαπιστώσαµε ότι οι µαθητές κατανόησαν τα θεωρητικό κοµµάτι της επιλογής περάσαµε στις ασκήσεις. Οι µαθητές έχοντας πλέον αποκτήσει εξοικείωση µε τα Blocks και τα πάνελ ρυθµίσεών τους ολοκληρώνουν µε τη βοήθεια των υποδείξεων αρκετά εύκολα και σε σύντοµο χρόνο τις ασκήσεις της τελευταίας αυτής ενότητας. Στις πρώτες δύο ασκήσεις, χρειάστηκε µόνο λίγη προσοχή στο αν θα χρησιµοποιήσουν το ένα ή και τα δύο σκέλη του Switch Block. Σε αυτές τις ασκήσεις έγιναν και πάλι αναφορές στους άλλους αισθητήρες. Στις δύο τελευταίες ασκήσεις, µε την πολλαπλή επιλογή, οι µαθητές έµαθαν τη νέα µορφή του Switch Block (χωρίς να είναι επιλεγµένο το Flat View) και κατανόησαν πώς να χρησιµοποιούν την επιλογή µε βάση µία τιµή και όχι την ένδειξη ενός αισθητήρα. Αυτό που δυσκόλεψε τα παιδιά ήταν η αναγκαία εισαγωγή µίας Default περίπτωσης που ζητείται πάντα από το Switch Block όταν αυτό δέχεται τιµές. Τέλος, κάναµε µία παραλλαγή στην Τρίτη άσκηση συνδυάζοντας το Switch µε το Loop Block ώστε να δείξουµε πώς τοποθετώντας όλο το πρόγραµµα µέσα σε ένα Loop αυτό επαναλαµβάνεται για όσο επιθυµούµε και το Random Block παράγει συνεχόµενα τιµές τις οποίες δίνει στο Switch Block. Ένα λάθος που έγινε εδώ από τους µαθητές ήταν ότι αρχικά τοποθέτησαν µέσα στο Loop Block µόνο το Random Block, γεγονός που οδήγησε στην τελική εκτέλεση του προγράµµατος µόνο µία φορά και όχι 4 όπως είχαν ορίσει. Γρήγορα κατάλαβαν το λάθος τους και το διόρθωσαν και έτσι τελικά το πρόγραµµα επαναλήφθηκε στον επιθυµητό αριθµό. 281

282 5.3 Τελική ραστηριότητα Τελειώνοντας τα µαθήµατα, για να διαπιστώσουµε αν οι µαθητές κατανόησαν τα βασικά θέµατα και για µπορέσουν και οι ίδιοι να εξασκηθούν χωρίς τις αναλυτικές υποδείξεις του φύλλου εργασίας δηµιουργήσαµε µία τελική δραστηριότητα. Στη δραστηριότητα αυτή, δίνεται η εκφώνηση τεσσάρων ασκήσεων και λίγες βοηθητικές υποδείξεις για κάθε µία. Ο βαθµός δυσκολίας αυξάνεται καθώς περνούν οι ασκήσεις. Οι ασκήσεις αναφέρονται σε βασικά σηµεία του λογισµικού και καλύπτουν όλες τις ενότητες του φύλλου εργασίας. Επίσης, χρησιµοποιούνται στοιχεία, όπως ήχοι, που θα προκαλέσουν ενδιαφέρον και ευχαρίστηση στους µαθητές, ώστε να έχει πάντα η δραστηριότητα τη µορφή παιχνιδιού. Η πρώτη άσκηση ζητά να γίνει ένας απλός συνδυασµός του Move και του Sound Block. Η δεύτερη άσκηση ζητά να γίνεται µέτρηση της απόστασης από αντικείµενα, ώστε να χρησιµοποιηθεί ο αισθητήρας υπερήχων και να γίνει η εφαρµογή του κόλπου που έµαθαν τα παιδιά για την εµφάνιση µιας τιµής στην οθόνη. Η άσκηση αυτή επίσης, περιλαµβάνει και τη δοµή της επανάληψης για να γίνονται συνεχώς οι µετρήσεις. Η επόµενη άσκηση ζητά να γίνεται αποφυγή εµποδίων κάνοντας έλεγχο µιας απόστασης και το ροµπότ να ενεργεί ανάλογα µε την τιµή της ένδειξης του αισθητήρα. Αυτή η άσκηση έχει ως στόχο να διαπιστώσουµε αν οι µαθητές θεωρούν πιο εύκολη την χρήση του Wait ή του Switch Block για την ολοκλήρωσή της. Θα πρέπει επίσης να σκεφτούν να χρησιµοποιήσουν και ένα Loop για συνεχείς ελέγχους. Ακόµα, ζητά να αναφερθεί σε ποιες περιπτώσεις θα ήταν χρήσιµοι οι υπόλοιποι αισθητήρες. Η τελευταία άσκηση ζητά από τους µαθητές να δηµιουργήσουν έναν αθροιστή, δίνοντας κάποιες υποδείξεις και αναλύοντας περί τίνος πρόκειται ώστε να κάνουν χρήση µεταβλητών και του Variable Block. Στη συνέχεια όµοια µε το φύλλο εργασίας καλούνται να εµφανίζουν κάθε φορά την νέα τιµή στην οθόνη του ροµπότ και να την περνούν στην ταχύτητα ενός Move Block για να γίνεται και κινητικά ορατό το αποτέλεσµα. Οι ασκήσεις, που δόθηκαν στους µαθητές παρουσιάζονται αναλυτικά στην παρακάτω συµπερασµατική δραστηριότητα: 282

283 Τελική ραστηριότητα εξοικείωσης µε το NXT Software ραστηριότητα 1: Κίνηση µε ήχο. Σε αυτή την πρώτη δραστηριότητα θα δηµιουργήσουµε ένα πρόγραµµα, µε το οποίο: Το ροµπότ θα αναπαράγει τον ήχο ενός κινητήρα όση ώρα κινείται. Όταν θα σταµατά η κίνηση, θα πρέπει να σταµατά και ο ήχος. Βοήθεια: 1.Καταγράψτε µία µία τις ενέργειες που εκτελούνται και επιλέξτε τα ανάλογα Blocks που θα σας βοηθήσουν να ολοκληρώσετε το πρόγραµµα. Ενέργεια 1 Block 1 Ενέργεια 2 Block 2. Ενέργεια 3 Block Σκεφτείτε ποια ρύθµιση πρέπει να γίνει στο πεδίο ρυθµίσεων του ανάλογου block, ώστε ένας ήχος να επαναλαµβάνεται. 3. ώστε τις ρυθµίσεις που επιθυµείτε στο block που θα προκαλέσει την κίνηση, ως προς τη διάρκεια και την ταχύτητα. 4. Σκεφτείτε ποια ρύθµιση πρέπει να γίνει στο πεδίο ρυθµίσεων του ανάλογου block, ώστε ένας ήχος να σταµατήσει. Υποδείξεις 1. Επιλέξτε τον ήχο!motor Run. 2. Στο τέλος του προγράµµατος µπορείτε να βάλετε µία καθυστέρηση, µε ένα Wait Block, ώστε να γίνεται φανερό ότι ο ήχος σταµατά µαζί µε την κίνηση. ραστηριότητα 2: Μέτρηση απόστασης. Τώρα θα πρέπει να δηµιουργήσετε ένα πρόγραµµα που: Θα µετρά την απόσταση του ροµπότ από ένα αντικείµενο που βρίσκεται µπροστά του και θα εµφανίζει την απόσταση αυτή στην οθόνη. Βοήθεια: 1.Σκεφτείτε ποιός αισθητήρας µπορεί να εντοπίσει αντικείµενα που βρίσκονται σε απόσταση και ποιο block τον ελέγχει. 2.Με ποιο Block µπορούµε να εµφανίσουµε κάτι στην οθόνη; 3.Σκεφτείτε σε τι µορφή πρέπει να µετατρέψουµε την ένδειξη του αισθητήρα για να φανεί στην οθόνη και πως µπορούµε να κάνουµε την µετατροπή. 4.Ποιο Block πρέπει να προσθέσουµε για να εκτελείτε η ενέργεια για πάντα; 283

284 Υποδείξεις 1.Μετά το Block που θα εµφανίζει την ένδειξη στην οθόνη προσθέστε µια καθυστέρηση µε ένα Wait Block. ραστηριότητα 3: Αποφυγή εµποδίων ηµιουργήστε ένα πρόγραµµα µε το οποίο: Το ροµπότ θα κινείται απεριόριστα ευθεία, µέχρι να εντοπίσει σε απόσταση µικρότερη των 10 ιντσών ένα εµπόδιο. Αν εντοπίσει το εµπόδιο θα πρέπει να ακουστεί ο ήχος Woops, να προχωρήσει προς πίσω για δύο δευτερόλεπτα και να στρίψει για άλλα δύο δευτερόλεπτα. Βοήθεια: 1.Σκεφτείτε ποιος αισθητήρας µπορεί να εντοπίσει αντικείµενα που βρίσκονται σε απόσταση. 2.Με ποια Block το ροµπότ κινείται και παράγει ήχους; 3.Τι Block πρέπει να προσθέσουµε ώστε ο έλεγχος να γίνεται για πάντα και σε πιο σηµείο του προγράµµατος; Ερωτήσεις: 1.Τι θα έπρεπε να αλλάξουµε στο πρόγραµµά µας για να έχει την δυνατότητα το ροµπότ να κινείται πάνω στο γραφείο χωρίς να πέσει κάτω από αυτό; 2.Τι θα έπρεπε να αλλάξουµε στο πρόγραµµά µας για να αλλάζει πορεία το ροµπότ όταν ακούει κάποιον ήχο; 3.Τι θα έπρεπε να αλλάξουµε στο πρόγραµµά µας για να αποφεύγει τυχόν εµπόδια µόλις τα ακουµπά; 284

285 ραστηριότητα 4: Σταδιακή αύξηση της ταχύτητας µε χρήση αθροιστή ηµιουργήστε ένα πρόγραµµα µε το οποίο: Το ροµπότ θα κινηθεί επί 50sec και κάθε 5sec θα αυξάνει την ταχύτητα του κατά 10. Παράλληλα να εµφανίζει την τιµή της ταχύτητας στην οθόνη. Υποδείξεις για τη δηµιουργία του αθροιστή: Ο αθροιστής είναι µια διαδικασία, µε την οποία προσθέτουµε µία συγκεκριµένη τιµή σε µία µεταβλητή όσες φορές θέλουµε, µέσω µιας επανάληψης. ηλαδή: Αρχικά δηµιουργούµε µια µεταβλητή και της δίνουµε την τιµή 0. Στη συνέχεια, µέσα σε µια επανάληψη προσθέτουµε την τιµή που θέλουµε στη µεταβλητή και στη συνέχεια εκχωρούµε τη νέα της τιµή Σχηµατικά: Μεταβλητή = 0 Μεταβλητή +Τιµή (Πρόσθεση) Μεταβλητή + Τιµή Επανάληψη όσες φορές θέλουµε Προσπαθήστε να δηµιουργήσετε την παραπάνω µορφή µε block µεταβλητών και Math Block ορίστε στην µεταβλητή να προστίθεται ο αριθµός 10 και τέλος η επανάληψη να γίνει 10 φορές. Επίσης, σε κάθε επανάληψη, να εµφανίζεται η τιµή της µεταβλητής στην οθόνη και η τιµή αυτή να δίνεται στην ταχύτητα ενός Move Block. Βοήθεια: 1.Σκεφτείτε σε τι µορφή πρέπει να µετατρέψουµε την τιµή της µεταβλητής για να φανεί στην οθόνη και πως µπορούµε να κάνουµε την µετατροπή. 2.Σε ποιο σηµείο του προγράµµατος θα µπουν τα επιπλέον blocks (µέσα ή έξω από την επανάληψη); Τέλος Τελικής ραστηριότητας. 285

286 Οι σωστές λύσεις των ασκήσεων είναι οι παρακάτω: ραστηριότητα 1: Κίνηση µε ήχο. ραστηριότητα 2:Μέτρηση απόστασης. ραστηριότητα 3: Αποφυγή εµποδίων Απαντήσεις σε επιπλέον ερωτήσεις: 1.Θα έπρεπε στη θέση του αισθητήρα Ultrasonic να βάλουµε Light Sensor. 2. Θα έπρεπε στη θέση του αισθητήρα Ultrasonic να βάλουµε Sound Sensor. 3 Θα έπρεπε στη θέση του αισθητήρα Ultrasonic να βάλουµε Touch Sensor. ραστηριότητα 4: Σταδιακή αύξηση της ταχύτητας µε χρήση αθροιστή 286

Πακέτο Lego Mindstorms

Πακέτο Lego Mindstorms Πακέτο Lego Mindstorms Τούβλο NXT και Κινητήρες, Αισθητήρες Α. Κινητήρες Οι κινητήρες είναι αυτοί που κινούν το ρομπότ μας. Οι κινητήρες συνδέονται με καλώδια στις θύρες εξόδου A,B ή C του NXT. Αν μάλιστα

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

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

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

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

Φύλλο Εργασίας 4 Συνθετική εργασία

Φύλλο Εργασίας 4 Συνθετική εργασία Φύλλο Εργασίας 4 Συνθετική εργασία Ομάδα Πετυχαίνοντας το στόχο Α1. Προγραμματισμός στόχου: Για τον προγραμματισμό των ρομποτικών μηχανών, όπως ήδη είδαμε, χρησιμοποιούμε το λογισμικό Lego Mindstorms Edu

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

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

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT Φύλλο Εργασίας 1 ο Γνωριμία με το προγραμματιστικό περιβάλλον ΝΧΤ-G Όνομα Ημερομηνία Εξοικείωση με το NXT-G Στις παρακάτω

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

Εκπαιδευτική Ροµποτική µε τα LEGO MINDSTRORMS

Εκπαιδευτική Ροµποτική µε τα LEGO MINDSTRORMS Εκπαιδευτική Ροµποτική µε τα LEGO MINDSTRORMS 1. Γνωριµία µε τα υλικά α) Μικροεπεξεργαστής ΝΧΤ Ο µικροεπεξεργαστής ΝΧΤ είναι το βασικό στοιχείο κάθε ροµποτικής κατασκευής του συστήµατος της Lego Mindstorms.

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

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

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

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

ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT. ΤΟΜΟΣ Β - ΚΕΦΑΛΑΙΟ 3o. Προγραμματιστικό περιβάλλον ΝΧΤ-G

ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT. ΤΟΜΟΣ Β - ΚΕΦΑΛΑΙΟ 3o. Προγραμματιστικό περιβάλλον ΝΧΤ-G ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT ΤΟΜΟΣ Β - ΚΕΦΑΛΑΙΟ 3o Προγραμματιστικό περιβάλλον ΝΧΤ-G Το προγραμματιστικό περιβάλλον NXT-G Το NXT-G είναι μια γλώσσα προγραμματισμού που χρησιμοποιούμε

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

«Προγραµµατισµός του LEGO Mindstorm NXT για το διαγωνισµό "Move the Ball!"»

«Προγραµµατισµός του LEGO Mindstorm NXT για το διαγωνισµό Move the Ball!» ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΚΠ 413 / ΕΚΠ 606 ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ Εργασία Εξαµήνου Προγραµµατισµός του LEGO Mindstorm NXT για το διαγωνισµό "Move the Ball!"

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

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

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

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

Εξοικείωση με το NXT-G

Εξοικείωση με το NXT-G Εξοικείωση με το NXT-G Εντολές Λίγα λόγια για τους κινητήρες Οι κινητήρες μπορούν να προγραμματιστούν να ξεκινούν και να σταματούν τη στιγμή που θέλουμε. Η εντολή κίνησης κινητήρα motor είναι πολύ απλή.

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

Εισαγωγή στον Προγραµµατισµό µε δραστηριότητες Εκπαιδευτικής Ροµποτικής:Χρήση της RobotC

Εισαγωγή στον Προγραµµατισµό µε δραστηριότητες Εκπαιδευτικής Ροµποτικής:Χρήση της RobotC ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Τασολάµπρου Σταυρούλα Α.Ε.Μ 1349 Εισαγωγή στον Προγραµµατισµό µε δραστηριότητες Εκπαιδευτικής Ροµποτικής:Χρήση της RobotC (Introduction

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

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

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

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ... 2 ΠΡΟΛΟΓΟΣ... 3 ΕΙΣΑΓΩΓΗ... 4 ΤΑ ΚΟΥΜΠΙΑ ΚΑΙ ΤΑ ΜΠΛΟΚ... 6 ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟΥΣ ΚΙΝΗΤΗΡΕΣ... 9 ΚΙΝΗΣΕΙΣ ΚΙΝΗΤΗΡΑ...

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

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

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

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT Φύλλο Εργασίας 1 ο Γνωριμία με το προγραμματιστικό περιβάλλον ΝΧΤ-G Σημειώσεις Καθηγητή Σκοπός : να μάθουν να χρησιμοποιούν

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

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885

Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 CubisLITE Client Οδηγίες Χρήσεως Cubitech Hellas Ακροπόλεως 24, Καλλιθέα, Αθήνα Τ.Κ. 176 75, Ελλάδα, Τηλ. 210 9580887-8 Φαξ.2109580885 1 ΠΕΡΙΕΧΟΜΕΝΑ Γενικά 1. Τι είναι ο CubisLITE Server 2. Τι είναι ο

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ EV3 Επίπεδο Ι

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

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

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

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

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

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

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

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

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

ΦΟΡΜΑ ΥΠΟΒΟΛΗΣ ΠΡΟΤΑΣΗΣ ΓΙΑ ΤΗ ΔΗΜΙΟΥΡΓΙΑ ΟΜΙΛΟΥ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ ΝΙΚΟΛΑΟΣ ΑΜΑΝΑΤΙΔΗΣ 1 Ο ΠΡΟΤΥΠΟ ΠΕΙΡΑΜΑΤΙΚΟ ΔΗΜΟΤΙΚΟ ΣΧΟΛΕΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΦΟΡΜΑ ΥΠΟΒΟΛΗΣ ΠΡΟΤΑΣΗΣ ΓΙΑ ΤΗ ΔΗΜΙΟΥΡΓΙΑ ΟΜΙΛΟΥ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 ΝΙΚΟΛΑΟΣ ΑΜΑΝΑΤΙΔΗΣ 1 Ο ΠΡΟΤΥΠΟ ΠΕΙΡΑΜΑΤΙΚΟ ΔΗΜΟΤΙΚΟ ΣΧΟΛΕΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΟΜΙΛΟΣ ΡΟΜΠΟΤΙΚΗΣ ΟΝΟΜΑΤΕΠΩΝΥΜΟ ΕΚΠ/ΚΟΥ ΝΙΚΟΛΑΟΣ ΑΜΑΝΑΤΙΔΗΣ

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

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

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

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

Περιγραφή της 3 ης εργαστηριακής εφαρμογής: ρομποτικό σύστημα LEGO NXT

Περιγραφή της 3 ης εργαστηριακής εφαρμογής: ρομποτικό σύστημα LEGO NXT www.robolab.tuc.gr Περιγραφή της 3 ης εργαστηριακής εφαρμογής: ρομποτικό σύστημα LEGO NXT ΜΠΔ, 9 Ο Εξάμηνο Σάββας Πιπερίδης 1. Το ρομποτικό σύστημα LEGO NXT περισσότερες πληροφορίες: http://mindstorms.lego.com/

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

ΕΓΧΕΙΡΙ ΙΟ ΕΓΚΑΤΑΣΤΑΣΗΣ KAI ΧΡΗΣΗΣ «ΓΛΩΣΣΑ Α-Γ ΓΥΜΝΑΣΙΟΥ»

ΕΓΧΕΙΡΙ ΙΟ ΕΓΚΑΤΑΣΤΑΣΗΣ KAI ΧΡΗΣΗΣ «ΓΛΩΣΣΑ Α-Γ ΓΥΜΝΑΣΙΟΥ» ΥΠΕΠΘ / ΠΑΙ ΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΕΠΙΧΕΙΡΗΣΙΑΚΟ ΠΡΟΓΡΑΜΜΑ «ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ» Γ ΚΟΙΝΟΤΙΚΟ ΠΛΑΙΣΙΟ ΣΤΗΡΙΞΗΣ ΕΡΓO ΣΥΓΧΡΗΜΑΤΟ ΟΤΟΥΜΕΝO ΚΑΤΑ 80% ΑΠΟ ΤΟ ΕΚΤ ΚΑΙ ΚΑΤΑ 20% ΑΠΟ ΕΘΝΙΚΟΥΣ ΠΟΡΟΥΣ «ράσεις Υποστήριξης

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

Εκπαιδευτικό Ρομπότ ΝΧΤ (REM Bot)

Εκπαιδευτικό Ρομπότ ΝΧΤ (REM Bot) akrob.frederick.ac.cy ΠΑΝΕΠΙΣΤΗΜΙΟ FREDERICK frederick.ac.cy Εκπαιδευτικό Ρομπότ ΝΧΤ (REM Bot) Κατασκευή & Firmware Δρ Γιώργος Α. Δημητρίου Ακαδημία Ρομποτικής Τμήμα Πληροφορικής και Μηχανικών Υπολογιστών

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

Συσκευές δείκτη και πληκτρολόγιο

Συσκευές δείκτη και πληκτρολόγιο Συσκευές δείκτη και πληκτρολόγιο Οδηγός χρήσης Copyright 2007 Hewlett-Packard Development Company, L.P. Η επωνυµία Windows είναι εµπορικό σήµα κατατεθέν της εταιρείας Microsoft Corporation στις Η.Π.Α.

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

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

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

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

ΠΑΡΑΡΤΗΜΑ Ι Παρουσίαση των εντολών του ΝΧΤ-G

ΠΑΡΑΡΤΗΜΑ Ι Παρουσίαση των εντολών του ΝΧΤ-G ΠΑΡΑΡΤΗΜΑ Ι Παρουσίαση των εντολών του ΝΧΤ-G Ένα πρόγραμμα που δημιουργούμε με το λογισμικό ΝΧΤ-G είναι μία σειρά από εντολές, οι οποίες καθορίζουν πως θα συμπεριφερθεί το ρομπότ μας στα συμβάντα - γεγονότα

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

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

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

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

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

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

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

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch Τι θα μάθουμε σήμερα: Να ενεργοποιούμε το λογισμικό Scratch Να αναγνωρίζουμε τα κύρια μέρη του περιβάλλοντος του Scratch Να δημιουργούμε/εισάγουμε/τροποποιούμε

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

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

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

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

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής Μάθημα 7ο Πολυμέσα 7.Α.1 Παρουσιάσεις Οι παρουσιάσεις είναι μια εφαρμογή που χρησιμεύει στην παρουσίαση των εργασιών μας. Αποτελούν μια συνοπτική μορφή των εργασιών μας. Μέσω δημιουργίας διαφανειών, μορφοποιήσεων

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

Μάθημα 4ο. Προγράμματα

Μάθημα 4ο. Προγράμματα Μάθημα 4ο Προγράμματα Σελίδα 47 από 106 4.1 Εγκατάσταση προγραμμάτων Όπως έχουμε πει στο πρώτο μάθημα (Σημειώσεις 1ου Μαθήματος 1.3.3.Β σελ. 12) τα προγράμματα ή αλλιώς εφαρμογές αποτελούν μέρος του λογισμικού

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

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

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

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

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

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

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

Παίζουμε μπάσκετ; Εκπαιδευτική δραστηριότητα ρομποτικής στο προγραμματιστικό περιβάλλον Lego Mindstorms

Παίζουμε μπάσκετ; Εκπαιδευτική δραστηριότητα ρομποτικής στο προγραμματιστικό περιβάλλον Lego Mindstorms Παίζουμε μπάσκετ; Εκπαιδευτική δραστηριότητα ρομποτικής στο προγραμματιστικό περιβάλλον Lego Mindstorms Γεώργιος Βουνάτσος Εκπαιδευτικός ΠΕ12 gvounatsos@freemail.gr Ανδριανή Μέγα Εκπαιδευτικός ΠΕ19 adrianim@hotmail.com

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

Εγχειρίδιο Εγκατάστασης και Χρήσης Εκπαιδευτικής Εφαρμογής

Εγχειρίδιο Εγκατάστασης και Χρήσης Εκπαιδευτικής Εφαρμογής Εγχειρίδιο Εγκατάστασης και Χρήσης Εκπαιδευτικής Εφαρμογής Εγχειρίδιο Εγκατάστασης και Χρήσης Πίνακας Περιεχομένων. Πριν την εγκατάσταση... 3. Ελάχιστες απαιτήσεις σε εξοπλισμό... 3 2. Εγκατάσταση... 4

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

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Copyright 2008 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι εµπορικό σήµα κατατεθέν της εταιρείας Microsoft Corporation στις Η.Π.Α.

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

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31

Περιεχόμενα. Λίγα λόγια από το συγγραφέα Windows Vista Επιφάνεια εργασίας Γραμμή εργασιών... 31 Περιεχόμενα Λίγα λόγια από το συγγραφέα... 7 91 Windows Vista... 9 92 Επιφάνεια εργασίας... 18 93 Γραμμή εργασιών... 31 94 Χειρισμός παραθύρων... 53 95 Το παράθυρο Υπολογιστής... 77 96 Το μενού Έναρξη...

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

Ο ΗΓΙΕΣ ΛΕΙΤΟΥΡΓΙΑΣ. Τοποθέτηση και αντικατάσταση των µπαταριών. Γενικές πληροφορίες. Περιγραφή λειτουργίας. ruwido s_4 τηλεχειριστήριο γενικής χρήσης

Ο ΗΓΙΕΣ ΛΕΙΤΟΥΡΓΙΑΣ. Τοποθέτηση και αντικατάσταση των µπαταριών. Γενικές πληροφορίες. Περιγραφή λειτουργίας. ruwido s_4 τηλεχειριστήριο γενικής χρήσης Ο ΗΓΙΕΣ ΛΕΙΤΟΥΡΓΙΑΣ ruwido s_4 τηλεχειριστήριο γενικής χρήσης Σας συγχαίρουµε για την αγορά ενός RUWIDO τηλεχειριστηρίου γενικής χρήσης. Το νέο σας τηλεχειριστήριο αντικαθιστά το πρωτότυπο τηλεχειριστήριο

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

Archive Player Divar Series. Εγχειρίδιο χειρισμού

Archive Player Divar Series. Εγχειρίδιο χειρισμού Archive Player Divar Series el Εγχειρίδιο χειρισμού Archive Player Πίνακας περιεχομένων el 3 Πίνακας περιεχομένων 1 Εισαγωγή 4 2 Λειτουργία 5 2.1 Εκκίνηση του προγράμματος 5 2.2 Παρουσίαση του κύριου

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

Εγκατάσταση του εκτυπωτή από το CD λογισμικού και τεκμηρίωσης

Εγκατάσταση του εκτυπωτή από το CD λογισμικού και τεκμηρίωσης Σελίδα 1 από 6 Οδηγός σύνδεσης Υποστηριζόμενα λειτουργικά συστήματα Μπορείτε να εγκαταστήσετε το λογισμικό του εκτυπωτή χρησιμοποιώντας το CD λογισμικού στα ακόλουθα λειτουργικά συστήματα: Windows 8.1

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

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

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT Φύλλο Εργασιών 3 ο Αισθητήρες και Δομή Επιλογής Όνομα Ημερομηνία ραστηριότητα 12 η : σταμάτημα με αισθητήρα υπερήχων Τοποθετείστε

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

ebeam Projection ΜΕΛΕΤΕΣ ΕΓΚΑΤΑΣΤΑΣΕΙΣ ΚΑΤΑΣΚΕΥΕΣ ΤΕΧΝΟΛΟΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ebeam Projection ΜΕΛΕΤΕΣ ΕΓΚΑΤΑΣΤΑΣΕΙΣ ΚΑΤΑΣΚΕΥΕΣ ΤΕΧΝΟΛΟΓΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ebeam Projection Δημιουργήστε ένα διαδραστικό πίνακα όπου κι αν πάτε! Το σύστημα προβολής ebeam συνδυάζεται με οποιοδήποτε στάνταρντ ψηφιακό προβολέα και δίνει στους μαθητές - σπουδαστές τη δυνατότητα

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

Πέμπτη 25 Σεπτεμβρίου αίθουσα «Μελίνα Μερκούρη» του Δημαρχείου Ιεράπετρας

Πέμπτη 25 Σεπτεμβρίου αίθουσα «Μελίνα Μερκούρη» του Δημαρχείου Ιεράπετρας Σίμος Αναγνωστάκης Ε.Ε.Δι.Π., Πανεπιστήμιο Κρήτης, Παιδαγωγικό Τμήμα Δημοτικής Εκπαίδευσης Πέμπτη 25 Σεπτεμβρίου αίθουσα «Μελίνα Μερκούρη» του Δημαρχείου Ιεράπετρας Η εκπαιδευτική ρομποτική : Στοχεύει

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

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

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT Φύλλο Εργασιών 2 ο Κινητήρες και Δομή Επανάληψης Όνομα Ημερομηνία ραστηριότητα 6 η : κίνηση μπροστά συγχρονισμένα Ξεκινήστε

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

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

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

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

Ενηµερώσεις λογισµικού Οδηγός χρήσης

Ενηµερώσεις λογισµικού Οδηγός χρήσης Ενηµερώσεις λογισµικού Οδηγός χρήσης Copyright 2009 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι σήµα κατατεθέν της Microsoft Corporation στις Ηνωµένες Πολιτείες. Οι πληροφορίες στο

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

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

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

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

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

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

Ενηµερώσεις λογισµικού Οδηγός χρήσης

Ενηµερώσεις λογισµικού Οδηγός χρήσης Ενηµερώσεις λογισµικού Οδηγός χρήσης Copyright 2009 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι κατοχυρωµένο εµπορικό σήµα της Microsoft Corporation στις Η.Π.Α. Οι πληροφορίες στο

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

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Copyright 2008 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι σήµα κατατεθέν της Microsoft Corporation στις Ηνωµένες Πολιτείες. Οι

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

Ο Οδηγός γρήγορης εκκίνησης

Ο Οδηγός γρήγορης εκκίνησης Ο Οδηγός γρήγορης εκκίνησης του Microsoft PowerPoint 2013 έχει διαφορετική εμφάνιση από προηγούμενες εκδόσεις. Γι αυτό το λόγο, δημιουργήσαμε αυτόν τον οδηγό για να ελαχιστοποιήσουμε την καμπύλη εκμάθησης.

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

Προγραμματισμός. Το περιβάλλον του scratch

Προγραμματισμός. Το περιβάλλον του scratch Προγραμματισμός Η τέχνη του να μπορούμε να γράφουμε τα δικά μας προγράμματα ονομάζεται προγραμματισμός. Γενικότερα ως προγραμματιστικό πρόβλημα θεωρούμε κάθε ζήτημα που τίθεται προς επίλυση, κάθε κατάσταση

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

ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT. ΚΕΦΑΛΑΙΟ 3ο. Προγραμματιστικό περιβάλλον ΝΧΤ-G

ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT. ΚΕΦΑΛΑΙΟ 3ο. Προγραμματιστικό περιβάλλον ΝΧΤ-G ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT ΚΕΦΑΛΑΙΟ 3ο Προγραμματιστικό περιβάλλον ΝΧΤ-G Το προγραμματιστικό περιβάλλον NXT-G Το προγραμματιστικό περιβάλλον NXT-G Το NXT-G είναι μια γλώσσα προγραμματισμού

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

Συσκευές δείκτη και πληκτρολόγιο Οδηγός χρήσης

Συσκευές δείκτη και πληκτρολόγιο Οδηγός χρήσης Συσκευές δείκτη και πληκτρολόγιο Οδηγός χρήσης Copyright 2007 Hewlett-Packard Development Company, L.P. Οι ονοµασίες Microsoft και Windows είναι εµπορικά σήµατα κατατεθέντα της εταιρίας Microsoft Corporation.

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

Σχολ.έτος Κεφάλαιο 5 ο Γνωριμία με το Λογισμικό του Υπολογιστή.

Σχολ.έτος Κεφάλαιο 5 ο Γνωριμία με το Λογισμικό του Υπολογιστή. Σχολ.έτος 2015-16 Κεφάλαιο 5 ο Γνωριμία με το Λογισμικό του Υπολογιστή. Διδακτικοί στόχοι Στο τέλος της διδακτικής ώρας οι μαθητές θα πρέπει : Να εξηγούν τις έννοιες πρόγραμμα, λογισμικό υπολογιστή. Να

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

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

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

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

Εισαγωγή. Περιεχόμενα της συσκευασίας. Τεχνικές Προδιαγραφές. Απαιτήσεις συστήματος. Ελληνική Έκδοση SWEEX.COM

Εισαγωγή. Περιεχόμενα της συσκευασίας. Τεχνικές Προδιαγραφές. Απαιτήσεις συστήματος. Ελληνική Έκδοση SWEEX.COM Εισαγωγή IP001 Sweex USB Internet Phone with Display Αρχικά, σας ευχαριστούμε που αγοράσατε το Sweex USB Internet Phone with Display. Με αυτό το τηλέφωνο εύκολης σύνδεσης μπορείτε να πραγματοποιήσετε κλήσεις

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

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

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

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

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Copyright 2008 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι σήµα κατατεθέν της Microsoft Corporation στις Ηνωµένες Πολιτείες. Οι

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

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

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

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

2. Κάντε κλικ στο παράθυρο όψης Top για να το ενεργοποιήσετε, ώστε να σχεδιάσετε το πάτωµα του δωµατίου.

2. Κάντε κλικ στο παράθυρο όψης Top για να το ενεργοποιήσετε, ώστε να σχεδιάσετε το πάτωµα του δωµατίου. Άσκηση 7 Σύνθετα Αντικείµενα Στόχος της άσκησης Στόχος της παρούσας άσκησης είναι η εξοικείωση µε τη δηµιουργία σύνθετων αντικειµένων που δηµιουργούνται από τον συνδυασµό δύο ή περισσότερων τρισδιάστατων

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

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Copyright 2008 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι σήµα κατατεθέν της Microsoft Corporation στις Ηνωµένες Πολιτείες. Οι

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

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

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

Σηµαντικές παρατηρήσεις σχετικά µε το backround:

Σηµαντικές παρατηρήσεις σχετικά µε το backround: ΠΕΡΙΓΡΑΦΗ ΛΕΙΤΟΥΡΓΙΑΣ SOFTWARE SAE10 Το software της αναγγελίας ορόφων είναι απαραίτητο για τη δηµιουργία των USB flash που θα χρησιµοποιηθούν στην πλακέτα SAE10. Προσφέρει ταχύτητα, ευελιξία και πολλές

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

Συσκευές κατάδειξης και πληκτρολόγιο

Συσκευές κατάδειξης και πληκτρολόγιο Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Copyright 2007 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι εµπορικό σήµα κατατεθέν της εταιρείας Microsoft Corporation στις Η.Π.Α.

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

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

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

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

ΕΚΠΑΙΔΕΥΤΙΚΉ ΡΟΜΠΟΤΙΚΉ & STEM. Δημήτριος Κράββαρης Καθηγητής Πληροφορικής Α/θμιας Εκπ/σης MSc. BSc. Πληροφορικής

ΕΚΠΑΙΔΕΥΤΙΚΉ ΡΟΜΠΟΤΙΚΉ & STEM. Δημήτριος Κράββαρης Καθηγητής Πληροφορικής Α/θμιας Εκπ/σης MSc. BSc. Πληροφορικής ΕΚΠΑΙΔΕΥΤΙΚΉ ΡΟΜΠΟΤΙΚΉ & STEM Δημήτριος Κράββαρης Καθηγητής Πληροφορικής Α/θμιας Εκπ/σης MSc. BSc. Πληροφορικής ΤΙ ΕΊΝΑΙ STEM; Ο όρος STEM [Science, Technology, Engineering and Mathematics] είναι το ακρωνύμιο

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

Δραστηριότητα 3: Ρυθμίσεις Oικιακής Ομάδας Τοπικού Δικτύου Η/Υ σε WINDOWS 7 & 8

Δραστηριότητα 3: Ρυθμίσεις Oικιακής Ομάδας Τοπικού Δικτύου Η/Υ σε WINDOWS 7 & 8 Δραστηριότητα 3: Ρυθμίσεις Oικιακής Ομάδας Τοπικού Δικτύου Η/Υ σε WINDOWS 7 & 8 Βιβλιογραφία: https://support.microsoft.com/el-gr/help/17145/windows-homegroup-from-start-to-finish ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ τι είναι

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

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

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

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

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Copyright 2007 Hewlett-Packard Development Company, L.P. Οι ονοµασίες Microsoft και Windows είναι εµπορικά σήµατα κατατεθέντα της εταιρίας Microsoft Corporation.

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

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

ΙΔΕΟΚΑΤΑΣΚΕΥΕΣ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΙΔΕΟΚΑΤΑΣΚΕΥΕΣ ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Συµφωνία Χρήσης Προγράµµατος Από τούς παραγωγούς αυτού του προγράµµατος και τη δικαιούχο εταιρία απαγορεύονται ρητά και αυστηρά τα παρακάτω: - Η πιστή αποµίµηση (µορφή

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

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Copyright 2009 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι σήµα κατατεθέν της Microsoft Corporation στις Ηνωµένες Πολιτείες. Οι

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

Οδηγός Εγκατάστασης και Εγχειρίδιο Χρήσης του λογισμικού. «Ταξίδι στο Χρόνο με Νόημα» Ιστορία Γ, Δ, Ε & ΣΤ Δημοτικού

Οδηγός Εγκατάστασης και Εγχειρίδιο Χρήσης του λογισμικού. «Ταξίδι στο Χρόνο με Νόημα» Ιστορία Γ, Δ, Ε & ΣΤ Δημοτικού Οδηγός Εγκατάστασης και Εγχειρίδιο Χρήσης του λογισμικού «Ταξίδι στο Χρόνο με Νόημα» Ιστορία Γ, Δ, Ε & ΣΤ Δημοτικού 2 ΤΑΞΙΔΙ ΣΤΟ ΧΡΟΝΟ ΜΕ ΝΟΗΜΑ Οδηγός Εγκατάστασης και Χρήσης του λογισμικού Συντελεστές:

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

Περιεχόµενα 1. Εγκατάσταση 2. Εισαγωγή 3. Σύνδεση 4. Ρυθµίσεις 2.1 Περιοχή εργασιών και πλοήγησης 2.2 Περιοχή απεικόνισης "Λεπτοµέρειες" 2.3 Περιοχή απεικόνισης "Στατιστικά" 4.1 Προφίλ 4.2 ίκτυο 4.2.1

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

Οδηγίες εγκατάστασης Δορυφορικής κάρτας Technisat

Οδηγίες εγκατάστασης Δορυφορικής κάρτας Technisat Οδηγίες εγκατάστασης Δορυφορικής κάρτας Technisat Απαιτήσεις συστήματος IBM συμβατό PC με επεξεργαστή Pentium III 700 MHz ή ανώτερο Τουλάχιστον 256 MB RAM Τουλάχιστον 30 MB ελεύθερος χώρος στον σκληρό

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

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης

Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Copyright 2008 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι σήµα κατατεθέν της Microsoft Corporation στις Ηνωµένες Πολιτείες. Οι

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

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

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

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

ΕΓΧΕΙΡΙΔΙΟ FORUS FSV. Ένδειξη καταγραφής με φωνή (VOR) Πλήκτρο μενού. και μνήμης που απομένει. Πλήκτρο εκκίνησης/παύσης.

ΕΓΧΕΙΡΙΔΙΟ FORUS FSV. Ένδειξη καταγραφής με φωνή (VOR) Πλήκτρο μενού. και μνήμης που απομένει. Πλήκτρο εκκίνησης/παύσης. ΕΓΧΕΙΡΙΔΙΟ FORUS FSV Ένδειξη καταγραφής Οθόνη LCD Πλήκτρο μενού Ένδειξη μνήμης που απομένει Πλήκτρο εκκίνησης/παύσης Πλήκτρο REW/FF Πλήκτρο Rec/Stop Ενσωματωμένο μικρόφωνο Είσοδος μικροφώνου Έξοδος ακουστικού

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

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Απόδοση των οδηγών αποθηκευτικών µέσων Μέσος χρόνος πρόσβασης (Average Access Time) Ταχύτητα µεταφοράς δεδοµένων (Data-Transfer

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

Ελληνικά. Εγχειρίδιο χρήσης του BT-02N

Ελληνικά. Εγχειρίδιο χρήσης του BT-02N Ελληνικά Εγχειρίδιο χρήσης του BT-02N 1 Ελληνικά Ευρετήριο 1. Επισκόπηση....3 2. Έναρξη χρήσης...5 3. Σύνδεση του κεφαλόφωνου Bluetooth.....6 4. Χρήση του κεφαλόφωνου Bluetooth... 9 5. Τεχνικές προδιαγραφές.

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

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07 Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή

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

MICROSOFT OFFICE 2003 MICROSOFT WORD 2003

MICROSOFT OFFICE 2003 MICROSOFT WORD 2003 MICROSOFT OFFICE 2003 MICROSOFT WORD 2003 Εµφάνιση των γραµµών εργαλείων "Βασική" και "Μορφοποίηση" σε δύο γραµµές Από προεπιλογή, οι γραµµές εργαλείων Βασική και Μορφοποίηση εµφανίζονται µε αγκύρωση (σταθεροποίηση:

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

MICROBOT SERVER MICROBOT MONITOR ΕΦΑΡΜΟΓΕΣ ΕΛΕΓΧΟΥ ΚΑΙ ΠΑΡΑΚΟΛΟΥΘΗΣΗΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ MICROBOT

MICROBOT SERVER MICROBOT MONITOR ΕΦΑΡΜΟΓΕΣ ΕΛΕΓΧΟΥ ΚΑΙ ΠΑΡΑΚΟΛΟΥΘΗΣΗΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ MICROBOT MICROBOT SERVER MICROBOT MONITOR ΕΦΑΡΜΟΓΕΣ ΕΛΕΓΧΟΥ ΚΑΙ ΠΑΡΑΚΟΛΟΥΘΗΣΗΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ MICROBOT Ο ΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΧΡΗΣΕΩΣ V1.01 www.mtec.gr 2 ΠΕΡΙΕΧΟΜΕΝΑ ΕΛΑΧΙΣΤΕΣ ΑΠΑΙΤΗΣΕΙΣ Η/Υ...4 ΠΕΡΙΓΡΑΦΗ ΕΦΑΡΜΟΓΩΝ...5

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

Profitstore.gr ΡΟΛΟΙ ΚΑΜΕΡΑ KJ402. Εισαγωγή: Περιγραφή Ψηφιακού Ρολογιού:

Profitstore.gr ΡΟΛΟΙ ΚΑΜΕΡΑ KJ402. Εισαγωγή: Περιγραφή Ψηφιακού Ρολογιού: Εισαγωγή: ΡΟΛΟΙ ΚΑΜΕΡΑ KJ402 Το ρολόι είναι ιδανικό για ασφάλεια και κρυφή παρακολούθηση. Μια κάμερα και ένας αναγνώστης καρτών Micro SD (η κάρτα Micro SD δεν περιλαμβάνεται) για εγγραφή είναι κρυμμένα

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

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας Περιεχόμενα Κεφάλαιο 1 Microsoft Excel 2010... 7 Κεφάλαιο 2 Η δομή ενός φύλλου εργασίας... 19 Κεφάλαιο 3 ημιουργία νέου βιβλίου εργασίας και καταχώριση δεδομένων... 24 Κεφάλαιο 4 Συμβουλές για την καταχώριση

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

Τα ηλεκτρονικά μέρη του ρομπότ Επιλογή των μονάδων εισόδου εξόδου ανάλογα το μοντέλο που θέλουμε να κατασκευάσουμε

Τα ηλεκτρονικά μέρη του ρομπότ Επιλογή των μονάδων εισόδου εξόδου ανάλογα το μοντέλο που θέλουμε να κατασκευάσουμε 1 Τα ηλεκτρονικά μέρη του ρομπότ Επιλογή των μονάδων εισόδου εξόδου ανάλογα το μοντέλο που θέλουμε να κατασκευάσουμε 2 Η υπολογιστική μονάδα Είσοδοι για τους κινητήρες Είσοδος για USB stick USB πόρτα για

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

B) Ετοιμάζοντας μια Παρουσίαση

B) Ετοιμάζοντας μια Παρουσίαση B) Ετοιμάζοντας μια Παρουσίαση Τι είναι μια παρουσίαση με τη βοήθεια ηλεκτρονικού υπολογιστή Ο υπολογιστής με την κατάλληλη εφαρμογή, μπορεί να μας βοηθήσει στη δημιουργία εντυπωσιακών εγγράφων, διαφανειών

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

Αναπαραγωγή με αρχεία ήχου

Αναπαραγωγή με αρχεία ήχου Αναπαραγωγή με αρχεία ήχου Ανοίγει η παρουσίαση και εμφανίζεται η διαφάνεια τίτλου, "Πειράματα με αρχεία ήχου". Άσκηση 1: Εισαγωγή ήχου για συνεχή αναπαραγωγή Βήμα 1: Εισαγωγή ήχου Στη διαφάνεια 1, με

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

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο FrontPage 2003 Πρακτικός Οδηγός Χρήσης Το FrontPage είναι ένα πρόγραμμα δημιουργίας ιστοσελίδων και δικτυακών τόπων που επιτρέπει το σχεδιασμό ιστοσελίδων μέσα από γραφικό περιβάλλον αλλά και την ταυτόχρονη

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

Συσκευές κατάδειξης και πληκτρολόγιο

Συσκευές κατάδειξης και πληκτρολόγιο Συσκευές κατάδειξης και πληκτρολόγιο Οδηγός χρήσης Copyright 2007 Hewlett-Packard Development Company, L.P. Η ονοµασία Windows είναι εµπορικό σήµα κατατεθέν της εταιρείας Microsoft Corporation στις Η.Π.Α.

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

Εκπαιδευτικό Λογισμικό Ανοικτού Κώδικα

Εκπαιδευτικό Λογισμικό Ανοικτού Κώδικα Εκπαιδευτικό Λογισμικό Ανοικτού Κώδικα Οι τίτλοι εκπαιδευτικού λογισμικού ανοικτού κώδικα που περιλαμβάνονται στον παρακάτω πίνακα εξελληνίστηκαν ή/και προσαρμόστηκαν στο ελληνικό εκπαιδευτικό σύστημα

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

Η έννοια της μεταβλητής και της λίστας με την βοήθεια του λογισμικού Scratch

Η έννοια της μεταβλητής και της λίστας με την βοήθεια του λογισμικού Scratch Η έννοια της μεταβλητής και της λίστας με την βοήθεια του λογισμικού Scratch Επαρκές Σενάριο Γνωστικό αντικείμενο: Πληροφορική Δημιουργός: Ουρανία Καλαντζή ΙΝΣΤΙΤΟΥΤΟ ΕΚΠΑΙΔΕΥΤΙΚΗΣ ΠΟΛΙΤΙΚΗΣ ΥΠΟΥΡΓΕΙΟ

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

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

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

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

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

ΧΗΜΕΙΑ ΜΕ ΝΟΗΜΑ ΠΕΡΙΕΧΟΜΕΝΑ Ο ΗΓΟΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΚΑΙ ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ Ο ΗΓΟΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΚΑΙ ΕΓΧΕΙΡΙ ΙΟ ΧΡΗΣΗΣ Το λογισµικό ΧΗΜΕΙΑ ΜΕ ΝΟΗΜΑ προτείνει ένα δίγλωσσο και διαθεµατικό µοντέλο διδασκαλίας της Χηµείας το οποίο απευθύνεται σε κωφούς µαθητές γυµνασίου και στους

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

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ MOODLE

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ MOODLE ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ MOODLE Η διαδικασία μεταφοράς του υλικού ενός μαθήματος από την πλατφόρμα Blackboard Vista στην πλατφόρμα Moodle σε βήματα είναι η ακόλουθη:

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

Ζωγραφική έναντι Κατασκευής

Ζωγραφική έναντι Κατασκευής GeoGebra4 Τετράδιο εργασίας 1 ο Ζωγραφική έναντι Κατασκευής Επίσημη μετάφραση των οδηγιών για τη χρήση του λογισμικού GeoGebra που αναπτύχθηκαν από το Πανεπιστήμιο του Limerick της Ιρλανδίας, κατόπιν αδείας

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

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

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

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

Lego WeDo - Αεροπλάνο

Lego WeDo - Αεροπλάνο Lego WeDo - Αεροπλάνο Το σετ κατασκευής Lego WeDo δίνει τη δυνατότητα στους μαθητές του δημοτικού (ηλικίες 7 11) να κατασκευάσουν απλά μοντέλα Lego και στη συνέχεια να τα συνδέσουν με έναν υπολογιστή για

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