บทแนะนำตรรกะ Arduino: ถ้า, ในขณะที่และสลับคำสั่งเคส

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

การเขียนโปรแกรม Arduino ใช้ โครงสร้างควบคุม เช่น ถ้าในขณะที่และเปลี่ยนเคส เพื่อควบคุมการตัดสินใจและลูปในร่าง โครงสร้างเหล่านี้อนุญาต Arduino เพื่อตอบสนองต่อเงื่อนไขให้ทำซ้ำงานและดำเนินการบล็อกที่แตกต่างกันของรหัสตามอินพุต


1. ถ้าคำสั่ง (การดำเนินการตามเงื่อนไข)

ที่ ถ้าแถลงการณ์ ใช้เพื่อเรียกใช้บล็อกของรหัส เฉพาะในกรณีที่มีเงื่อนไขที่ระบุ.

ไวยากรณ์

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

ตัวอย่าง: การเปิด LED ตามการกดปุ่ม

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

คำสั่ง if-else

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

if-else ถ้าคำสั่ง

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. สำหรับลูป (งานซ้ำจำนวนครั้งที่คงที่)

อัน สำหรับลูป รันบล็อกของรหัส จำนวนครั้งที่แน่นอน- มันใช้กันทั่วไปสำหรับ ทำซ้ำอาร์เรย์หรือควบคุมงานซ้ำ ๆ.

ไวยากรณ์

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

ตัวอย่าง: กระพริบ LED 5 ครั้ง

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
}

ตัวอย่าง: รันผ่านอาร์เรย์

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. ในขณะที่วนซ้ำ (ซ้ำจนกว่าจะมีเงื่อนไข)

อัน ในขณะที่ลูป รันบล็อกของรหัส ตราบใดที่เงื่อนไขที่ระบุยังคงเป็นจริง.

ไวยากรณ์

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

ตัวอย่าง: รอปุ่มกด

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

ตัวอย่าง: ตัวจับเวลานับถอยหลัง

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. เคสสวิตช์ (จัดการหลายเงื่อนไขได้อย่างมีประสิทธิภาพ)

อัน คำสั่งเปลี่ยนกรณี ใช้เมื่อ ต้องมีการตรวจสอบหลายเงื่อนไขทำให้เป็นทางเลือกในการ if-else if-else โซ่

ไวยากรณ์

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
}

ตัวอย่าง: การควบคุม LED ด้วยสวิตช์โรตารี่

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

ตัวอย่าง: การใช้ปุ่มเพื่อวนรอบโหมด

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

บทสรุป

  • ถ้างบ อนุญาตให้ดำเนินการตามเงื่อนไขตามการอ่านเซ็นเซอร์หรือกดปุ่ม
  • สำหรับลูป มีประโยชน์สำหรับงานซ้ำ ๆ ที่มีจำนวนที่รู้จักเช่นกระพริบ LED
  • ในขณะที่ลูป เรียกใช้งานรหัสอย่างต่อเนื่องจนกว่าจะมีเงื่อนไขเฉพาะ
  • สลับคำสั่งเคส ทำให้การตัดสินใจง่ายขึ้นเมื่อจัดการหลายเงื่อนไขได้อย่างมีประสิทธิภาพ

โครงสร้างเหล่านี้ เพิ่มการเขียนโปรแกรม Arduino โดยทำให้ง่ายต่อการจัดการลูปเงื่อนไขและการควบคุมอุปกรณ์ 🚀


แสดงความคิดเห็น

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.