Arduino σε παιδια Δημοτικου

Ξεκίνησε από παρις, 10 Μαΐου 2020, 02:12:31 ΜΜ

« προηγούμενο - επόμενο »

παρις

Καλησπερα.

Εχει κανει κανεις με επιτυχια σε αυτες τις ηλικιες;
Ασκησεις υπαρχουν;

geochatz

Μέχρι να απαντήσει κάποιος που να έχει δοκιμάσει το arduino σε δημοτικό, να προτείνω εναλλακτικά το microbit ως "ξαδερφάκι", που ταιριάζει καλύτερα σε μικρές ηλικίες.

evry

Παρουσιάζει πάντως ενδιαφέρον το γεγονός, μαθητές δημοτικού που πρωτεύουν σε διαγωνισμούς ρομποτικής, όταν έρχονται στο γυμνάσιο να μην μπορούν να γράψουν δυο γραμμές κώδικα σε μια απλή γλώσσα προγραμματισμού όπως η Python ή να μην μπορούν να λύσουν μόνοι τους πιο σύνθετα προβλήματα στο Scratch.

Επίσης ακόμα μεγαλύτερο ενδιαφέρον παρουσιάζει το γεγονός της πολύ μεγάλης συμμετοχής μαθητών σε διαγωνισμούς ρομποτικής σε σχέση με την πολύ μικρή έως και μηδαμινή συμμετοχή μαθητών στον διαγωνισμό πληροφορικής.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

dpa2006

Δεν έχω ακούσει κάτι τέτοιο προσωπικά,αλλά δεν το αποκλείω.
Δες τα εξής,αν δεν τα γνωρίζεις ήδη,


https://create.arduino.cc/projecthub/projects/tags/kids


https://www.arduino.cc/education

