Arduino Logic Tutorial: If, per, while e Switch Case Case

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

Usi di programmazione Arduino strutture di controllo ad esempio Se, per, mentre e cambi un caso Per controllare il processo decisionale e i loop in uno schizzo. Queste strutture consentono il Arduino Per rispondere alle condizioni, ripetere le attività ed eseguire diversi blocchi di codice in base all'input.


1. If Dichiarazione (esecuzione condizionale)

IL If Dichiarazione viene utilizzato per eseguire un blocco di codice Solo se viene soddisfatta una condizione specificata.

Sintassi

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

Esempio: accendere un LED in base a un pulsante Premere

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
    }
}

Dichiarazione If-Else

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

Istruzione if-else if

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. Per loop (compiti ripetuti un numero fisso di volte)

UN per loop esegue un blocco di codice un numero fisso di volte. È comunemente usato per iterare su array o controllare le attività ripetitive.

Sintassi

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

Esempio: lampeggiare un LED 5 volte

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
}

Esempio: correre attraverso un array

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. Durante il ciclo (ripetuta fino a quando non viene soddisfatta una condizione)

UN mentre loop esegue un blocco di codice Finché una condizione specificata rimane vera.

Sintassi

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

Esempio: in attesa di un pulsante Premere

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!");
}

Esempio: Timer del conto alla rovescia

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. Custode di commutazione (gestire in modo efficiente le condizioni multiple)

UN Switch Case Dichiarazione viene usato quando È necessario controllare più condizioni, rendendolo un'alternativa a if-else if-else catene.

Sintassi

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
}

Esempio: controllo di un LED con un interruttore rotante

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;
    }
}

Esempio: utilizzo di un pulsante per scorrere attraverso le modalità

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;
    }
}

Conclusione

  • Se dichiarazioni Consenti l'esecuzione condizionale in base alle letture del sensore o alle pressioni del pulsante.
  • per i loop sono utili per compiti ripetitivi con un conteggio noto, come lampeggiare un LED.
  • mentre i loop Eseguire il codice continuamente fino a quando non viene soddisfatta una condizione specifica.
  • Cambia dichiarazioni dei casi Semplifica il processo decisionale quando si gestiscono più condizioni in modo efficiente.

Queste strutture Migliora la programmazione di Arduino Rendendo più semplice la gestione di loop, condizioni e controllo del dispositivo. 🚀


Lascia un commento

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.