Τι θα κάνουμε σήμερα;
Σήμερα θα προγραμματίσουμε το ρομπότ R2 ώστε να ακολουθεί μια μαύρη γραμμή πάνω σε άσπρο (ή ανοιχτόχρωμο) πάτωμα. Το R2 έχει μπροστά, από κάτω, έναν αισθητήρα γραμμής με 3 μικρούς αισθητήρες στη σειρά:
- Αριστερός
- Μεσαίος
- Δεξιός
Ο μεσαίος είναι ακριβώς στη μέση του ρομπότ, και αυτό μας βοηθάει να φτιάξουμε έναν πολύ απλό και έξυπνο κανόνα:
✅ Αν ο μεσαίος πατάει τη μαύρη γραμμή, τότε είμαστε μια χαρά στο κέντρο → πάμε ευθεία
↩️ Αν πατάει μόνο ο αριστερός, τότε σημαίνει ότι το ρομπότ έχει φύγει προς τα δεξιά → στρίβουμε αριστερά
↪️ Αν πατάει μόνο ο δεξιός, τότε σημαίνει ότι το ρομπότ έχει φύγει προς τα αριστερά → στρίβουμε δεξιά
Τι θα μάθουμε;
Μετά το εργαστήριο θα μπορείς να εξηγήσεις:
- Πώς “βλέπουν” τη γραμμή οι αισθητήρες (true/false)
- Τι σημαίνει ότι ένα ρομπότ πάει ευθεία με δύο κινητήρες
- Τι σημαίνει ότι ένα ρομπότ στρίβει δεξιά ή αριστερά
- Πώς γράφουμε ένα πρόγραμμα τύπου “αν… αλλιώς…” που παίρνει αποφάσεις
Υλικά
- Ρομπότ R2
- Mind+ (με το πρόσθετο / addon του R2)
- Πίστα ή αυτοσχέδια διαδρομή με μαύρη ταινία πάνω σε ανοιχτόχρωμο δάπεδο/χαρτόνι
📌 Σημείωση: Η μαύρη γραμμή πρέπει να έχει αρκετό πλάτος ώστε να “προλαβαίνουν” να τη βλέπουν οι αισθητήρες.
Πώς δουλεύει ο αισθητήρας γραμμής;
Ο αισθητήρας γραμμής του R2 χρησιμοποιεί υπέρυθρο φως (IR).
- Σε άσπρη επιφάνεια το φως αντανακλάται πολύ → ο αισθητήρας “βλέπει” άσπρο
- Σε μαύρη επιφάνεια το φως απορροφάται περισσότερο → ο αισθητήρας “βλέπει” μαύρο