Computer science (abbreviated CS or CompSci) is the scientific and practical approach to computation and its applications. It is the systematic study of the feasibility, structure, expression, and mechanization of the methodical processes (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information, whether such information is encoded in bits and bytes in a computer memory or transcribed engines and protein structures in a human cell.source:http://en.wikipedia.org/wiki/Computer_science

bugman

Έτυχε να φτιάξω ένα πρόγραμμα σε Arduino. Η γλώσσα που χρησιμοποιεί είναι η c++. Στο εγχειρίδιο γράφει c/c++ αλλά είναι c++ η οποία περιέχει τη c στο συντακτικό της.
Αν κάνει κάποιος το λάθος να βάλει ένα = σε ισότητα, δεν θα βγεί λάθος. Θα το πάρει σαν εκχώρηση και η τιμή της εκχώρησης αν δεν είναι μηδενική θα σημαίνει true.
Αυτό είναι ένα ζήτημα κατά το debugging. Μιλάμε λοιπόν για μια c++ κανονική. Η διαφορά είναι ότι ο double ενώ υπάρχει  είναι ισοδύναμος με τον float.
Επίσης ένα πρόγραμμα σαράντα γραμμών επειδή χρησιμοποιεί αντικείμενα της c++ κρυμμένα πίσω από include αρχεία τύπου .h φτιάχνει τελικό πρόγραμμα 200kbytes.
Βεβαίως αν τα παιδιά μάθουν παίζοντας σιγά  σιγά τη c++ θα είναι φανταστικό! Η ανώτερη γλώσσα για μένα είναι η c++.
Το πρόγραμμα που έγραψα και ελέγχθηκε σε board ήταν για τον έλεγχο ενός ασανσέρ, ο εγκέφαλος κατά μία έννοια.

παρις

Παράθεση από: bugman στις 11 Μαΐου 2020, 06:05:12 ΜΜ
Έτυχε να φτιάξω ένα πρόγραμμα σε Arduino. Η γλώσσα που χρησιμοποιεί είναι η c++. Στο εγχειρίδιο γράφει c/c++ αλλά είναι c++ η οποία περιέχει τη c στο συντακτικό της.
Αν κάνει κάποιος το λάθος να βάλει ένα = σε ισότητα, δεν θα βγεί λάθος. Θα το πάρει σαν εκχώρηση και η τιμή της εκχώρησης αν δεν είναι μηδενική θα σημαίνει true.
Αυτό είναι ένα ζήτημα κατά το debugging. Μιλάμε λοιπόν για μια c++ κανονική. Η διαφορά είναι ότι ο double ενώ υπάρχει  είναι ισοδύναμος με τον float.
Επίσης ένα πρόγραμμα σαράντα γραμμών επειδή χρησιμοποιεί αντικείμενα της c++ κρυμμένα πίσω από include αρχεία τύπου .h φτιάχνει τελικό πρόγραμμα 200kbytes.
Βεβαίως αν τα παιδιά μάθουν παίζοντας σιγά  σιγά τη c++ θα είναι φανταστικό! Η ανώτερη γλώσσα για μένα είναι η c++.
Το πρόγραμμα που έγραψα και ελέγχθηκε σε board ήταν για τον έλεγχο ενός ασανσέρ, ο εγκέφαλος κατά μία έννοια.
Υπαρχει και το scratch σαν plan B, αν ζοριστουν με την C++. http://s4a.cat/ Yπαρχει αυτη η ειδικη εκδοση...φοβερο. γιατι η C/C++ ειναι το plan A παντα.
Αυτο που με κερδισε ειναι η πληθωρα εξοπλισμου και η πληθωρα εφαρμογων. Φυσικα δεν θα τα κανουμε ολα αυτα, απλα ανοιγεις μια τεραστια πυλη μαθησης που φτανει μεχρι και στο πανεπιστημιο (προγραμματισμος arduino-μικροελενκτη)
Ενας εφτιαξε μετρητη Geiger!
https://create.arduino.cc/projecthub/EDUcentrum/geiger-counter-with-arduino-uno-2cf621

H ερωτηση ειναι μπορω να το ξεκινησω απο φετος μεσω webex χωρις καθολου ρομποτ με simulator οπως καναμε στην σχολη; Να τρεξει καπου ο κωδικας θελω.
Η εφαρμογη arduino μπαινει ευκολα.

bugman

Η εφαρμογή τρέχει με Windows 7 ακόμα και 32bit  Δεν έχει απαιτήσεις σε μεγάλη μνήμη. Ο compiler σου λέει για λάθη αλλά η c++ είναι μυστήρια, γιατί αφήνει πχ ένα
if (A=B) .... να μην το δείχνει λάθος.
Επίσης πρέπει να ξέρει κανείς ποτέ βάζει volatile μια μεταβλητή.
Επίσης η χρήση των |, &, ~ να αποφεύγεται. Είναι οι λογικές πύλες ανά μπιτ. Ενώ αν έχουμε bool μεταβλητές ή και εκφράσεις, παίζουν τα ||,&& και !
Εννοείται ότι για ισότητα παίζει το ==
Επίσης τα πεζά κεφαλαία μετράνε. Το περιβάλλον του Arduino ψάχνει με ctrl+F και με ignore case, και κάνει αλλαγές και έτσι ίδια λέξη την φέρνει στα ίσα της με πεζά και κεφαλαία της επιλογής μας. Οπότε πρέπει να μην χρησιμοποιούνται αναγνωριστικά με διαφορά μόνο σε πεζά με κεφαλαία, αλλά με διακριτά ονόματα.
Void βάζουμε σε συναρτήσεις που χρησιμοποιούμε χωρίς επιστροφή τιμής.
Η επιστροφή τιμής γίνεται με την return. Μπορούμε να έχουμε όσες θέλουμε σε μια συνάρτηση αλλά η πρώτη που θα εκτελεστεί θα είναι και η επιστροφή από τη κλήση της συνάρτησης. Το void παίζει και στους pointers αλλά δεν είναι απαραίτητο να χρησιμοποιηθούν.
Το Arduino χρησιμοποιεί interrupts, οπότε δύο πράγματα μας ενδιαφέρουν, το πέρασμα συνάρτησης ως παράμετρος (call back) και το volatile, να σιγουρευτούμε ότι μια μεταβλητή μένει στην μνήμη για να αλλάξει από το interrupt). Επίσης ένα interupt πρέπει να είναι σύντομο, να μην έχει loop, καθυστέρηση,δηλαδή γιατί θα έρθει το επόμενο και θα το επικαλύψει, προκαλώντας προβλήματα.
Το συνηθισμένο μέρος του συντακτικού της γλώσσας ,c++ είναι μικρό και εύκολα κατανοητό από παιδιά δημοτικού.
Εξάσκηση χρειάζεται!
Ένας τρόπος κατανόησης των βιβλιοθηκών είναι η ανάγνωση των αρχείων .h και των  cpp. Αυτό για τον καθηγητή περισσότερα.
Οι συναρτήσεις της c++ που είναι μέρος αντικειμένου (η τύπου κατά μία έννοια) μπορούν να έχουν υπερφόρτωση δηλαδή να υπάρχουν σε εκδόσεις με διαφορετικές υπογραφές. Υπογραφή είναι ο αριθμός και το είδος των παραμέτρων. Αυτό θα το δούμε σε χρήση στους κατασκευαστές αντικειμένων. Αντικείμενα στο Arduino είναι τα τσιπάκια  που βάζουμε για ελεγκτές ή πόρτες εισόδων και εξόδων.
Αυτά τα ολίγα. Καλή προσπάθεια.


