Τι θα κάνουμε σήμερα;
Σήμερα θα φτιάξουμε ένα ψηφιακό κοντέρ για το ρομπότ R2.
Θα μάθουμε πώς:
- μετράμε πόσα εκατοστά έχει διανύσει το ρομπότ,
- υπολογίζουμε την ταχύτητά του (σε cm/s),
- ελέγχουμε αν οι υπολογισμοί μας είναι σωστοί, βλέποντας τι εμφανίζεται στο Serial Monitor.
Για τις δοκιμές μας, το ρομπότ θα είναι στον αέρα (κρατημένο ή σε βάση), ώστε να είναι συνδεδεμένο με καλώδιο USB στον υπολογιστή.
Τι θα μάθουμε;
Μετά το εργαστήριο θα μπορείς να εξηγήσεις:
- Πώς ένας μαγνήτης και ένας αισθητήρας μπορούν να μας πουν πόσο γύρισε μια ρόδα
- Πώς από τις περιστροφές βρίσκουμε απόσταση
- Πώς μετράμε χρόνο χωρίς να “παγώνει” το πρόγραμμα
- Γιατί το ρομπότ χρειάζεται δύο ρόδες για σωστό υπολογισμό
- Πώς ελέγχουμε τα αποτελέσματα στον υπολογιστή
Υλικά
- Ρομπότ R2
- 2 μαγνήτες (ένας σε κάθε ρόδα)
- 2 μαγνητικούς αισθητήρες (ένας για κάθε ρόδα)
- Υπολογιστής με Mind+
- Καλώδιο USB
Σημαντική πληροφορία
Η περίμετρος κάθε ρόδας είναι:
✅ 20 εκατοστά
Άρα:
- 1 πλήρης περιστροφή ρόδας = 20 cm
- 1 πέρασμα μαγνήτη μπροστά από τον αισθητήρα = 20 cm
Η βασική ιδέα
Το ρομπότ έχει δύο ρόδες:
- μία αριστερά
- μία δεξιά
Όταν πηγαίνει ευθεία, οι ρόδες γυρίζουν σχεδόν το ίδιο. Όταν στρίβει, η μία ρόδα γυρίζει λίγο περισσότερο και η άλλη λίγο λιγότερο. Για να βρούμε πόσο προχώρησε το ρομπότ συνολικά, κάνουμε κάτι πολύ απλό και δίκαιο:
Παίρνουμε τον μέσο όρο της απόστασης των δύο τροχών.
Δηλαδή:
Βήμα 1: Μετράμε πόσες φορές γύρισε κάθε ρόδα
Δημιουργούμε δύο μεταβλητές – μετρητές:
rotationL→ πόσες φορές πέρασε ο μαγνήτης από την αριστερή ρόδαrotationR→ πόσες φορές πέρασε ο μαγνήτης από τη δεξιά ρόδα

Κάθε φορά που ο αισθητήρας “βλέπει” τον μαγνήτη θα πρέπει να αυξάνουμε τον αντίστοιχο μετρητή κατά 1. Όταν ο αισθητήρας δεν βλέπει τον μαγνήτη επιστρέφει την τιμή μηδέν (0) ενώ όταν τον βλέπει επιστρέφει την τιμή ένα (1).
Πολύ σημαντική διευκρίνιση: γιατί δεν μετράμε απλώς “αν ο αισθητήρας είναι 1”
Το πρόγραμμα τρέχει πάρα πολύ γρήγορα. Το “για πάντα” δεν εκτελείται μία φορά το δευτερόλεπτο, αλλά εκατοντάδες ή και χιλιάδες φορές. Όταν λοιπόν ο μαγνήτης περνάει μπροστά από τον αισθητήρα:
- δεν εμφανίζεται για μία μόνο στιγμή,
- αλλά για λίγο χρόνο, όσο κυλάει η ρόδα.
Αν το πρόγραμμα ελέγχει:
«Ο αισθητήρας είναι 1;»
τότε:
- θα τον “δει” πολλές φορές,
- και θα νομίσει ότι ο μαγνήτης πέρασε πολλές φορές,
- ενώ στην πραγματικότητα πέρασε μία φορά.

