Tutorial de lógica de Arduino: si, para, mientras, y las declaraciones de casos de conmutación

Arduino Logic Tutorial: If, For, While, and Switch Case Statements

La programación de Arduino usa estructuras de control como Si, para, mientras y cambia el caso para controlar la toma de decisiones y los bucles en un boceto. Estas estructuras permiten el Arduino Para responder a las condiciones, repetir las tareas y ejecutar diferentes bloques de código en función de la entrada.


1. If Declaración (Ejecución condicional)

El Declaración if se usa para ejecutar un bloque de código Solo si se cumple una condición específica.

Sintaxis

if (condition) {
   // Code to execute if condition is true
}

Ejemplo: encender un LED basado en un botón presione

const int buttonPin = 2;  // Button connected to pin 2
const int ledPin = 13;    // LED connected to pin 13

void setup() {
    pinMode(buttonPin, INPUT);
    pinMode(ledPin, OUTPUT);
}

void loop() {
    int buttonState = digitalRead(buttonPin);  // Read button state

    if (buttonState == HIGH) {
        digitalWrite(ledPin, HIGH); // Turn LED on if button is pressed
    } else {
        digitalWrite(ledPin, LOW);  // Turn LED off otherwise
    }
}

Declaración if-else

if (temperature > 30) {
    Serial.println("It's too hot!");
} else {
    Serial.println("Temperature is normal.");
}

If-else si la declaración

if (temperature > 30) {
    Serial.println("It's too hot!");
} else if (temperature < 10) {
    Serial.println("It's too cold!");
} else {
    Serial.println("Temperature is comfortable.");
}

2. Para el bucle (las tareas de repetición un número fijo de veces)

A para bucle ejecuta un bloque de código un número fijo de veces. Se usa comúnmente para iterando sobre matrices o controlando tareas repetitivas.

Sintaxis

for (initialization; condition; increment) {
   // Code to execute in each iteration
}

Ejemplo: parpadear un LED 5 veces

const int ledPin = 13;

void setup() {
    pinMode(ledPin, OUTPUT);
}

void loop() {
    for (int i = 0; i < 5; i++) { // Loop runs 5 times
        digitalWrite(ledPin, HIGH);  // Turn LED on
        delay(500);  // Wait 500 ms
        digitalWrite(ledPin, LOW);   // Turn LED off
        delay(500);
    }
    delay(2000); // Pause before repeating
}

Ejemplo: correr a través de una matriz

int numbers[] = {1, 2, 3, 4, 5};

void setup() {
    Serial.begin(9600);
}

void loop() {
    for (int i = 0; i < 5; i++) {
        Serial.println(numbers[i]);  // Print each number in the array
    }
    delay(2000);
}

3. Mientras que el bucle (repite hasta que se cumpla una condición)

A Mientras que el bucle ejecuta un bloque de código Mientras una condición específica permanezca verdadera.

Sintaxis

while (condition) {
   // Code to execute while the condition is true
}

Ejemplo: esperando un botón presione

const int buttonPin = 2;

void setup() {
    pinMode(buttonPin, INPUT);
    Serial.begin(9600);
}

void loop() {
    Serial.println("Waiting for button press...");
    
    while (digitalRead(buttonPin) == LOW) {
        // Stay in loop until button is pressed
    }
    
    Serial.println("Button pressed!");
}

Ejemplo: temporizador de cuenta regresiva

int count = 10;

void setup() {
    Serial.begin(9600);
}

void loop() {
    while (count > 0) {
        Serial.print("Countdown: ");
        Serial.println(count);
        count--;
        delay(1000);
    }
    Serial.println("Liftoff!");
    delay(5000); // Restart countdown after delay
    count = 10;  // Reset count
}

4. Caso de interruptor (manejo de múltiples condiciones de manera eficiente)

A Declaración de casos de cambio se usa cuando Se deben verificar múltiples condiciones, haciéndolo una alternativa a if-else if-else cadenas.

Sintaxis

switch (variable) {
    case value1:
        // Code to execute if variable == value1
        break;
    case value2:
        // Code to execute if variable == value2
        break;
    default:
        // Code to execute if none of the cases match
}

Ejemplo: controlar un LED con un interruptor giratorio

const int ledPin = 13;
int mode = 1;  // Example mode variable

void setup() {
    pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
}

void loop() {
    switch (mode) {
        case 1:
            Serial.println("Mode 1: LED ON");
            digitalWrite(ledPin, HIGH);
            break;
        case 2:
            Serial.println("Mode 2: LED BLINKING");
            digitalWrite(ledPin, HIGH);
            delay(500);
            digitalWrite(ledPin, LOW);
            delay(500);
            break;
        case 3:
            Serial.println("Mode 3: LED OFF");
            digitalWrite(ledPin, LOW);
            break;
        default:
            Serial.println("Invalid Mode");
            break;
    }
}

Ejemplo: Uso de un botón para recorrer los modos

const int buttonPin = 2;
int mode = 1;

void setup() {
    pinMode(buttonPin, INPUT);
    Serial.begin(9600);
}

void loop() {
    if (digitalRead(buttonPin) == HIGH) {
        mode++;
        if (mode > 3) mode = 1;  // Reset mode to 1 if it exceeds 3
        delay(500);  // Debounce delay
    }

    switch (mode) {
        case 1:
            Serial.println("Mode 1: Low Power Mode");
            break;
        case 2:
            Serial.println("Mode 2: Normal Mode");
            break;
        case 3:
            Serial.println("Mode 3: High Performance Mode");
            break;
        default:
            Serial.println("Invalid Mode");
            break;
    }
}

Conclusión

  • If declaraciones Permita la ejecución condicional en función de las lecturas del sensor o las presionas de botones.
  • para bucles son útiles para tareas repetitivas con un recuento conocido, como parpadear un LED.
  • Mientras que bucles Ejecute el código continuamente hasta que se cumpla una condición específica.
  • Declaraciones de casos de cambio Simplifique la toma de decisiones al manejar múltiples condiciones de manera eficiente.

Estas estructuras Mejorar la programación de Arduino Al facilitar la administración de bucles, condiciones y control de dispositivos. 🚀


Escribir un comentario

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.