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 Σβήσε όλα τα φώτα.

Γράψτε τον κώδικα και μοιραστείτε τον μαζί μας!

Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Πώς να "διαβάζεις" τον αέρα: Σύνδεση αισθητήρων μέσω I2C με Arduino

Γιατί νυστάζουμε στην τάξη; Η αλήθεια πίσω από το CO2 και η λύση της Unique Tech

Καλωσορίσατε στο Unique Tech Blog!