evry

Αν κατάλαβα καλά μιλάμε για προγραμματισμό Arduino με C στο δημοτικό.
Στις ηλικίες αυτές με τι επιτυχία μπορούμε να μιλήσουμε για τα βασικά του προγραμματισμού?
Δηλαδή μεταβλητές, μια έννοια που δεν γνωρίζουν και πολύ δύσκολα θα κατανοήσουν οι μαθητές του δημοτικού (η έννοια αυτή διδάσκεται στην Β Γυμνασίου).
Να μην μιλήσουμε για δομή επανάληψης, μετρητές, δομή επιλογής άρα λογικές συνθήκες κλπ.
Στο Λύκειο υπάρχουν μαθητές που δυσκολεύονται με αυτά και αυτό βλέπω και στο Γυμνάσιο.
Στο δημοτικό πως ακριβώς εισάγονται αυτές οι έννοιες? Ειδικά όταν έχουμε ένα μονόωρο μάθημα στο οποίο το τμήμα δεν σπάει.

ΥΓ. Το ότι οι μεταβλητές αναφέρονται στο βιβλίο της ΣΤ δημοτικού (και με τον τρόπο που αναφέρονται) δε σημαίνει ότι τα παιδιά έχουν καταλάβει περί τίνος πρόκειται σε καμία περίπτωση, γιατί στα μαθηματικά η κατανόηση της έννοιας της μεταβλητής περνάει από την κατανόηση της έννοιας της συνάρτησης.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

παρις

Παράθεση από: evry στις 11 Μαΐου 2020, 11:39:32 ΜΜ
Αν κατάλαβα καλά μιλάμε για προγραμματισμό Arduino με C στο δημοτικό.
Στις ηλικίες αυτές με τι επιτυχία μπορούμε να μιλήσουμε για τα βασικά του προγραμματισμού?
Δηλαδή μεταβλητές, μια έννοια που δεν γνωρίζουν και πολύ δύσκολα θα κατανοήσουν οι μαθητές του δημοτικού (η έννοια αυτή διδάσκεται στην Β Γυμνασίου).
Να μην μιλήσουμε για δομή επανάληψης, μετρητές, δομή επιλογής άρα λογικές συνθήκες κλπ.
Στο Λύκειο υπάρχουν μαθητές που δυσκολεύονται με αυτά και αυτό βλέπω και στο Γυμνάσιο.
Στο δημοτικό πως ακριβώς εισάγονται αυτές οι έννοιες? Ειδικά όταν έχουμε ένα μονόωρο μάθημα στο οποίο το τμήμα δεν σπάει.

ΥΓ. Το ότι οι μεταβλητές αναφέρονται στο βιβλίο της ΣΤ δημοτικού (και με τον τρόπο που αναφέρονται) δε σημαίνει ότι τα παιδιά έχουν καταλάβει περί τίνος πρόκειται σε καμία περίπτωση, γιατί στα μαθηματικά η κατανόηση της έννοιας της μεταβλητής περνάει από την κατανόηση της έννοιας της συνάρτησης.
Οι τυποι των μεταβλητων ειναι ευκολοι. Αν εξαιρεσω τους δεκαδικους που τους μαθαινουν στα μαθηματικα σε ποια ταξη; Εκει μονο θελει λιγα λεπτα παραπανω.
Με παραδειγματα απο την ζωη μπορεις να εξηγησεις τους
İnteger
Float
Char
Boolean.

To boolean ειναι το ποιο ευκολο απ ολα, και εκει θα πεταξεις και την γλωσσα μηχανης απο το 0 και 1.
Οι λογικες συνθηκες ευκολες και αυτες θα κανεις ενα πινακα.