Το σωστό κόλπο: μετράμε την αλλαγή, όχι την κατάσταση
Θέλουμε να μετράμε μόνο τη στιγμή που ο μαγνήτης εμφανίζεται, όχι όλο το διάστημα που φαίνεται. Γι’ αυτό κρατάμε τη προηγούμενη κατάσταση του αισθητήρα. Θα χρειαστούμε λοιπόν άλλες 2 μεταβλητές:
beforeL(0 ή 1 – τι έβλεπε πριν ο αριστερός αισθητήρας)beforeR(0 ή 1 – τι έβλεπε πριν ο δεξιός αισθητήρας)

Λογική (για κάθε ρόδα):
Αν τώρα ο αισθητήρας είναι 1
ΚΑΙ πριν ήταν 0
ΤΟΤΕ μετράμε 1 περιστροφή
Δηλαδή:
- μετράμε μόνο το 0 → 1
- όχι όσο μένει στο 1
Αυτό σημαίνει:
«Μετράμε το πέρασμα, όχι τη διάρκεια.»

Βήμα 2: Μετράμε χρόνο χωρίς wait ⏱️
Δεν χρησιμοποιούμε wait ή delay, γιατί:
- το πρόγραμμα σταματά,
- δεν μετρά αισθητήρες,
- χάνει παλμούς.
Αντί γι’ αυτό, χρησιμοποιούμε ένα ρολόι.
Μεταβλητές:
lastTime→ πότε κάναμε τελευταία φορά υπολογισμό
Ελέγχουμε συνέχεια:
«Πέρασαν 6000 ms (δηλαδή 6 δευτερόλεπτa) από την τελευταία φορά;»
Αν ναι → κάνουμε υπολογισμούς.

Βήμα 3: Υπολογισμός απόστασης
Κάθε 6 δευτερόλεπτa:
- Η απόσταση της αριστερής ρόδας είναι οι περιστροφές που έγιναν επί 20 εκατοστά
- Το ίδιο και για την δεξιά
- Άρα σε αυτό το δευτερόλεπτο το ρομπότ προχώρησε
distance = (rotationL*20 + rotationR*20) / 2 - Άρα η συνολική απόσταση που έχει προχωρήσει είναι
totalDistance = totalDistance + distance - Μηδενίζουμε
roationLκαιrotationR
Έτσι:
- υπολογίζουμε πόσο προχώρησε το ρομπότ μέσα σε αυτά τα 6 δευτερόλεπτα
- και το προσθέτουμε στο “κοντέρ”.
Βήμα 4: Υπολογισμός ταχύτητας
Αφού το distance είναι εκατοστά σε 6 δευτερόλεπτa, τότε:
✅ speed = distance/6 (cm/s)
Έλεγχος με Serial Monitor (δοκιμές)
Για να ελέγξουμε αν όλα δουλεύουν σωστά:
- Συνδέουμε το R2 με καλώδιο USB στον υπολογιστή
- Ανοίγουμε το Serial Monitor
- Κάθε 6 δευτερόλεπτa τυπώνουμε:
roationLrotationRdistancetotalDistancespeed
και δεν ξεχνάμε να ορίσουμε ότι η lastTime (πότε ελέγξαμε τελευταία φορά) είναι τώρα!
Δοκιμή 1: Γύρνα τη ρόδα με το χέρι
- 1 περιστροφή → +20 cm
- 5 περιστροφές → +100 cm
Δοκιμή 2: Διαφορά ροδών
Γύρνα:
- μόνο την αριστερή ρόδα → δες ότι ο μέσος όρος λειτουργεί
- μόνο τη δεξιά → ίδιο αποτέλεσμα
Τι καταφέραμε
✔ Μετρήσαμε απόσταση χωρίς χάρακες
✔ Υπολογίσαμε ταχύτητα χωρίς χρονόμετρο
✔ Μάθαμε να δουλεύουμε με χρόνο χωρίς pause
✔ Χρησιμοποιήσαμε δύο ρόδες για πιο σωστά αποτελέσματα





