Arduino Logic 101 – Μάθημα 3.2: Switch Case | Διαχείριση Πολλαπλών Σεναρίων
Στο προηγούμενο μάθημα είδαμε το if/else, το οποίο είναι ιδανικό για διλήμματα (Ναι/Όχι). Αλλά τι γίνεται όταν το ρομπότ μας έχει να επιλέξει ανάμεσα σε πολλά σενάρια; Για παράδειγμα, ένα τηλεκατευθυνόμενο ρομπότ που δέχεται εντολές: "Μπροστά", "Πίσω", "Αριστερά", "Δεξιά", "Στοπ".
Αν χρησιμοποιούσαμε μόνο if, ο κώδικας θα γινόταν ένας ατελείωτος και κουραστικός "λαβύρινθος". Εδώ έρχεται το Switch Case: Ο απόλυτος τροχονόμος του κώδικα!
1. Τι είναι το Switch Case;
Φανταστείτε έναν διακόπτη που μπορεί να γυρίσει σε πολλές διαφορετικές θέσεις. Αντί να ρωτάμε συνεχώς "Είναι στη θέση 1;", "Είναι στη θέση 2;", "Είναι στη θέση 3;", απλώς λέμε στο Arduino: "Κοίταξε την τιμή αυτής της μεταβλητής και πήγαινε απευθείας στην περίπτωση (Case) που αντιστοιχεί."
2. Η Δομή του Κώδικα (Syntax)
Η σύνταξη μοιάζει με ένα μενού επιλογών σε εστιατόριο:
switch (variable) {
case 1:
// Κώδικας για την περίπτωση 1
break;
case 2:
// Κώδικας για την περίπτωση 2
break;
default:
// Αν η μεταβλητή δεν ταιριάζει με καμία περίπτωση
break;
}
Το "Μυστικό" Break: Η λέξη
breakείναι απαραίτητη! Αν την ξεχάσετε, το Arduino θα συνεχίσει να εκτελεί και τις επόμενες περιπτώσεις σαν ντόμινο (fall-through), κάτι που συνήθως οδηγεί σε λάθη.
Παράδειγμα: Το "Menu" Εντολών του Ρομπότ
Ας υποθέσουμε ότι το ρομπότ μας λαμβάνει έναν αριθμό (command) από ένα Bluetooth module:
/*
* Unique Tech - Arduino Logic 101
* Lesson 3.2: Switch Case Example
*/
int command = 2; // Έστω ότι λάβαμε την εντολή '2'
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Λήψη εντολής: ");
switch (command) {
case 1:
Serial.println("Ενέργεια: Κίνηση Μπροστά!");
break;
case 2:
Serial.println("Ενέργεια: Στροφή Αριστερά!");
break;
case 3:
Serial.println("Ενέργεια: Ενεργοποίηση Συναγερμού!");
break;
default:
Serial.println("Ενέργεια: Αναμονή / Άγνωστη εντολή.");
break;
}
delay(5000); // Αναμονή για επίδειξη
}
Unique Tech Pro-Tip: Finite State Machines (FSM)
Στο βραβευμένο project μας MLA, χρησιμοποιούμε το Switch Case για να ορίζουμε την "Κατάσταση" (State) του ρομπότ. Αντί για χιλιάδες if, έχουμε έναν κεντρικό έλεγχο:
Case IDLE: Το ρομπότ περιμένει.
Case SCANNING: Το ρομπότ διαβάζει τους αισθητήρες CO2.
Case ALERT: Το ρομπότ ειδοποιεί τους μαθητές.
Αυτό κάνει τον κώδικα μας καθαρό, επαγγελματικό και εύκολο στο Debugging. Όπως λέμε στο εργαστήριο: "Ο καλός μηχανικός γράφει κώδικα που μπορεί να διαβάσει ο οποιοσδήποτε μετά από έναν χρόνο."
Η Πρόκληση (Challenge)
Σχεδιάστε τη λογική για έναν Έξυπνο Επιλογέα Φωτισμού.
Αν η μεταβλητή mode (τύπου char) είναι:
'S'(Study) Άναψε λευκό δυνατό φως.'R'(Relax) Άναψε θερμό χαμηλό φως.'P'(Party) Κάνε τα φώτα να αναβοσβήνουν!Default Σβήσε όλα τα φώτα.
Γράψτε τον κώδικα και μοιραστείτε τον μαζί μας!
Σχόλια
Δημοσίευση σχολίου