Η απλη δομη επαναληψης ειναι κατανοητη οταν αρχιζεις και προσθετεις ισως μπλεχτουν.
Οι δομες επιλογης ισως τα δυσκολεψει.

Δεν τα εχω δοκιμασει στην πραξη δεν εχω arduino ρομποτακι, Πληρωσα κατι σεμιναρια για αρχη, ενα μικρο ποσο.
To scratch εχω κανει και θα ηθελα να δοκιμασω κατι αλλο γιατι κολλανε με την κινηση των χαρακτηρων και τα εφε και δεν μαθαινουν πολλα. Ασε που το scratch δεν ξερω αν στεκεται καθολου σαν προγραμματισμος. Φοβαμαι οτι μπερδευει...

παρις

#9
Παράθεσηη κατανόηση της έννοιας της μεταβλητής περνάει από την κατανόηση της έννοιας της συνάρτησης.
Με μπερδεψες μεχρι και μενα... ;D μπλεκεις πολυ τα μαθηματικα. Θα ριξω μια γρηγορη ματια στα μαθηματικα τους οταν ερθει η ωρα.
Ψευδοκωδικα ειχα κανει στην Τριτη Λυκειου και ουτε που ειδα το βιβλιο των μαθηματικων...πανε χρονια βεβαια...(αλλη κοτσανα ο ψευδοκωδικας ποιανου φαϊνη ιδεα ηταν;) :o

παρις

Παράθεση από: geochatz στις 10 Μαΐου 2020, 10:12:30 ΜΜ
Μέχρι να απαντήσει κάποιος που να έχει δοκιμάσει το arduino σε δημοτικό, να προτείνω εναλλακτικά το microbit ως "ξαδερφάκι", που ταιριάζει καλύτερα σε μικρές ηλικίες.
Τι διαφορα εχει αυτο; Ιδια τα βλεπω..
θα με ενδιεφερε να πεις 2 λογια που το ξερεις.

bugman

#11
1. Στη c++ λέμε bool για τις boolean
https://www.geeksforgeeks.org/comparison-boolean-data-type-c-java/?ref=rp
Δείτε τις διαφορές των bool της c++ με τις boolean της java.
2. Το φυσικό ανάλογο της μεταβλητής στον υπολογιστή είναι το ποτήρι. Με δύο ποτήρια το Α και Β δείχνουμε το τύπο και την ποσότητα. Πχ  στο Α βάζουμε τη μισή ποσότητα ποτηριού και στο Β ολόκληρη τη ποσότητα ενός ποτηριού. Η ποσότητα είναι αριθμός.  Η Α και η Β έχουν αριθμούς σχετικούς με την ποσότητα σε νερό. Αν θέλω να αλλάξω τιμές στα Α και Β χωρίς να με ενδιαφέρουν οι τιμές τους θα πάρω ένα άδειο τρίτο ποτήρι, έστω Γ και θα  αδειάσω το Α στο Γ, μετά το Β στο Α και τέλος το Γ στο Β. Το δείχνω κιόλας πάνω στην έδρα.
Μετά τους λέω ότι παρόμοιο τρόπο έχει και ο υπολογιστής αλλά αντί για άδειασμα έχει αντιγραφή. Η εκχώρηση τιμής είναι η αντιγραφή τιμής σε μεταβλητή. Τους εξηγώ ότι η τιμή 123 λέγεται σταθερή στο κώδικα γιατί όποτε την συναντάει ο επεξεργαστής την αντιγράφει ως έχει. Αντίθετα αν δει το Α αντιγράφει τη τιμή που έχει το Α εκείνη τη στιγμή. Επειδή μπορώ να αλλάξω τιμή στην Α αντιγράφοντας μια άλλη, η Α λέγεται μεταβλητή. Η Α έχει όπως το ποτήρι μια μέγιστη τιμή που μπορεί να πάρει.
Στη c αν προσθέσω ένα σε  μεταβλητή με μέγιστη τιμή θα μηδενίσει. Σε άλλες γλώσσες θα βγει λάθος. Αυτό δεν έχει να κάνει με τη μεταβλητή αλλά με το τρόπο λειτουργίας της κάθε γλώσσας.
Πώς γίνονται οι πράξεις. Το σημαντικό εδώ είναι να κατανοήσει ο μαθητής ότι στον επεξεργαστή υπάρχει ένα μόνο σημείο που γίνονται πράξεις, τον συσσωρευτή Το Α=Α+1 .κάνει τη γλώσσα να αντιγράψει την τιμή του Α στον συσσωρευτή να προσθέσει την τιμή 1 και τέλος να αντιγράψει την τιμή του στο Α. Η εκτέλεση γίνεται από την δεξιά έκφραση από το = και ακολουθεί η εκχώρηση στην αριστερή έκφραση.
Αυτά τα απλά, ας γίνουν και σε δύο μαθήματα..,μετά είναι τυφλοσούρτης.

