Μορς με micro:bits και MakeCode

Η αποστολή μας τώρα μας είναι να φτιάξουμε μία συσκευή εκμπομπής/λήψης σημάτων ελληνικού κώδικα Morse.
Για την ολοκλήρωση, θα αξιοποιήσουμε τους πομποδέκτες bluetooth των micro:bits μας. (χρειαζόμαστε τουλάχιστον δύο micro:bits, για να μπορέσουμε να παίξουμε)



Χρησιμοποιούμε το MakeCode, τον online επεξεργαστή και μεταγλωττιστή της Microsoft, για να γράφουμε κώδικα με blocks.

Τα blocks μας βοηθούν στη ταχύτερη οπτικοποίηση απλών ρουτινών και συμβάντων.



Εμείς γράψαμε τον κώδικά μας με τα blocks. Μπορείτε απλά να κατεβάσετε το αρχείο HEX μας και να το εισάγετε στο MakeCode ("import" ή drag-drop οπουδήποτε στο MakeCode). Το πρόγραμμα θα μεταφραστεί σε blocks.



Έτσι παίρνουμε τα αρχικά blocks και μπορούμε ταυτόχρονα να τεστάρουμε και τη λειτουργία του προγράμματος :



Πώς λειτουργεί ;
Προσεγγίζοντας λίγο τον παραδοσιακό τηλέγραφο, χρησιμοποιούμε απλά ένα κουμπί (το Α) το οποίο αν πατήσουμε βραχέως, καταγράφεται ως τελεία και αν το κρατήσουμε πατημένο, καταγράφεται ως παύλα. Έτσι, π.χ. γράφουμε  . -  για το γράμμα Α.
Καταχωρούμε το γράμμα Α στο μήνυμα που θα στείλουμε, πατώντας βραχέως το κουμπί Β.
(τα LEDs μας δείχνουν το γράμμα Α, καθώς ταυτόχρονα γίνεται αποκωδικοποίηση των σημάτων)


Πώς το καταφέρνουμε αυτό ;

Χρησιμοποιούμε μια ιδέα της TinkerAcademy, για να ορίσουμε ότι πάτημα του Α για χρόνο μικρότερο των 250 msec (τυπικό single click) είναι τελεία, ενώ κράτημα του κουμπιού Α για χρόνο μεγαλύτερο από 500 msec είναι παύλα :

  

Εκτός από τον έλεγχο του συμβάντος "on button A pressed", χρειάζεται να έχουμε βρόγχους χειρισμού των κουμπιών Α και Β, που μετράνε τον χρόνο πατήματος εκ διαφοράς (χρόνος που τρέχει η εφαρμογή - χρονική στιγμή που πατήθηκε το κουμπί = χρόνος διάρκειας πατήματος), όπως βλέπετε τα πάνω δεξιά blocks, που ενημερώνουν τη μεταβλητή duration.
Τα πάνω αριστερά blocks με τη σειρά τους, ενεργοποιούνται στο συμβάν του πατήματος του Α και ξεχωρίζουν αν πρόκειται για τελεία ή παύλα, ανάλογα με την τιμή της duration.

Για να γράψουμε λοιπόν "ΕΛΑ" ( . / .-.. / .- / ), θα χρειαστεί μετά από κάθε γράμμα να πατάμε το Β για να καταγράφεται και έτσι θα πατήσουμε διαδοχικά :
βραχύ Α , Β , βραχύ Α , μακρύ Α , βραχύ Α , βραχύ Α , Β , βραχύ Α , μακρύ Α , Β

Παρακάτω δίνονται τα blocks που ελέγχουν το συμβάν του πατήματος του Β. Βλέπετε ότι αναγνωρίζεται ο κώδικας Μορς που έχει πατηθεί για το τρέχον γράμμα, με σειρά συνθηκών if-then, το γράμμα παρουσιάζεται στα LEDs και τέλος ενημερώνεται η μεταβλητή που θα φέρει το τελικό μήνυμα (sendcode).
Επίσης, στο τέλος του block υπάρχει κώδικας για το συμβάν κρατημένου πατήματος του Β, που μας ξαναδείχνει το μήνυμα που έλαβε η συσκευή μας.


Ο κώδικας για την αποστολή του μηνύματός μας (μεταβλητή sendcode) σε άλλο micro:bit μέσω bluetooth, είναι ο παρακάτω και εκτελείται με ταυτόχρονο πάτημα των κουμπιών Α και Β :

  

To block ελέγχου του συμβάντος λήψης του μηνύματος φαίνεται παρακάτω :

   

Ανακεφαλαιώνοντας, με το Α γράφουμε κώδικα Μορς (βραχύ/μακρύ πάτημα). Μετά από κάθε γράμμα, πατάμε το Β. Για να στείλουμε το μήνυμά μας (μέχρι 19 χαρακτήρες) πατάμε Α+Β μαζί. Για να ξαναδιαβάσουμε το μήνυμα που λάβαμε, κρατάμε το Β πατημένο για λίγο.

  

Θα διαπιστώσετε ότι τα micro:bits στέλνουν τα μηνύματά τους αρκετά μακριά !

Αντιστοίχιση ελληνικών γραμμάτων με τη κωδικοποίηση ASCII του micro:bit :
Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω
A B G D E Z H 8 I K L M N 3 O P R S T Y F X U W

Καλή διασκέδαση !

STEAMUp! )