Ακολουθούμε μαύρη γραμμή με 3 αισθητήρες στο ρομπότ R2 🖤➡️🤖

Ακολουθούμε μαύρη γραμμή με 3 αισθητήρες στο ρομπότ R2 🖤➡️🤖

Τι θα κάνουμε σήμερα;

Σήμερα θα προγραμματίσουμε το ρομπότ R2 ώστε να ακολουθεί μια μαύρη γραμμή πάνω σε άσπρο (ή ανοιχτόχρωμο) πάτωμα. Το R2 έχει μπροστά, από κάτω, έναν αισθητήρα γραμμής με 3 μικρούς αισθητήρες στη σειρά:

  • Αριστερός
  • Μεσαίος
  • Δεξιός
Ο αισθητήρας γραμμής όπως φαίνεται από την κάτω πλευρά του R2

Ο μεσαίος είναι ακριβώς στη μέση του ρομπότ, και αυτό μας βοηθάει να φτιάξουμε έναν πολύ απλό και έξυπνο κανόνα:

✅ Αν ο μεσαίος πατάει τη μαύρη γραμμή, τότε είμαστε μια χαρά στο κέντρο → πάμε ευθεία
↩️ Αν πατάει μόνο ο αριστερός, τότε σημαίνει ότι το ρομπότ έχει φύγει προς τα δεξιά → στρίβουμε αριστερά
↪️ Αν πατάει μόνο ο δεξιός, τότε σημαίνει ότι το ρομπότ έχει φύγει προς τα αριστερά → στρίβουμε δεξιά


Τι θα μάθουμε;

Μετά το εργαστήριο θα μπορείς να εξηγήσεις:

  1. Πώς “βλέπουν” τη γραμμή οι αισθητήρες (true/false)
  2. Τι σημαίνει ότι ένα ρομπότ πάει ευθεία με δύο κινητήρες
  3. Τι σημαίνει ότι ένα ρομπότ στρίβει δεξιά ή αριστερά
  4. Πώς γράφουμε ένα πρόγραμμα τύπου “αν… αλλιώς…” που παίρνει αποφάσεις

Υλικά

  • Ρομπότ 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. Αν ο μεσαίος αισθητήρας πατάει μαύρο → ευθεία
  2. Αλλιώς αν ο αριστερός πατάει μαύρο → στρίψε αριστερά
  3. Αλλιώς αν ο δεξιός πατάει μαύρο → στρίψε δεξιά
  4. Αλλιώς (κανένας δεν βλέπει μαύρο) → κάνε μια μικρή “αναζήτηση” (π.χ. αργή στροφή) για να ξαναβρείς τη γραμμή

📌 Αυτό είναι σαν παιχνίδι:

  • “Αν είμαι πάνω στη γραμμή, συνεχίζω!”
  • “Αν έχασα τη γραμμή, ψάχνω να τη βρω.”

Βήμα 1: Φτιάχνουμε δύο μεταβλητές ταχύτητας

Για να κάνουμε εύκολες αλλαγές, φτιάχνουμε:

  • speedStraight (π.χ. 150)
  • speedTurn (π.χ. 20)

Βήμα 2: Γράφουμε το πρόγραμμα “για πάντα”

Το πρόγραμμα ακολουθεί την ίδια λογική συνεχώς:

Περίπτωση Α: Μεσαίος = true (βλέπει μαύρο)

➡️ Ευθεία

  • Αριστερός κινητήρας: speedStraight
  • Δεξιός κινητήρας: speedStraight

Περίπτωση Β: Αριστερός = true

↩️ Στροφή αριστερά

  • Αριστερός κινητήρας: speedTurn
  • Δεξιός κινητήρας: speedStraight

Περίπτωση Γ: Δεξιός = true

↪️ Στροφή δεξιά

  • Αριστερός κινητήρας: speedStraight
  • Δεξιός κινητήρας: speedTurn

Περίπτωση Δ: Κανένας = true (όλοι false)

🔎 Χάσαμε τη γραμμή
Εδώ υπάρχουν πολλές λύσεις. Για αρχή θα κάνουμε κάτι απλό: βάζουμε το ρομπότ να στρίβει αργά δεξιά μέχρι να ξαναβρεί μαύρο


Μια πολύ καλή “σειρά if” (για να μην μπερδεύεται)

Πρόταση σειράς ελέγχου:

  1. αν (μεσαίος = true) → ευθεία
  2. αλλιώς αν (αριστερός = true) → αριστερά
  3. αλλιώς αν (δεξιός = true) → δεξιά
  4. αλλιώς → αναζήτηση

Γιατί πρώτα ο μεσαίος;
Γιατί όταν ο μεσαίος είναι πάνω στη γραμμή, σημαίνει ότι είμαστε στο σωστό σημείο.


Δοκιμές στην πίστα ✅

Βάλε μια ευθεία μαύρη ταινία και δες:

  • το ρομπότ να πηγαίνει ευθεία με μικρές διορθώσεις

Φτιάξε μια καμπύλη και δες αν:

  • προλαβαίνει να στρίψει χωρίς να χάσει τη γραμμή

Συνήθη προβλήματα (και λύσεις)

1) Το ρομπότ “τρέμει” και κάνει συνεχώς μικρές στροφές

✅ Μείωσε λίγο το speedStraight ή αύξησε λίγο το speedTurn (να στρίβει πιο ομαλά).

2) Το ρομπότ χάνει τη γραμμή στις στροφές

✅ Μείωσε το speedStraight.
Σε καμπύλες θέλουμε λίγο πιο αργά.

3) Το ρομπότ είναι μόνιμα προς μια πλευρά

✅ Μπορεί οι κινητήρες να μην έχουν ακριβώς ίδια δύναμη.
Δοκίμασε μικρή διόρθωση:

  • ευθεία = αριστερός 155, δεξιός 160 (ή το αντίστροφο)

Τι καταφέραμε

✔ Καταλάβαμε τι σημαίνει “βλέπω μαύρο” με true/false
✔ Γράψαμε πρόγραμμα αποφάσεων με if/else
✔ Ρυθμίσαμε κινητήρες για ευθεία και στροφές
✔ Φτιάξαμε έναν απλό αλλά πολύ χρήσιμο line follower

Σχόλια

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

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