evry

#12
Ο διδακτικός μετασχηματισμός με το ποτήρι είναι λανθασμένος επειδή:
1) Μπορείς να αναμείξεις δυο υγρά σε ένα ποτήρι, όμως δεν υπάρχει αντίστροφη λειτουργία για να επανέλθουν εκεί που ήταν
2) Η ιδέα για την συνύπαρξη δυο αντικειμένων σε μια μεταβλητή είναι υπεύθυνη για μια από τις γνωστές παρανοήσεις που έχουν οι μαθητές την παρανόηση ιστορικού μεταβλητής (history/stack variable misconception). Η παρανόηση αυτή δεν εμφανίζεται εκείνη τη στιγμή απαραίτητα αλλά όταν θα μιλήσουμε για πίνακες ή θα μπούμε στην επανάληψη. Οι μαθητές νομίζουν ότι μια μεταβλητή έχει καταχωρημένες όλες τις τιμές που έχει πάρει.

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

Επίσης ο σκοπός δεν είναι να μάθουμε στα παιδιά να χρησιμοποιούν μεταβλητές, αλλά να τους δείξουμε την αναγκαιότητά τους. Γιατί χρειάζονται δηλαδή.
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

bugman

#13
Το 1 είναι τραβηγμένο. Τα ποτήρια τα αναφέρεις με συγκεκριμένο τρόπο. Ένα είδος, νερό. Η ανάμειξη δεν περιλαμβάνεται στο παράδειγμα.
Το 2 με φέρνει προ εκπλήξεως. Υπάρχει προγραμματιστικά η απομνημόνευση τιμών σε μεταβλητή. Υπάρχει και σχετικό task στο rossettacode.org για να φτιάξει κανείς τέτοιες μεταβλητές.


Δείτε εδώ τις History Variables. Υπάρχει και κώδικας σε M2000 αλλά και σε άλλες γλώσσες όπως java και c#.
http://rosettacode.org/wiki/History_variables

Η χρήση του arduino περιέχει τη χρήση των μεταβλητών. Αν τα βάζαμε σε μια σειρά, πρώτα έρχεται η χρήση μεταβλητών, μετά δομών struct, και τέλος πινάκων (σπάνια να χρησιμοποιηθούν στα project).

evry

Παράθεση από: bugman στις 12 Μαΐου 2020, 01:38:28 ΜΜ
Το 1 είναι τραβηγμένο. Τα ποτήρια τα αναφέρεις με συγκεκριμένο τρόπο. Ένα είδος, νερό. Η ανάμειξη δεν περιλαμβάνεται στο παράδειγμα.
Δεν έχει σημασία τι αναφέρεις αλλά ότι χρησιμοποιείς έναν διδακτικό μετασχηματισμό ο οποίος ευθύνεται στη συνέχεια για παρανοήσεις. Αυτό που έχει σημασία είναι τι σκέψεις κάνουν τα παιδιά με βάση τον μετασχηματισμό που τους δίνεις. Δεν είναι παθητικοί δέκτες. Θα κάνουν τις δικές τους γενικεύσεις, για αυτό πρέπει το μοντέλο που τους προτείνεις να μην έχει τέτοια προβλήματα.

Παράθεση
Το 2 με φέρνει προ εκπλήξεως. Υπάρχει προγραμματιστικά η απομνημόνευση τιμών σε μεταβλητή. Υπάρχει και σχετικό task στο rossettacode.org για να φτιάξει κανείς τέτοιες μεταβλητές.

Δεν τα βγάζω από το μυαλό μου, όλα αυτά αναφέρονται στη βιβλιογραφία και σε έρευνες που γίνονται σε όλον τον κόσμο για τις παρανοήσεις και δυσκολίες των αρχάριων προγραμματιστών σε μεταβλητές και άλλες δομές.

What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr