🏁 F1 Start Lights & Reaction Timer με 2 micro:bit

🏁 F1 Start Lights & Reaction Timer με 2 micro:bit

Τι θα φτιάξουμε

Θα φτιάξουμε ένα σύστημα σαν την εκκίνηση της Formula 1:

  • micro:bit TIMER: ανάβει τα φώτα εκκίνησης (start lights) και μετρά τον χρόνο αντίδρασης.
  • micro:bit CONTROLLER: είναι το “κουμπί του οδηγού” (πατάμε όταν δούμε GO).

Κάθε ομάδα δουλεύει με 2 υπολογιστές (ένας για κάθε micro:bit) και 2 micro:bit.


Γιατί το κάνουμε

  1. Για να εξασκηθούμε στον χρόνο αντίδρασης (reaction time), όπως ένας οδηγός αγώνων.
  2. Για να μάθουμε προγραμματισμό με μικρά βήματα (tasks), όπως δουλεύει ένας αρχάριος προγραμματιστής:
    • πρώτα κάνουμε κάτι να “φαίνεται”
    • μετά εμφανίζεται μια ανάγκη (“πώς θα μιλήσουν τα micro:bit;”)
    • μετά προσθέτουμε νέα blocks (radio, μεταβλητές, έλεγχοι)

Πώς λειτουργούν τα φώτα εκκίνησης στην F1

  • Στην F1 ανάβουν σταδιακά κόκκινα φώτα.
  • Όταν ανάψουν όλα, μετά από τυχαίο χρονικό διάστημα, σβήνουν ξαφνικά.
  • Το σβήσιμο είναι το GO και τότε ο οδηγός πρέπει να αντιδράσει όσο πιο γρήγορα γίνεται.

Ζέσταμα πριν τα micro:bit

Πριν ξεκινήσουμε, δοκιμάζουμε όλοι για 2–3 λεπτά την εφαρμογή: https://f1-start.jakearchibald.com

✅ Στόχος: να δούμε τι σημαίνει “τυχαία αναμονή” και “αντίδραση”.


Υλικά και ρόλοι στην ομάδα

  • 2 micro:bit
  • 2 καλώδια USB
  • 2 υπολογιστές
  • MakeCode Microbit ανοικτό και στους δύο υπολογιστές

Ρόλοι

Σε κάθε ομάδα θα δημιουργήσουμε 2 προγράμματα. Ένα θα είναι για το χρονόμετρο και ένα για τον controller, δηλαδή το πλήκτρο που θα πατάει ο οδηγός.

  • Υπολογιστής 1 → TIMER micro:bit
  • Υπολογιστής 2 → CONTROLLER micro:bit

Ρυθμίσεις ομάδας

Κάθε ομάδα έχει δικό της radio group για να μη μπερδεύονται τα σήματα:

  • Ομάδα 1 → group 1
  • Ομάδα 2 → group 2
  • Ομάδα 3 → group 3

✅ Οδηγός βήμα–βήμα

Βήμα 1 — Προετοιμασία (και στα 2 micro:bit)

Καθαρίζουμε τις οθόνες κατά την έναρξη

TIMER micro:bit

CONTROLLER micro:bit

Γιατί: Θέλουμε πάντα να ξεκινάει “καθαρά” η οθόνη.


Βήμα 2 — Φτιάχνουμε τα start lights μόνο στο TIMER

TIMER micro:bit

Όταν πατηθεί το κουμπί A

  1. καθάρισε οθόνη
  2. παίξε νότα Ντο (Middle C) στο παρασκήνιο
  3. εμφάνισε LEDs → κλικάρουμε τα 3 πάνω LED της 1ης στήλης
  4. παύση 1000 ms

Μετά κάνουμε το ίδιο για τη 2η στήλη, αλλά στο “εμφάνισε LEDs” βάζουμε και την 1η και τη 2η στήλη, ώστε να μείνουν αναμμένα όλα μέχρι τώρα. Συνεχίζουμε μέχρι να ανάψουν και οι 5 στήλες (πάντα 3 LED πάνω σε κάθε στήλη).

Συνεχίστε το πρόγραμμα μέχρι να ανάψει και η τελευταία στήλη!

Γιατί: Το “εμφάνισε LEDs” είναι σαν να ξαναζωγραφίζουμε όλη την οθόνη. Άρα κάθε φορά πρέπει να “ξαναβάζουμε” και τα προηγούμενα φωτάκια.

Δοκιμή: Πατάμε Α και βλέπουμε 5 βήματα (κάθε 1 δευτερόλεπτο) με ήχο.


Βήμα 3 — Τυχαία αναμονή και GO (TIMER)

TIMER micro:bit

Στο τέλος του Task 1, αφού ανάψουν όλα θα περιμένουμε για έναν τυχαίο χρόνο μεταξύ 0,2 και 3 δευτερόλεπτα ή αλλιώς 200 ως 3000 χιλιοδευτερόλεπτα (ms). Μετά θα σβήσουμε τα φώτα και θα παίξουμε και μια πιο λεπτή νότα.

Έτσι θα τελειώνει το σενάριο στο όταν πατηθεί το πλήκτρο Α

Γιατί: Στην F1 το σβήσιμο δεν γίνεται ποτέ στην ίδια στιγμή. Έτσι δοκιμάζουμε πραγματικά αντανακλαστικά.

Δοκιμή: Πατάμε Α πολλές φορές. Θα δούμε ότι το GO δεν έρχεται πάντα το ίδιο γρήγορα.


Βήμα 4 — Βάζουμε radio, ο TIMER στέλνει “Ready”

TIMER micro:bit

Στην έναρξη ορίζουμε την ομάδα σε 1,2 ή 3 ανάλογα με το ποια ομάδα είμαστε.

Όταν στο χρονόμετρο πατηθεί το Α και αρχίζει η αντίστροφη μέτρηση, στέλνουμε μήνυμα στο άλλο Microbit (τον οδηγό) ότι είμαστε Ready.

Γιατί: Θέλουμε να ειδοποιήσουμε το δεύτερο micro:bit ότι “ξεκινάει γύρος”.


Βήμα 5 — Ο CONTROLLER δείχνει ότι “άκουσε” και εμφανίζει R

CONTROLLER micro:bit

Και σε αυτό το Microbit βάζουμε τον ίδιο αριθμό ομάδας με αυτόν που βάλαμε στο χρονόμετρο μας.

Όταν το Microbit του οδηγού λάβει το μήνυμα Ready τότε εμφανίζει ένα R στην οθόνη.

Γιατί: Το “R” σημαίνει “Ready”. Τώρα ο οδηγός ξέρει ότι ξεκινάει προσπάθεια.

Δοκιμή: Πατάμε Α στο TIMER → βλέπουμε R στο CONTROLLER.


Βήμα 6 — Ο οδηγός στέλνει “GO” (CONTROLLER)

CONTROLLER micro:bit

Δημιουργούμε μεταβλητή με το όνομα Κατάσταση. Θέλουμε να ελέγξουμε αν μπορούμε να πατήσουμε το πλήκτρο της εκκίνησης. Αν η κατάσταση είναι 0 δεν θα μπορούμε και αν είναι 1 θα μπορούμε.

Στην εκκίνηση θα κάνουμε την κατάσταση 0 γιατί ακόμα δεν έχει ξεκινήσει η αντίστροφη μέτρηση και δεν έχει νόημα να πατήσει ο οδηγός το πλήκτρο.

Τώρα όταν λαμβάνουμε το Ready εκτός από το ότι ανάβουμε το γράμμα R στην οθόνη, αλλάζουμε και την κατάσταση σε 1 γιατί πλέον θα μπορεί να πατήσει το πλήκτρο Β ο οδηγός.

Όταν πατηθεί το κουμπί B θα ελέγχουμε αν η κατάσταση είναι 1 και τότε θα εμφανίζουμε το γράμμα G, θα στέλνουμε το μήνυμα Go στο Microbit χρονόμετρο και θα ορίζουμε πάλι την κατάσταση σε 0 ώστε να μην μπορούμε να ξαναπατήσουμε το πλήκτρο Β.

Γιατί: Θέλουμε το κουμπί Β να “δουλεύει” μόνο όταν είμαστε σε γύρο (όταν κατάσταση=1).


Βήμα 7 — Το TIMER θυμάται πότε έγινε το GO

TIMER micro:bit

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

Στην έναρξη μηδενίζουμε τον χρόνο αρχής.

Το ίδιο κάνουμε και κάθε φορά που ξεκινάει η αντίστροφη μέτρηση πατώντας το πλήκτρο Α.

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


Task 7 — Το TIMER λαμβάνει “GO” και υπολογίζει τον χρόνο αντίδρασης

TIMER micro:bit

Όταν λάβουμε το Go από τον οδηγό κοιτάμε πάλι το χρονόμετρο και αποθηκεύουμε τον χρόνο εκτέλεσης αυτή τη φορά στο χρόνο go. Μετά κάνουμε μια σημαντική ερώτηση. Είναι ο χρόνος αρχής μηδέν; Αν είναι αυτό σημαίνει ότι ακόμα δεν τελείωσε η αντίστροφη μέτρηση άρα ο οδηγός πάτησε νωρίς το πλήκτρο. Σε αυτή την περίπτωση εμφανίζουμε ένα μεγάλο Χ στην οθόνη και το αναβοσβήνουμε 4 φορές.

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


✅ Τελική δοκιμή

  1. Πατάμε A στο TIMER
  2. Βλέπουμε R στο CONTROLLER
  3. Περιμένουμε να σβήσουν τα φώτα (GO)
  4. Πατάμε B στο CONTROLLER
  5. Το TIMER δείχνει τον χρόνο αντίδρασης σε ms

Σημείωση για το radio

Το σήμα radio κάνει ένα “μικρό ταξίδι” στον αέρα. Άρα η μέτρηση περιλαμβάνει και λίγα ms καθυστέρηση.
Όμως είναι ίδια για όλους όταν παίζουν στις ίδιες συνθήκες και το σύστημα είναι δίκαιο για παιχνίδι/σύγκριση.

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γιατί δεν ξεκινάτε τη συζήτηση;

Αφήστε μια απάντηση