Στο Mind+ έχουμε ένα έτοιμο μπλοκ:
“Δεξιός / Κεντρικός / Αριστερός αισθητήρας γραμμής πατάει μαύρη γραμμή;”
και μας δίνει true ή false.
Πώς κινείται το R2 (δύο κινητήρες)
Το R2 έχει δύο κινητήρες:
- Αριστερός κινητήρας
- Δεξιός κινητήρας
Στο Mind+ έχουμε block:
“Δεξιός/Αριστερός κινητήρας κατεύθυνση ρολογιού/αντίστροφη και ταχύτητα 0–255”
Πότε πάει ευθεία;
Όταν οι δύο κινητήρες δουλεύουν στην ίδια κατεύθυνση και με την ίδια ταχύτητα.
Παράδειγμα:
- Αριστερός: 160
- Δεξιός: 160
➡️ ευθεία
Πότε στρίβει;
Στρίβουμε αλλάζοντας τις ταχύτητες:
- Αν θέλω να στρίψω αριστερά:
- μειώνω την ταχύτητα του αριστερού (ή τον σταματάω)
- και κρατάω τον δεξιό πιο γρήγορο
- Αν θέλω να στρίψω δεξιά:
- μειώνω την ταχύτητα του δεξιού
- και κρατάω τον αριστερό πιο γρήγορο
Παράδειγμα στροφής αριστερά:
- Αριστερός: 80
- Δεξιός: 170
↩️ στρίβει αριστερά
Παράδειγμα στροφής δεξιά:
- Αριστερός: 170
- Δεξιός: 80
↪️ στρίβει δεξιά
Πριν ξεκινήσουμε: γνωρίζουμε τους κινητήρες μας ⚙️👀
Πριν βάλουμε το ρομπότ να ακολουθεί γραμμή, είναι πολύ σημαντικό να γνωρίσουμε πώς κινούνται οι δύο κινητήρες του R2. Πότε γυρνάνε μπροστά; Όταν γυρνάν με την κατεύθυνση του ρολογιού ή με την αντίστροφη;
👉 Θα το βρούμε με δοκιμή.
Γράψε ένα πολύ απλό πρόγραμμα στο Mind+:
- Αριστερός κινητήρας
- κατεύθυνση: ρολογιού
- ταχύτητα: 150
- Δεξιός κινητήρας
- κατεύθυνση: ρολογιού
- ταχύτητα: 150
📌 Μην χρησιμοποιήσεις αισθητήρες ακόμα. Μόνο κίνηση.
Κράτησε το ρομπότ στο χέρι σου, στον αέρα (όχι στο πάτωμα). Παρατήρησε προσεκτικά:
- Γυρνάνε και οι δύο ρόδες προς την ίδια κατεύθυνση; Πάνε μπροστά ή πίσω;
👉 Σημείωσε τις σωστές ρυθμίσεις.
Η βασική ιδέα του αλγορίθμου (ο “κανόνας” μας)
Θα χρησιμοποιήσουμε το πιο απλό σύστημα:
- Αν ο μεσαίος αισθητήρας πατάει μαύρο → ευθεία
- Αλλιώς αν ο αριστερός πατάει μαύρο → στρίψε αριστερά
- Αλλιώς αν ο δεξιός πατάει μαύρο → στρίψε δεξιά
- Αλλιώς (κανένας δεν βλέπει μαύρο) → κάνε μια μικρή “αναζήτηση” (π.χ. αργή στροφή) για να ξαναβρείς τη γραμμή
📌 Αυτό είναι σαν παιχνίδι:
- “Αν είμαι πάνω στη γραμμή, συνεχίζω!”
- “Αν έχασα τη γραμμή, ψάχνω να τη βρω.”
Βήμα 1: Φτιάχνουμε δύο μεταβλητές ταχύτητας
Για να κάνουμε εύκολες αλλαγές, φτιάχνουμε:
speedStraight(π.χ. 150)speedTurn(π.χ. 20)
Βήμα 2: Γράφουμε το πρόγραμμα “για πάντα”
Το πρόγραμμα ακολουθεί την ίδια λογική συνεχώς:
Περίπτωση Α: Μεσαίος = true (βλέπει μαύρο)
➡️ Ευθεία
- Αριστερός κινητήρας:
speedStraight - Δεξιός κινητήρας:
speedStraight
Περίπτωση Β: Αριστερός = true
↩️ Στροφή αριστερά
- Αριστερός κινητήρας:
speedTurn - Δεξιός κινητήρας:
speedStraight
Περίπτωση Γ: Δεξιός = true
↪️ Στροφή δεξιά
- Αριστερός κινητήρας:
speedStraight - Δεξιός κινητήρας:
speedTurn
Περίπτωση Δ: Κανένας = true (όλοι false)
🔎 Χάσαμε τη γραμμή
Εδώ υπάρχουν πολλές λύσεις. Για αρχή θα κάνουμε κάτι απλό: βάζουμε το ρομπότ να στρίβει αργά δεξιά μέχρι να ξαναβρεί μαύρο
Μια πολύ καλή “σειρά if” (για να μην μπερδεύεται)
Πρόταση σειράς ελέγχου:
- αν (μεσαίος = true) → ευθεία
- αλλιώς αν (αριστερός = true) → αριστερά
- αλλιώς αν (δεξιός = true) → δεξιά
- αλλιώς → αναζήτηση
Γιατί πρώτα ο μεσαίος;
Γιατί όταν ο μεσαίος είναι πάνω στη γραμμή, σημαίνει ότι είμαστε στο σωστό σημείο.
Δοκιμές στην πίστα ✅
Βάλε μια ευθεία μαύρη ταινία και δες:
- το ρομπότ να πηγαίνει ευθεία με μικρές διορθώσεις
Φτιάξε μια καμπύλη και δες αν:
- προλαβαίνει να στρίψει χωρίς να χάσει τη γραμμή
Συνήθη προβλήματα (και λύσεις)
1) Το ρομπότ “τρέμει” και κάνει συνεχώς μικρές στροφές
✅ Μείωσε λίγο το speedStraight ή αύξησε λίγο το speedTurn (να στρίβει πιο ομαλά).
2) Το ρομπότ χάνει τη γραμμή στις στροφές
✅ Μείωσε το speedStraight.
Σε καμπύλες θέλουμε λίγο πιο αργά.
3) Το ρομπότ είναι μόνιμα προς μια πλευρά
✅ Μπορεί οι κινητήρες να μην έχουν ακριβώς ίδια δύναμη.
Δοκίμασε μικρή διόρθωση:
- ευθεία = αριστερός 155, δεξιός 160 (ή το αντίστροφο)
Τι καταφέραμε
✔ Καταλάβαμε τι σημαίνει “βλέπω μαύρο” με true/false
✔ Γράψαμε πρόγραμμα αποφάσεων με if/else
✔ Ρυθμίσαμε κινητήρες για ευθεία και στροφές
✔ Φτιάξαμε έναν απλό αλλά πολύ χρήσιμο line follower






