Get free delivery on all orders over £20!

Tutorialul logic Arduino: dacă, pentru, în timp ce și schimbați declarațiile cazului

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

Programarea Arduino utilizează structuri de control ca Dacă, pentru, în timp ce și comutați cazul să controleze luarea deciziilor și buclele într-o schiță. Aceste structuri permit Arduino Pentru a răspunde la condiții, repetați sarcini și executați diferite blocuri de cod pe baza intrării.


1. Declarație if (execuție condiționată)

Dacă afirmație este utilizat pentru a executa un bloc de cod numai dacă este îndeplinită o condiție specificată.

Sintaxă

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

Exemplu: rotirea unui LED pe baza unui buton apăsat

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

Declarație if-else

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

IF-ELSE IF IF STRUBE

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. Pentru buclă (repetarea sarcinilor de un număr fix de ori)

O pentru buclă rulează un bloc de cod un număr fix de ori. Este utilizat frecvent pentru Iterarea peste tablouri sau controlul sarcinilor repetitive.

Sintaxă

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

Exemplu: clipind un LED de 5 ori

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
}

Exemplu: Alergarea printr -un tablou

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. În timp ce bucla (repetând până la îndeplinirea unei condiții)

O în timp ce buclă rulează un bloc de cod Atâta timp cât o condiție specificată rămâne adevărată.

Sintaxă

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

Exemplu: Așteptarea unui buton Apăsați

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

Exemplu: Timer Countdown

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. CAZUL SWITCH (MANIGURAREA EFICIȚIELOR MULTIMENILOR)

O Declarația cazului de comutare este utilizat când Mai multe condiții trebuie verificate, făcând -o o alternativă la if-else if-else lanţuri.

Sintaxă

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
}

Exemplu: Controlul unui LED cu un comutator rotativ

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

Exemplu: Utilizarea unui buton pentru a parcurge moduri prin moduri

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

Concluzie

  • Dacă declarații Permiteți executarea condiționată pe baza citirilor de senzori sau a apăsărilor butonului.
  • pentru bucle sunt utile pentru sarcini repetitive cu un număr cunoscut, cum ar fi clipirea unui LED.
  • în timp ce bucle Executați codul continuu până la îndeplinirea unei condiții specifice.
  • Declarații de caz de comutare Simplificați luarea deciziilor atunci când gestionați mai multe condiții în mod eficient.

Aceste structuri Îmbunătățiți programarea Arduino prin a face mai ușor gestionarea buclelor, condițiilor și controlului dispozitivului. 🚀


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.

1 comentariu

If Arduino programming leverages fundamental control structures—**`if`, *`for`, *`while`, and *`switch`/`case`—not as abstract syntax, but as real-time mechanisms to interpret sensor data, drive actuators, and respond dynamically to the physical world, then how might this reflect the essence of embedded computing? Unlike desktop programs that process static data, an Arduino sketch lives in constant dialogue with its environment: a `while` loop may wait for a button press, an `if` statement might trigger an LED at a temperature threshold, and a `for` loop could choreograph a servo sweep. These structures become the *nervous system** of a physical device—translating logic into action, turning code into behavior, and revealing that even the simplest control flow can animate matter when coupled with hardware. In this context, programming isn’t just about algorithms; it’s about embodied decision-making, where every conditional and loop shapes how a machine perceives and acts upon reality.
dte

Teknologi,

Lasă un comentariu