การใช้ if – else if – else แสดงโค้ดตัวอย่างภาษา C และ Flowchart การตัดสินใจ พร้อมข้อความภาษาไทย เหมาะสำหรับสอนโปรแกรมมิ่ง ESP32 และ Arduino

การใช้ if – else if – else ในภาษา C/Arduino IDE (สำหรับมือใหม่)

บทนำ

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

  • ถ้าอุณหภูมิสูงเกิน 30°C ให้พัดลมเปิดอัตโนมัติ
  • ถ้าเซนเซอร์วัดแสงตรวจพบว่ามืด ให้เปิดไฟ
  • ถ้าคะแนนสอบมากกว่า 80 ให้แสดงว่า “ผ่าน” ถ้าน้อยกว่านั้นให้แสดงว่า “ไม่ผ่าน”

ตรงนี้เองที่เราจะใช้คำสั่ง if – else if – else ซึ่งเรียกว่า โครงสร้างควบคุมการทำงานแบบมีเงื่อนไข (Control Structure / Conditional Statement)

ทำไมถึงสำคัญ?

  • เพราะมันช่วยให้โปรแกรม ยืดหยุ่น และ ฉลาดขึ้น ไม่ได้ทำงานแบบตายตัว
  • ช่วยให้โค้ดสามารถโต้ตอบกับ ค่า Input ที่เปลี่ยนไป เช่น ค่าจากปุ่มกด, เซนเซอร์, หรือข้อมูลที่ผู้ใช้ป้อน
  • เป็นพื้นฐานของการเขียนโปรแกรมที่ซับซ้อนขึ้น เช่น ระบบอัตโนมัติ, IoT, หรือการตัดสินใจหลายขั้นตอน

ใช้ที่ไหนบ้าง?

  • ในการเขียนโค้ดด้วย ภาษา C/C++ บน Arduino IDE
  • ในการทำโปรเจกต์ ESP32 หรือไมโครคอนโทรลเลอร์อื่น ๆ ที่ต้องใช้เซนเซอร์
  • ในโค้ด C++ ทั่วไป เช่น เกม, โปรแกรมคำนวณ, และระบบควบคุมต่าง ๆ

พูดง่าย ๆ คือ ถ้าคุณจะก้าวเข้าสู่โลกการเขียนโปรแกรมหรือการทำโปรเจกต์ IoT คำสั่ง if – else if – else จะเป็นเหมือน “บันไดขั้นแรก” ที่คุณต้องเข้าใจให้ถ่องแท้

ยังไม่รู้ว่าจะดาวน์โหลด Arduino IDE ที่ไหน? คลิกเลยที่ Arduino IDE Download & Install เพื่อเริ่มต้นใช้งานได้ทันที!
อธิบายโครงสร้างพื้นฐานของ if ในการเขียนโปรแกรม แสดงโค้ด if ตรวจสอบเงื่อนไขเดียว และไดอะแกรม Flowchart การทำงานพื้นฐาน ใช้สอนมือใหม่ Arduino และ ESP32

โครงสร้างพื้นฐานของ if

คำสั่ง if เป็นรูปแบบเงื่อนไขที่ง่ายที่สุด ใช้เพื่อตรวจสอบเงื่อนไขเพียง หนึ่งเงื่อนไข เท่านั้น
ถ้าเงื่อนไขที่กำหนดเป็น จริง (true) โปรแกรมจะรันโค้ดภายใน { }
แต่ถ้าเงื่อนไขเป็น เท็จ (false) โปรแกรมจะ ข้าม คำสั่งในบล็อกนั้นไปทันที

รูปแบบ (Syntax)

if (เงื่อนไข) {
   // คำสั่งที่จะทำงานเมื่อเงื่อนไขเป็นจริง
}
  • (เงื่อนไข) = นิพจน์ที่ให้ค่าเป็นจริง (true) หรือเท็จ (false)
  • { } = กลุ่มคำสั่งที่จะทำงานเมื่อเงื่อนไขเป็นจริง

ตัวอย่าง 1: ตรวจสอบตัวเลข

int x = 10;

if (x > 5) {
  Serial.println("x มีค่ามากกว่า 5");
}

คำอธิบาย:

  • โปรแกรมตรวจสอบว่า x > 5 หรือไม่
  • เนื่องจาก 10 > 5 เป็นจริง → จึงแสดงผล x มีค่ามากกว่า 5

ตัวอย่าง 2: ควบคุม LED บนบอร์ด ESP32

int ledPin = 2;   // ขา LED บนบอร์ด ESP32
int buttonPin = 4; // ขาปุ่มกด

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

void loop() {
  int buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH); // ถ้ากดปุ่ม → เปิดไฟ LED
  }
}

คำอธิบาย:

  • ใช้ if ตรวจสอบว่า buttonState เป็น HIGH (ปุ่มถูกกด) หรือไม่
  • ถ้าจริง → เปิด LED
  • ถ้าไม่จริง → โปรแกรมจะข้าม ไม่ทำอะไร

การใช้ if – else

คำสั่ง if – else เป็นการต่อยอดจาก if ธรรมดา โดยใช้เมื่อต้องการให้โค้ด เลือกทำงานสองทาง

  • ถ้าเงื่อนไขเป็น จริง (true) → ให้ทำงานชุดหนึ่ง
  • ถ้าเงื่อนไขเป็น เท็จ (false) → ให้ทำงานอีกชุดหนึ่งแทน

รูปแบบ (Syntax)

if (เงื่อนไข) {
   // โค้ดที่ทำงานเมื่อเงื่อนไขเป็นจริง
} else {
   // โค้ดที่ทำงานเมื่อเงื่อนไขเป็นเท็จ
}

ตัวอย่าง 1: ตรวจสอบตัวเลข

int x = 8;

if (x >= 10) {
  Serial.println("x มีค่ามากกว่าหรือเท่ากับ 10");
} else {
  Serial.println("x มีค่าน้อยกว่า 10");
}

ผลลัพธ์: แสดง “x มีค่าน้อยกว่า 10”

ตัวอย่าง 2: ควบคุม LED ด้วยปุ่มกด

int ledPin = 2;
int buttonPin = 4;

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

void loop() {
  int buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);   // ถ้ากดปุ่ม → เปิดไฟ
  } else {
    digitalWrite(ledPin, LOW);    // ถ้าไม่กดปุ่ม → ปิดไฟ
  }
}

คำอธิบาย:

  • ถ้ากดปุ่มจริง → LED ติด
  • ถ้าไม่จริง (ไม่ได้กด) → LED ดับ

รายละเอียดพื้นฐานของ บอร์ดESP32 คืออะไร พร้อมจุดเด่นและวิธีเริ่มต้นใช้งาน

การใช้ if – else if – else

เมื่อโปรแกรมต้องตรวจสอบเงื่อนไขมากกว่า 2 ทางเลือก เราจะใช้ if – else if – else เพื่อจัดการเงื่อนไขแบบหลายระดับ

  • if → ใช้ตรวจสอบเงื่อนไขแรก
  • else if → ใช้ตรวจสอบเงื่อนไขต่อ ๆ ไป (จะเช็คตามลำดับจากบนลงล่าง)
  • else → ใช้เมื่อ ไม่มีเงื่อนไขใดตรงเลย

รูปแบบ (Syntax)

if (เงื่อนไขที่ 1) {
   // ทำงานเมื่อเงื่อนไขที่ 1 เป็นจริง
} else if (เงื่อนไขที่ 2) {
   // ทำงานเมื่อเงื่อนไขที่ 2 เป็นจริง
} else if (เงื่อนไขที่ 3) {
   // ทำงานเมื่อเงื่อนไขที่ 3 เป็นจริง
} else {
   // ทำงานเมื่อไม่มีเงื่อนไขใดเป็นจริงเลย
}

ตัวอย่าง 1: การให้เกรดนักเรียน

int score = 75;

if (score >= 80) {
  Serial.println("เกรด A");
} else if (score >= 70) {
  Serial.println("เกรด B");
} else if (score >= 60) {
  Serial.println("เกรด C");
} else {
  Serial.println("เกรด D หรือ E");
}

คำอธิบาย:

  • ถ้าคะแนน ≥ 80 → เกรด A
  • ถ้าไม่ใช่ แต่ ≥ 70 → เกรด B
  • ถ้าไม่ใช่ แต่ ≥ 60 → เกรด C
  • ถ้าไม่ตรงทุกเงื่อนไข → ได้เกรด D/E

ตัวอย่าง 2: ตรวจสอบระดับความสว่าง (ESP32 + LDR Sensor)

int ldrPin = 34;
int lightValue;

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

void loop() {
  lightValue = analogRead(ldrPin);

  if (lightValue > 3000) {
    Serial.println("สว่างมาก");
  } else if (lightValue > 2000) {
    Serial.println("สว่างปานกลาง");
  } else if (lightValue > 1000) {
    Serial.println("ค่อนข้างมืด");
  } else {
    Serial.println("มืดสนิท");
  }

  delay(1000);
}

คำอธิบาย:

  • โปรแกรมแบ่งค่าแสงออกเป็น 4 ระดับ
  • ตรวจสอบจากบนลงล่าง เจอเงื่อนไขที่ตรงแล้วจะหยุดทันที

ข้อควรระวัง

  1. ลำดับเงื่อนไขมีความสำคัญ → โปรแกรมจะตรวจสอบจากบนลงล่าง เจออันไหนจริงก่อนจะหยุดเลย
    • เช่น ถ้าเขียน if (score >= 60) ไว้บนสุด → จะไม่เข้าถึงเงื่อนไข 70, 80
  2. ใช้ else ปิดท้ายเสมอในกรณีที่ต้องการ “ค่าทางออก” สำหรับทุกสถานการณ์
  3. ถ้าเงื่อนไขเยอะเกินไป อาจทำให้โค้ดอ่านยาก → ควรพิจารณาใช้ switch – case หรือการจัดการด้วยฟังก์ชันแทน
ตัวอย่างโค้ด Arduino IDE ที่เข้าใจง่าย รวบรวมไว้ใน Arduino IDE – Code

สรุปการใช้ if – else if – else

  • if – else if – else เป็นโครงสร้างควบคุมที่ใช้ตรวจสอบเงื่อนไข หลายระดับ
  • โปรแกรมจะตรวจสอบเงื่อนไข จากบนลงล่าง
    • ถ้าเจอเงื่อนไขที่เป็นจริง → จะทำงานทันที และ หยุดตรวจสอบ เงื่อนไขที่เหลือ
    • ถ้าไม่มีเงื่อนไขใดเป็นจริงเลย → จะไปทำงานใน else

  • ใช้งานได้กับ ทุกโปรแกรม โดยเฉพาะงานที่ต้อง แบ่งช่วงค่า เช่น:
    • ตรวจสอบคะแนนสอบ (A, B, C, D)
    • ตรวจสอบระดับแสง (สว่างมาก / ปานกลาง / มืด)
    • ตรวจสอบอุณหภูมิ (ร้อนจัด / ร้อน / ปกติ / เย็น)

  • เป็นพื้นฐานที่สำคัญในงาน ESP32, Arduino และ IoT เช่น
    • เปิด/ปิดพัดลมอัตโนมัติเมื่ออุณหภูมิสูงเกิน
    • ควบคุมไฟส่องสว่างเมื่อเซนเซอร์ LDR ตรวจจับว่ามืด
    • สั่งปั๊มน้ำทำงานตามระดับความชื้นในดิน

FAQ: if – else if – else (สำหรับมือใหม่ + ESP32/Arduino)

if กับ else ต่างกันอย่างไร?

if ใช้ตรวจสอบเงื่อนไขเมื่อเป็นจริงจึงทำงาน ส่วน else ทำงานเมื่อทุกเงื่อนไขก่อนหน้าเป็นเท็จทั้งหมด

ควรใช้ if – else หรือ if เดี่ยว ๆ เมื่อไหร่?

ถ้ามีสองทางเลือกชัดเจน (จริง/เท็จ) ใช้ if – else จะอ่านง่ายกว่า; ถ้ามีเพียงทางเลือกเดียวเมื่อเป็นจริง ใช้ if เดี่ยว ๆ พอ

เมื่อไหร่ควรใช้ if – else if – else แทน switch – case?

ถ้าตรวจช่วงค่าหรือเงื่อนไขซับซ้อน (เช่น >=, <=, &&, ||) ใช้ if – else if – else; ถ้าตรวจค่าเท่ากับคงที่ (เช่น 0,1,2 หรืออักขระ) ใช้ switch – case จะอ่านง่าย

ลำดับของ else if สำคัญไหม?

สำคัญมาก โปรแกรมเช็คจากบนลงล่าง เจอจริงก่อนจะหยุดทันที จึงควรเรียงจากกรณี “แคบ/เข้มงวดมากกว่า” ไป “กว้างกว่า”

ต้องใส่วงเล็บ { } เสมอไหม?

แนะนำให้ใส่ทุกครั้ง แม้มีคำสั่งเดียว เพื่อป้องกันความสับสนและบั๊กจากการเยื้องบรรทัด

เปรียบเทียบค่าใช้ == หรือ = ?

== คือ “เปรียบเทียบความเท่ากัน”, = คือ “กำหนดค่า” (ถ้าใช้ผิดโปรแกรมจะผิดพฤติกรรมทันที)

ผสมเงื่อนไขหลายอย่างยังไง (&&, ||)?

ใช้ && (AND) เมื่อต้องให้ทุกเงื่อนไขเป็นจริงพร้อมกัน และ || (OR) เมื่อให้เงื่อนไขใดเงื่อนไขหนึ่งเป็นจริงก็พอ ใส่วงเล็บช่วยจัดลำดับให้อ่านง่าย

อ่านค่าปุ่ม/เซนเซอร์แล้วเด้งผิดพลาด ต้องเขียน if ยังไง?

ใช้การกันเด้ง (debounce) หรืออ่านซ้ำ/เฉลี่ยค่า แล้วค่อยตัดสินใจใน if เพื่อลดการสั่นของสัญญาณ

โค้ดหลายชั้นอ่านยาก ควรทำอย่างไร?

แยกเงื่อนไขเป็นตัวแปรกลางเชิงความหมาย (เช่น bool isHot = temp>30;) หรือย้ายตรรกะไปเป็นฟังก์ชันย่อย ทำให้ if สั้นและชัด

ตัวอย่างงานจริงบน ESP32 ที่เหมาะกับ if – else if – else มีอะไรบ้าง?

แบ่งระดับพัดลมตามอุณหภูมิ, เปิดไฟตามระดับแสง, ควบคุมปั๊มน้ำตามความชื้นดิน, แจ้งเตือนตามแรงดัน/กระแส ฯลฯ ที่ต้อง “แบ่งช่วงค่า”

Shopping Cart
Scroll to Top